@fluidframework/tree 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 (2507) hide show
  1. package/.eslintrc.cjs +2 -0
  2. package/CHANGELOG.md +74 -0
  3. package/api-extractor.json +2 -3
  4. package/api-report/tree.api.md +208 -154
  5. package/beta.d.ts +11 -0
  6. package/dist/beta.d.ts +90 -0
  7. package/dist/codec/codec.d.ts +10 -4
  8. package/dist/codec/codec.d.ts.map +1 -1
  9. package/dist/codec/codec.js +2 -2
  10. package/dist/codec/codec.js.map +1 -1
  11. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  12. package/dist/codec/discriminatedUnions.js +6 -2
  13. package/dist/codec/discriminatedUnions.js.map +1 -1
  14. package/dist/codec/index.d.ts +2 -2
  15. package/dist/codec/index.d.ts.map +1 -1
  16. package/dist/codec/index.js +3 -2
  17. package/dist/codec/index.js.map +1 -1
  18. package/dist/codec/noopValidator.d.ts.map +1 -1
  19. package/dist/codec/noopValidator.js.map +1 -1
  20. package/dist/codec/versioned/codec.d.ts +10 -2
  21. package/dist/codec/versioned/codec.d.ts.map +1 -1
  22. package/dist/codec/versioned/codec.js +28 -6
  23. package/dist/codec/versioned/codec.js.map +1 -1
  24. package/dist/codec/versioned/index.d.ts +1 -1
  25. package/dist/codec/versioned/index.d.ts.map +1 -1
  26. package/dist/codec/versioned/index.js +2 -1
  27. package/dist/codec/versioned/index.js.map +1 -1
  28. package/dist/core/change-family/changeFamily.d.ts +2 -2
  29. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  30. package/dist/core/change-family/changeFamily.js.map +1 -1
  31. package/dist/core/forest/editableForest.d.ts +1 -1
  32. package/dist/core/forest/editableForest.d.ts.map +1 -1
  33. package/dist/core/forest/editableForest.js +2 -2
  34. package/dist/core/forest/editableForest.js.map +1 -1
  35. package/dist/core/forest/forest.d.ts +5 -1
  36. package/dist/core/forest/forest.d.ts.map +1 -1
  37. package/dist/core/forest/forest.js +2 -2
  38. package/dist/core/forest/forest.js.map +1 -1
  39. package/dist/core/index.d.ts +3 -3
  40. package/dist/core/index.d.ts.map +1 -1
  41. package/dist/core/index.js +6 -3
  42. package/dist/core/index.js.map +1 -1
  43. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  44. package/dist/core/rebase/changeRebaser.js.map +1 -1
  45. package/dist/core/rebase/index.d.ts +1 -1
  46. package/dist/core/rebase/index.d.ts.map +1 -1
  47. package/dist/core/rebase/index.js +4 -1
  48. package/dist/core/rebase/index.js.map +1 -1
  49. package/dist/core/rebase/revisionTagCodec.d.ts.map +1 -1
  50. package/dist/core/rebase/revisionTagCodec.js +2 -2
  51. package/dist/core/rebase/revisionTagCodec.js.map +1 -1
  52. package/dist/core/rebase/types.d.ts +30 -0
  53. package/dist/core/rebase/types.d.ts.map +1 -1
  54. package/dist/core/rebase/types.js +26 -1
  55. package/dist/core/rebase/types.js.map +1 -1
  56. package/dist/core/rebase/utils.d.ts.map +1 -1
  57. package/dist/core/rebase/utils.js +11 -10
  58. package/dist/core/rebase/utils.js.map +1 -1
  59. package/dist/core/revertible/index.d.ts +1 -1
  60. package/dist/core/revertible/index.d.ts.map +1 -1
  61. package/dist/core/revertible/index.js +1 -3
  62. package/dist/core/revertible/index.js.map +1 -1
  63. package/dist/core/revertible/revertible.d.ts +15 -49
  64. package/dist/core/revertible/revertible.d.ts.map +1 -1
  65. package/dist/core/revertible/revertible.js +3 -33
  66. package/dist/core/revertible/revertible.js.map +1 -1
  67. package/dist/core/schema-stored/format.d.ts.map +1 -1
  68. package/dist/core/schema-stored/format.js.map +1 -1
  69. package/dist/core/schema-stored/index.d.ts +2 -1
  70. package/dist/core/schema-stored/index.d.ts.map +1 -1
  71. package/dist/core/schema-stored/index.js +4 -1
  72. package/dist/core/schema-stored/index.js.map +1 -1
  73. package/dist/core/schema-stored/multiplicity.d.ts.map +1 -0
  74. package/dist/{feature-libraries → core/schema-stored}/multiplicity.js +2 -2
  75. package/{lib/feature-libraries → dist/core/schema-stored}/multiplicity.js.map +1 -1
  76. package/dist/core/schema-stored/schema.d.ts +32 -9
  77. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  78. package/dist/core/schema-stored/schema.js +14 -7
  79. package/dist/core/schema-stored/schema.js.map +1 -1
  80. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  81. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  82. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  83. package/dist/core/tree/anchorSet.d.ts +31 -16
  84. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  85. package/dist/core/tree/anchorSet.js +37 -62
  86. package/dist/core/tree/anchorSet.js.map +1 -1
  87. package/dist/core/tree/cursor.d.ts.map +1 -1
  88. package/dist/core/tree/cursor.js +4 -4
  89. package/dist/core/tree/cursor.js.map +1 -1
  90. package/dist/core/tree/delta.d.ts.map +1 -1
  91. package/dist/core/tree/delta.js.map +1 -1
  92. package/dist/core/tree/deltaUtil.d.ts +1 -1
  93. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  94. package/dist/core/tree/deltaUtil.js.map +1 -1
  95. package/dist/core/tree/detachedFieldIndex.d.ts +2 -2
  96. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  97. package/dist/core/tree/detachedFieldIndex.js +15 -15
  98. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  99. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  100. package/dist/core/tree/detachedFieldIndexCodec.js +4 -4
  101. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  102. package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  103. package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
  104. package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  105. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  106. package/dist/core/tree/mapTree.d.ts.map +1 -1
  107. package/dist/core/tree/mapTree.js.map +1 -1
  108. package/dist/core/tree/pathTree.d.ts.map +1 -1
  109. package/dist/core/tree/pathTree.js.map +1 -1
  110. package/dist/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  111. package/dist/core/tree/persistedTreeTextFormat.js.map +1 -1
  112. package/dist/core/tree/sparseTree.d.ts.map +1 -1
  113. package/dist/core/tree/sparseTree.js +5 -5
  114. package/dist/core/tree/sparseTree.js.map +1 -1
  115. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  116. package/dist/core/tree/treeTextFormat.js.map +1 -1
  117. package/dist/core/tree/types.d.ts +1 -1
  118. package/dist/core/tree/types.d.ts.map +1 -1
  119. package/dist/core/tree/types.js +7 -7
  120. package/dist/core/tree/types.js.map +1 -1
  121. package/dist/core/tree/visitDelta.d.ts +13 -2
  122. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  123. package/dist/core/tree/visitDelta.js +47 -18
  124. package/dist/core/tree/visitDelta.js.map +1 -1
  125. package/dist/core/tree/visitPath.d.ts +1 -1
  126. package/dist/core/tree/visitPath.d.ts.map +1 -1
  127. package/dist/core/tree/visitPath.js +4 -0
  128. package/dist/core/tree/visitPath.js.map +1 -1
  129. package/dist/core/tree/visitorUtils.d.ts +4 -4
  130. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  131. package/dist/core/tree/visitorUtils.js +2 -2
  132. package/dist/core/tree/visitorUtils.js.map +1 -1
  133. package/dist/domains/json/jsonCursor.d.ts.map +1 -1
  134. package/dist/domains/json/jsonCursor.js +7 -7
  135. package/dist/domains/json/jsonCursor.js.map +1 -1
  136. package/dist/domains/json/jsonDomainSchema.d.ts.map +1 -1
  137. package/dist/domains/json/jsonDomainSchema.js.map +1 -1
  138. package/dist/domains/leafDomain.d.ts.map +1 -1
  139. package/dist/domains/leafDomain.js +8 -8
  140. package/dist/domains/leafDomain.js.map +1 -1
  141. package/dist/domains/nodeKey/nodeKeySchema.d.ts.map +1 -1
  142. package/dist/domains/nodeKey/nodeKeySchema.js +2 -2
  143. package/dist/domains/nodeKey/nodeKeySchema.js.map +1 -1
  144. package/dist/domains/schemaBuilder.d.ts +19 -81
  145. package/dist/domains/schemaBuilder.d.ts.map +1 -1
  146. package/dist/domains/schemaBuilder.js +24 -93
  147. package/dist/domains/schemaBuilder.js.map +1 -1
  148. package/dist/domains/testRecursiveDomain.d.ts +0 -4
  149. package/dist/domains/testRecursiveDomain.d.ts.map +1 -1
  150. package/dist/domains/testRecursiveDomain.js +1 -8
  151. package/dist/domains/testRecursiveDomain.js.map +1 -1
  152. package/dist/events/events.d.ts.map +1 -1
  153. package/dist/events/events.js +2 -2
  154. package/dist/events/events.js.map +1 -1
  155. package/dist/external-utilities/typeboxValidator.d.ts.map +1 -1
  156. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  157. package/dist/feature-libraries/changeAtomIdCodec.d.ts +1 -1
  158. package/dist/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
  159. package/dist/feature-libraries/changeAtomIdCodec.js.map +1 -1
  160. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts +3 -3
  161. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  162. package/dist/feature-libraries/chunked-forest/basicChunk.js +29 -29
  163. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  164. package/dist/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  165. package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  166. package/dist/feature-libraries/chunked-forest/chunk.js +2 -2
  167. package/dist/feature-libraries/chunked-forest/chunk.js.map +1 -1
  168. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +2 -2
  169. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  170. package/dist/feature-libraries/chunked-forest/chunkTree.js +13 -14
  171. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  172. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -2
  173. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  174. package/dist/feature-libraries/chunked-forest/chunkedForest.js +25 -24
  175. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  176. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +2 -2
  177. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
  178. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +4 -4
  179. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  180. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  181. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  182. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +13 -13
  183. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  184. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  185. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  186. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +3 -3
  187. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  188. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -1
  189. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  190. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  191. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -9
  192. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  193. package/dist/feature-libraries/chunked-forest/codec/codecs.js +6 -5
  194. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  195. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  196. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  197. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +8 -8
  198. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  199. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +1 -1
  200. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  201. package/dist/feature-libraries/chunked-forest/codec/format.js +1 -2
  202. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  203. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +1 -1
  204. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  205. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  206. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  207. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +2 -2
  208. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  209. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  210. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  211. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts +3 -3
  212. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  213. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +4 -5
  214. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  215. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  216. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  217. package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  218. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  219. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  220. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  221. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  222. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  223. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  224. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  225. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  226. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +3 -3
  227. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  228. package/dist/feature-libraries/chunked-forest/uniformChunk.js +21 -21
  229. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  230. package/dist/feature-libraries/contextuallyTyped.d.ts +5 -9
  231. package/dist/feature-libraries/contextuallyTyped.d.ts.map +1 -1
  232. package/dist/feature-libraries/contextuallyTyped.js +33 -48
  233. package/dist/feature-libraries/contextuallyTyped.js.map +1 -1
  234. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -5
  235. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  236. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +7 -7
  237. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  238. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +18 -4
  239. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  240. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +59 -24
  241. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  242. package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  243. package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  244. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  245. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  246. package/dist/feature-libraries/default-schema/index.js +2 -1
  247. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  248. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts +8 -0
  249. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -0
  250. package/dist/feature-libraries/default-schema/noChangeCodecs.js +10 -0
  251. package/dist/feature-libraries/default-schema/noChangeCodecs.js.map +1 -0
  252. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +1 -1
  253. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  254. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -2
  255. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  256. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  257. package/dist/feature-libraries/editableTreeBinder.js +6 -6
  258. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  259. package/dist/feature-libraries/fieldGenerator.d.ts +1 -1
  260. package/dist/feature-libraries/fieldGenerator.d.ts.map +1 -1
  261. package/dist/feature-libraries/fieldGenerator.js.map +1 -1
  262. package/dist/feature-libraries/flex-tree/context.d.ts +16 -4
  263. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  264. package/dist/feature-libraries/flex-tree/context.js +27 -15
  265. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  266. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +43 -36
  267. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  268. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +9 -6
  269. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  270. package/dist/feature-libraries/flex-tree/index.d.ts +3 -3
  271. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  272. package/dist/feature-libraries/flex-tree/index.js +3 -2
  273. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  274. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +7 -8
  275. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  276. package/dist/feature-libraries/flex-tree/lazyEntity.js +12 -17
  277. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  278. package/dist/feature-libraries/flex-tree/lazyField.d.ts +21 -7
  279. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  280. package/dist/feature-libraries/flex-tree/lazyField.js +69 -46
  281. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  282. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +12 -9
  283. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  284. package/dist/feature-libraries/flex-tree/lazyNode.js +51 -97
  285. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  286. package/dist/feature-libraries/flex-tree/nodeKeys.d.ts.map +1 -1
  287. package/dist/feature-libraries/flex-tree/nodeKeys.js.map +1 -1
  288. package/dist/feature-libraries/flex-tree/treeEvents.d.ts +7 -70
  289. package/dist/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  290. package/dist/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  291. package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  292. package/dist/feature-libraries/flex-tree/unboxed.js +1 -1
  293. package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
  294. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  295. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  296. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  297. package/dist/feature-libraries/forest-summary/codec.js +2 -2
  298. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  299. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  300. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  301. package/dist/feature-libraries/forest-summary/forestSummarizer.js +14 -14
  302. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  303. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  304. package/dist/feature-libraries/forest-summary/format.js +4 -4
  305. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  306. package/dist/feature-libraries/index.d.ts +8 -9
  307. package/dist/feature-libraries/index.d.ts.map +1 -1
  308. package/dist/feature-libraries/index.js +9 -9
  309. package/dist/feature-libraries/index.js.map +1 -1
  310. package/dist/feature-libraries/mapTreeCursor.d.ts +1 -1
  311. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  312. package/dist/feature-libraries/mapTreeCursor.js +2 -2
  313. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  314. package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  315. package/dist/feature-libraries/modular-schema/comparison.d.ts +1 -1
  316. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  317. package/dist/feature-libraries/modular-schema/comparison.js +20 -20
  318. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  319. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -13
  320. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  321. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  322. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +3 -4
  323. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  324. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  325. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +21 -0
  326. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -0
  327. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js +7 -0
  328. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -0
  329. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +1 -2
  330. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  331. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +4 -4
  332. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  333. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  334. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -7
  335. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  336. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +3 -5
  337. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  338. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +7 -7
  339. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  340. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +1 -1
  341. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  342. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js +1 -1
  343. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  344. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +4 -4
  345. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  346. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  347. package/dist/feature-libraries/modular-schema/index.d.ts +5 -4
  348. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  349. package/dist/feature-libraries/modular-schema/index.js +3 -2
  350. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  351. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +1 -1
  352. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  353. package/dist/feature-libraries/modular-schema/isNeverTree.js +10 -11
  354. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  355. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -5
  356. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  357. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +73 -37
  358. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  359. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +13 -25
  360. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  361. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +261 -169
  362. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  363. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +5 -12
  364. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  365. package/dist/feature-libraries/modular-schema/modularChangeFormat.js +0 -10
  366. package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  367. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +6 -4
  368. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  369. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  370. package/dist/feature-libraries/node-key/nodeKey.d.ts +1 -1
  371. package/dist/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  372. package/dist/feature-libraries/node-key/nodeKey.js.map +1 -1
  373. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts +2 -2
  374. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts.map +1 -1
  375. package/dist/feature-libraries/node-key/nodeKeyIndex.js +3 -3
  376. package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  377. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts +2 -2
  378. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  379. package/dist/feature-libraries/node-key/nodeKeyManager.js +9 -9
  380. package/dist/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  381. package/dist/feature-libraries/object-forest/objectForest.d.ts +1 -1
  382. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  383. package/dist/feature-libraries/object-forest/objectForest.js +49 -48
  384. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  385. package/dist/feature-libraries/optional-field/index.d.ts +1 -1
  386. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  387. package/dist/feature-libraries/optional-field/index.js +1 -2
  388. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  389. package/dist/feature-libraries/optional-field/optionalField.d.ts +3 -5
  390. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  391. package/dist/feature-libraries/optional-field/optionalField.js +33 -39
  392. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  393. package/dist/feature-libraries/optional-field/{optionalFieldChangeFormat.d.ts → optionalFieldChangeFormatV1.d.ts} +1 -1
  394. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -0
  395. package/dist/feature-libraries/optional-field/{optionalFieldChangeFormat.js → optionalFieldChangeFormatV1.js} +11 -2
  396. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -0
  397. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +25 -0
  398. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -0
  399. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +44 -0
  400. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -0
  401. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +4 -7
  402. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  403. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  404. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +12 -0
  405. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +1 -0
  406. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +158 -0
  407. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +1 -0
  408. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +12 -0
  409. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -0
  410. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +87 -0
  411. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -0
  412. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -4
  413. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  414. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +7 -150
  415. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  416. package/dist/feature-libraries/schema-aware/schemaAware.d.ts +3 -4
  417. package/dist/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
  418. package/dist/feature-libraries/schema-aware/schemaAware.js +1 -1
  419. package/dist/feature-libraries/schema-aware/schemaAware.js.map +1 -1
  420. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  421. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  422. package/dist/feature-libraries/schema-edits/index.js +2 -2
  423. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  424. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +2 -3
  425. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  426. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +13 -5
  427. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  428. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  429. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  430. package/dist/feature-libraries/schema-edits/schemaChangeTypes.d.ts +5 -0
  431. package/dist/feature-libraries/schema-edits/schemaChangeTypes.d.ts.map +1 -1
  432. package/dist/feature-libraries/schema-edits/schemaChangeTypes.js.map +1 -1
  433. package/dist/feature-libraries/schema-index/codec.d.ts +1 -1
  434. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  435. package/dist/feature-libraries/schema-index/codec.js +10 -10
  436. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  437. package/dist/feature-libraries/schema-index/format.d.ts.map +1 -1
  438. package/dist/feature-libraries/schema-index/format.js.map +1 -1
  439. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  440. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  441. package/dist/feature-libraries/schema-index/schemaSummarizer.js +4 -4
  442. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  443. package/dist/feature-libraries/schemaBuilder.d.ts +1 -1
  444. package/dist/feature-libraries/schemaBuilder.d.ts.map +1 -1
  445. package/dist/feature-libraries/schemaBuilder.js +1 -1
  446. package/dist/feature-libraries/schemaBuilder.js.map +1 -1
  447. package/dist/feature-libraries/schemaBuilderBase.d.ts +1 -1
  448. package/dist/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  449. package/dist/feature-libraries/schemaBuilderBase.js +19 -19
  450. package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
  451. package/dist/feature-libraries/sequence-field/compose.d.ts +9 -13
  452. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  453. package/dist/feature-libraries/sequence-field/compose.js +76 -43
  454. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  455. package/dist/feature-libraries/sequence-field/format.d.ts.map +1 -1
  456. package/dist/feature-libraries/sequence-field/format.js +14 -14
  457. package/dist/feature-libraries/sequence-field/format.js.map +1 -1
  458. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +3 -3
  459. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  460. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  461. package/dist/feature-libraries/sequence-field/index.d.ts +5 -5
  462. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  463. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  464. package/dist/feature-libraries/sequence-field/invert.d.ts +1 -2
  465. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  466. package/dist/feature-libraries/sequence-field/invert.js +30 -39
  467. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  468. package/dist/feature-libraries/sequence-field/markListFactory.d.ts +4 -4
  469. package/dist/feature-libraries/sequence-field/markListFactory.d.ts.map +1 -1
  470. package/dist/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  471. package/dist/feature-libraries/sequence-field/markQueue.d.ts +7 -7
  472. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  473. package/dist/feature-libraries/sequence-field/markQueue.js +2 -2
  474. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  475. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +25 -14
  476. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  477. package/dist/feature-libraries/sequence-field/moveEffectTable.js +20 -11
  478. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  479. package/dist/feature-libraries/sequence-field/prune.d.ts +2 -2
  480. package/dist/feature-libraries/sequence-field/prune.d.ts.map +1 -1
  481. package/dist/feature-libraries/sequence-field/prune.js.map +1 -1
  482. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -4
  483. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  484. package/dist/feature-libraries/sequence-field/rebase.js +34 -40
  485. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  486. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +2 -2
  487. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +1 -1
  488. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +2 -2
  489. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +1 -1
  490. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts +1 -1
  491. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  492. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -1
  493. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  494. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +2 -2
  495. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
  496. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +1 -1
  497. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
  498. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -3
  499. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  500. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +17 -19
  501. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  502. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -17
  503. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  504. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +2 -2
  505. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  506. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -3
  507. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  508. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +10 -10
  509. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  510. package/dist/feature-libraries/sequence-field/types.d.ts +7 -8
  511. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  512. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  513. package/dist/feature-libraries/sequence-field/utils.d.ts +42 -35
  514. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  515. package/dist/feature-libraries/sequence-field/utils.js +43 -21
  516. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  517. package/dist/feature-libraries/storedToViewSchema.d.ts +2 -2
  518. package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  519. package/dist/feature-libraries/storedToViewSchema.js +3 -3
  520. package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
  521. package/dist/feature-libraries/treeCursorUtils.d.ts +1 -1
  522. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  523. package/dist/feature-libraries/treeCursorUtils.js +8 -8
  524. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  525. package/dist/feature-libraries/treeTextCursor.d.ts +1 -1
  526. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  527. package/dist/feature-libraries/treeTextCursor.js +3 -3
  528. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  529. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -2
  530. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  531. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  532. package/dist/feature-libraries/typed-schema/index.d.ts +0 -1
  533. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  534. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  535. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  536. package/dist/feature-libraries/typed-schema/schemaCollection.js +14 -14
  537. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  538. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -5
  539. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +1 -1
  540. package/dist/feature-libraries/typed-schema/typeUtils.js.map +1 -1
  541. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +5 -4
  542. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  543. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +19 -11
  544. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  545. package/dist/feature-libraries/typed-schema/view.d.ts +1 -1
  546. package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
  547. package/dist/feature-libraries/typed-schema/view.js +10 -10
  548. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  549. package/dist/feature-libraries/valueUtilities.d.ts +6 -3
  550. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  551. package/dist/feature-libraries/valueUtilities.js +11 -10
  552. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  553. package/dist/index.d.ts +7 -7
  554. package/dist/index.d.ts.map +1 -1
  555. package/dist/index.js +9 -9
  556. package/dist/index.js.map +1 -1
  557. package/dist/packageVersion.d.ts +1 -1
  558. package/dist/packageVersion.js +1 -1
  559. package/dist/packageVersion.js.map +1 -1
  560. package/dist/public.d.ts +90 -0
  561. package/dist/shared-tree/index.d.ts +3 -3
  562. package/dist/shared-tree/index.d.ts.map +1 -1
  563. package/dist/shared-tree/index.js +2 -1
  564. package/dist/shared-tree/index.js.map +1 -1
  565. package/dist/shared-tree/schematizeTree.d.ts +1 -1
  566. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  567. package/dist/shared-tree/schematizeTree.js +11 -11
  568. package/dist/shared-tree/schematizeTree.js.map +1 -1
  569. package/dist/shared-tree/schematizingTreeView.d.ts +10 -3
  570. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  571. package/dist/shared-tree/schematizingTreeView.js +39 -39
  572. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  573. package/dist/shared-tree/sharedTree.d.ts +58 -8
  574. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  575. package/dist/shared-tree/sharedTree.js +45 -12
  576. package/dist/shared-tree/sharedTree.js.map +1 -1
  577. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +3 -5
  578. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  579. package/dist/shared-tree/sharedTreeChangeCodecs.js +18 -11
  580. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  581. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +1 -0
  582. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  583. package/dist/shared-tree/sharedTreeChangeFamily.js +9 -6
  584. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  585. package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -188
  586. package/dist/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  587. package/dist/shared-tree/sharedTreeChangeFormat.js +3 -3
  588. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  589. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  590. package/dist/shared-tree/sharedTreeEditBuilder.js +4 -1
  591. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  592. package/dist/shared-tree/treeApi.d.ts +83 -2
  593. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  594. package/dist/shared-tree/treeApi.js +37 -14
  595. package/dist/shared-tree/treeApi.js.map +1 -1
  596. package/dist/shared-tree/treeCheckout.d.ts +41 -20
  597. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  598. package/dist/shared-tree/treeCheckout.js +135 -61
  599. package/dist/shared-tree/treeCheckout.js.map +1 -1
  600. package/dist/shared-tree/treeView.d.ts +3 -3
  601. package/dist/shared-tree/treeView.d.ts.map +1 -1
  602. package/dist/shared-tree/treeView.js.map +1 -1
  603. package/dist/shared-tree-core/branch.d.ts +5 -32
  604. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  605. package/dist/shared-tree-core/branch.js +12 -142
  606. package/dist/shared-tree-core/branch.js.map +1 -1
  607. package/dist/shared-tree-core/editManager.d.ts +2 -15
  608. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  609. package/dist/shared-tree-core/editManager.js +38 -82
  610. package/dist/shared-tree-core/editManager.js.map +1 -1
  611. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -4
  612. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  613. package/dist/shared-tree-core/editManagerCodecs.js +24 -10
  614. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  615. package/dist/shared-tree-core/editManagerFormat.d.ts +4 -5
  616. package/dist/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  617. package/dist/shared-tree-core/editManagerFormat.js +9 -10
  618. package/dist/shared-tree-core/editManagerFormat.js.map +1 -1
  619. package/dist/shared-tree-core/editManagerSummarizer.d.ts +7 -6
  620. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  621. package/dist/shared-tree-core/editManagerSummarizer.js +6 -9
  622. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  623. package/dist/shared-tree-core/index.d.ts +1 -1
  624. package/dist/shared-tree-core/index.d.ts.map +1 -1
  625. package/dist/shared-tree-core/index.js +2 -2
  626. package/dist/shared-tree-core/index.js.map +1 -1
  627. package/dist/shared-tree-core/messageCodecs.d.ts +7 -4
  628. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  629. package/dist/shared-tree-core/messageCodecs.js +21 -4
  630. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  631. package/dist/shared-tree-core/messageFormat.d.ts +10 -2
  632. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  633. package/dist/shared-tree-core/messageFormat.js +1 -0
  634. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  635. package/dist/shared-tree-core/messageTypes.d.ts.map +1 -1
  636. package/dist/shared-tree-core/messageTypes.js.map +1 -1
  637. package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  638. package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
  639. package/dist/shared-tree-core/sharedTreeCore.d.ts +10 -5
  640. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  641. package/dist/shared-tree-core/sharedTreeCore.js +18 -18
  642. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  643. package/dist/simple-tree/arrayNode.d.ts +187 -0
  644. package/dist/simple-tree/arrayNode.d.ts.map +1 -0
  645. package/dist/simple-tree/arrayNode.js +438 -0
  646. package/dist/simple-tree/arrayNode.js.map +1 -0
  647. package/dist/simple-tree/index.d.ts +10 -8
  648. package/dist/simple-tree/index.d.ts.map +1 -1
  649. package/dist/simple-tree/index.js +9 -8
  650. package/dist/simple-tree/index.js.map +1 -1
  651. package/dist/simple-tree/leafNodeSchema.d.ts +11 -0
  652. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -0
  653. package/dist/simple-tree/leafNodeSchema.js +51 -0
  654. package/dist/simple-tree/leafNodeSchema.js.map +1 -0
  655. package/dist/simple-tree/mapNode.d.ts +86 -0
  656. package/dist/simple-tree/mapNode.d.ts.map +1 -0
  657. package/dist/simple-tree/mapNode.js +204 -0
  658. package/dist/simple-tree/mapNode.js.map +1 -0
  659. package/dist/simple-tree/objectNode.d.ts +62 -0
  660. package/dist/simple-tree/objectNode.d.ts.map +1 -0
  661. package/dist/simple-tree/objectNode.js +242 -0
  662. package/dist/simple-tree/objectNode.js.map +1 -0
  663. package/dist/simple-tree/proxies.d.ts +21 -62
  664. package/dist/simple-tree/proxies.d.ts.map +1 -1
  665. package/dist/simple-tree/proxies.js +128 -679
  666. package/dist/simple-tree/proxies.js.map +1 -1
  667. package/dist/simple-tree/proxyBinding.d.ts +48 -0
  668. package/dist/simple-tree/proxyBinding.d.ts.map +1 -0
  669. package/dist/simple-tree/proxyBinding.js +132 -0
  670. package/dist/simple-tree/proxyBinding.js.map +1 -0
  671. package/dist/simple-tree/rawNode.d.ts +9 -50
  672. package/dist/simple-tree/rawNode.d.ts.map +1 -1
  673. package/dist/simple-tree/rawNode.js +15 -91
  674. package/dist/simple-tree/rawNode.js.map +1 -1
  675. package/dist/simple-tree/schemaCaching.d.ts +26 -0
  676. package/dist/simple-tree/schemaCaching.d.ts.map +1 -0
  677. package/dist/simple-tree/schemaCaching.js +69 -0
  678. package/dist/simple-tree/schemaCaching.js.map +1 -0
  679. package/dist/simple-tree/schemaCreationUtilities.d.ts +2 -1
  680. package/dist/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
  681. package/dist/simple-tree/schemaCreationUtilities.js +3 -3
  682. package/dist/simple-tree/schemaCreationUtilities.js.map +1 -1
  683. package/dist/simple-tree/schemaFactory.d.ts +92 -43
  684. package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
  685. package/dist/simple-tree/schemaFactory.js +124 -177
  686. package/dist/simple-tree/schemaFactory.js.map +1 -1
  687. package/dist/simple-tree/schemaFactoryRecursive.d.ts +27 -83
  688. package/dist/simple-tree/schemaFactoryRecursive.d.ts.map +1 -1
  689. package/dist/simple-tree/schemaFactoryRecursive.js +1 -115
  690. package/dist/simple-tree/schemaFactoryRecursive.js.map +1 -1
  691. package/dist/simple-tree/schemaTypes.d.ts +123 -70
  692. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  693. package/dist/simple-tree/schemaTypes.js +86 -5
  694. package/dist/simple-tree/schemaTypes.js.map +1 -1
  695. package/dist/simple-tree/testRecursiveDomain.d.ts +8 -8
  696. package/dist/simple-tree/testRecursiveDomain.d.ts.map +1 -1
  697. package/dist/simple-tree/testRecursiveDomain.js +2 -2
  698. package/dist/simple-tree/testRecursiveDomain.js.map +1 -1
  699. package/dist/simple-tree/toFlexSchema.d.ts +8 -20
  700. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  701. package/dist/simple-tree/toFlexSchema.js +33 -41
  702. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  703. package/dist/simple-tree/toMapTree.d.ts +12 -22
  704. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  705. package/dist/simple-tree/toMapTree.js +185 -136
  706. package/dist/simple-tree/toMapTree.js.map +1 -1
  707. package/dist/simple-tree/tree.d.ts +20 -3
  708. package/dist/simple-tree/tree.d.ts.map +1 -1
  709. package/dist/simple-tree/tree.js.map +1 -1
  710. package/dist/simple-tree/treeApi.d.ts +82 -5
  711. package/dist/simple-tree/treeApi.d.ts.map +1 -1
  712. package/dist/simple-tree/treeApi.js +96 -18
  713. package/dist/simple-tree/treeApi.js.map +1 -1
  714. package/dist/simple-tree/types.d.ts +1 -142
  715. package/dist/simple-tree/types.d.ts.map +1 -1
  716. package/dist/simple-tree/types.js.map +1 -1
  717. package/dist/simple-tree/typesUnsafe.d.ts +32 -17
  718. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  719. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  720. package/dist/treeFactory.d.ts +31 -14
  721. package/dist/treeFactory.d.ts.map +1 -1
  722. package/dist/treeFactory.js +50 -23
  723. package/dist/treeFactory.js.map +1 -1
  724. package/dist/util/brand.d.ts +26 -114
  725. package/dist/util/brand.d.ts.map +1 -1
  726. package/dist/util/brand.js +24 -91
  727. package/dist/util/brand.js.map +1 -1
  728. package/dist/util/idAllocator.d.ts.map +1 -1
  729. package/dist/util/idAllocator.js +2 -2
  730. package/dist/util/idAllocator.js.map +1 -1
  731. package/dist/util/index.d.ts +5 -3
  732. package/dist/util/index.d.ts.map +1 -1
  733. package/dist/util/index.js +8 -9
  734. package/dist/util/index.js.map +1 -1
  735. package/dist/util/nestedSet.d.ts.map +1 -1
  736. package/dist/util/nestedSet.js.map +1 -1
  737. package/dist/util/opaque.d.ts +46 -0
  738. package/dist/util/opaque.d.ts.map +1 -0
  739. package/dist/util/opaque.js +29 -0
  740. package/dist/util/opaque.js.map +1 -0
  741. package/dist/util/referenceCounting.d.ts +1 -1
  742. package/dist/util/referenceCounting.d.ts.map +1 -1
  743. package/dist/util/referenceCounting.js +3 -3
  744. package/dist/util/referenceCounting.js.map +1 -1
  745. package/dist/util/typeCheckTests.d.ts +1 -1
  746. package/dist/util/typeCheckTests.d.ts.map +1 -1
  747. package/dist/util/typeCheckTests.js.map +1 -1
  748. package/dist/util/typeUtils.d.ts +13 -0
  749. package/dist/util/typeUtils.d.ts.map +1 -1
  750. package/dist/util/typeUtils.js.map +1 -1
  751. package/dist/util/typeboxBrand.d.ts +17 -0
  752. package/dist/util/typeboxBrand.d.ts.map +1 -0
  753. package/dist/util/typeboxBrand.js +32 -0
  754. package/dist/util/typeboxBrand.js.map +1 -0
  755. package/dist/util/utils.d.ts +2 -15
  756. package/dist/util/utils.d.ts.map +1 -1
  757. package/dist/util/utils.js +11 -11
  758. package/dist/util/utils.js.map +1 -1
  759. package/docs/main/compatibility.md +95 -0
  760. package/docs/main/schema2.md +3 -3
  761. package/docs/main/sequence-field/move-composition.md +46 -0
  762. package/docs/main/tree-content-apis.md +5 -5
  763. package/docs/roadmap.md +4 -4
  764. package/internal.d.ts +11 -0
  765. package/lib/beta.d.ts +90 -0
  766. package/lib/codec/codec.d.ts +10 -4
  767. package/lib/codec/codec.d.ts.map +1 -1
  768. package/lib/codec/codec.js +2 -2
  769. package/lib/codec/codec.js.map +1 -1
  770. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  771. package/lib/codec/discriminatedUnions.js +5 -1
  772. package/lib/codec/discriminatedUnions.js.map +1 -1
  773. package/lib/codec/index.d.ts +2 -2
  774. package/lib/codec/index.d.ts.map +1 -1
  775. package/lib/codec/index.js +1 -1
  776. package/lib/codec/index.js.map +1 -1
  777. package/lib/codec/noopValidator.d.ts.map +1 -1
  778. package/lib/codec/noopValidator.js.map +1 -1
  779. package/lib/codec/versioned/codec.d.ts +10 -2
  780. package/lib/codec/versioned/codec.d.ts.map +1 -1
  781. package/lib/codec/versioned/codec.js +25 -4
  782. package/lib/codec/versioned/codec.js.map +1 -1
  783. package/lib/codec/versioned/index.d.ts +1 -1
  784. package/lib/codec/versioned/index.d.ts.map +1 -1
  785. package/lib/codec/versioned/index.js +1 -1
  786. package/lib/codec/versioned/index.js.map +1 -1
  787. package/lib/core/change-family/changeFamily.d.ts +2 -2
  788. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  789. package/lib/core/change-family/changeFamily.js.map +1 -1
  790. package/lib/core/forest/editableForest.d.ts +1 -1
  791. package/lib/core/forest/editableForest.d.ts.map +1 -1
  792. package/lib/core/forest/editableForest.js +2 -2
  793. package/lib/core/forest/editableForest.js.map +1 -1
  794. package/lib/core/forest/forest.d.ts +5 -1
  795. package/lib/core/forest/forest.d.ts.map +1 -1
  796. package/lib/core/forest/forest.js +1 -1
  797. package/lib/core/forest/forest.js.map +1 -1
  798. package/lib/core/index.d.ts +3 -3
  799. package/lib/core/index.d.ts.map +1 -1
  800. package/lib/core/index.js +3 -3
  801. package/lib/core/index.js.map +1 -1
  802. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  803. package/lib/core/rebase/changeRebaser.js.map +1 -1
  804. package/lib/core/rebase/index.d.ts +1 -1
  805. package/lib/core/rebase/index.d.ts.map +1 -1
  806. package/lib/core/rebase/index.js +1 -1
  807. package/lib/core/rebase/index.js.map +1 -1
  808. package/lib/core/rebase/revisionTagCodec.d.ts.map +1 -1
  809. package/lib/core/rebase/revisionTagCodec.js +1 -1
  810. package/lib/core/rebase/revisionTagCodec.js.map +1 -1
  811. package/lib/core/rebase/types.d.ts +30 -0
  812. package/lib/core/rebase/types.d.ts.map +1 -1
  813. package/lib/core/rebase/types.js +23 -0
  814. package/lib/core/rebase/types.js.map +1 -1
  815. package/lib/core/rebase/utils.d.ts.map +1 -1
  816. package/lib/core/rebase/utils.js +6 -5
  817. package/lib/core/rebase/utils.js.map +1 -1
  818. package/lib/core/revertible/index.d.ts +1 -1
  819. package/lib/core/revertible/index.d.ts.map +1 -1
  820. package/lib/core/revertible/index.js +1 -1
  821. package/lib/core/revertible/index.js.map +1 -1
  822. package/lib/core/revertible/revertible.d.ts +15 -49
  823. package/lib/core/revertible/revertible.d.ts.map +1 -1
  824. package/lib/core/revertible/revertible.js +2 -32
  825. package/lib/core/revertible/revertible.js.map +1 -1
  826. package/lib/core/schema-stored/format.d.ts.map +1 -1
  827. package/lib/core/schema-stored/format.js.map +1 -1
  828. package/lib/core/schema-stored/index.d.ts +2 -1
  829. package/lib/core/schema-stored/index.d.ts.map +1 -1
  830. package/lib/core/schema-stored/index.js +2 -1
  831. package/lib/core/schema-stored/index.js.map +1 -1
  832. package/lib/core/schema-stored/multiplicity.d.ts.map +1 -0
  833. package/lib/core/schema-stored/multiplicity.js.map +1 -0
  834. package/lib/core/schema-stored/schema.d.ts +32 -9
  835. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  836. package/lib/core/schema-stored/schema.js +13 -7
  837. package/lib/core/schema-stored/schema.js.map +1 -1
  838. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  839. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  840. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  841. package/lib/core/tree/anchorSet.d.ts +31 -16
  842. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  843. package/lib/core/tree/anchorSet.js +10 -35
  844. package/lib/core/tree/anchorSet.js.map +1 -1
  845. package/lib/core/tree/cursor.d.ts.map +1 -1
  846. package/lib/core/tree/cursor.js +1 -1
  847. package/lib/core/tree/cursor.js.map +1 -1
  848. package/lib/core/tree/delta.d.ts.map +1 -1
  849. package/lib/core/tree/delta.js.map +1 -1
  850. package/lib/core/tree/deltaUtil.d.ts +1 -1
  851. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  852. package/lib/core/tree/deltaUtil.js.map +1 -1
  853. package/lib/core/tree/detachedFieldIndex.d.ts +2 -2
  854. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  855. package/lib/core/tree/detachedFieldIndex.js +2 -2
  856. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  857. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  858. package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
  859. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  860. package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  861. package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
  862. package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  863. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  864. package/lib/core/tree/mapTree.d.ts.map +1 -1
  865. package/lib/core/tree/mapTree.js.map +1 -1
  866. package/lib/core/tree/pathTree.d.ts.map +1 -1
  867. package/lib/core/tree/pathTree.js.map +1 -1
  868. package/lib/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  869. package/lib/core/tree/persistedTreeTextFormat.js.map +1 -1
  870. package/lib/core/tree/sparseTree.d.ts.map +1 -1
  871. package/lib/core/tree/sparseTree.js +1 -1
  872. package/lib/core/tree/sparseTree.js.map +1 -1
  873. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  874. package/lib/core/tree/treeTextFormat.js.map +1 -1
  875. package/lib/core/tree/types.d.ts +1 -1
  876. package/lib/core/tree/types.d.ts.map +1 -1
  877. package/lib/core/tree/types.js +1 -1
  878. package/lib/core/tree/types.js.map +1 -1
  879. package/lib/core/tree/visitDelta.d.ts +13 -2
  880. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  881. package/lib/core/tree/visitDelta.js +43 -14
  882. package/lib/core/tree/visitDelta.js.map +1 -1
  883. package/lib/core/tree/visitPath.d.ts +1 -1
  884. package/lib/core/tree/visitPath.d.ts.map +1 -1
  885. package/lib/core/tree/visitPath.js +4 -0
  886. package/lib/core/tree/visitPath.js.map +1 -1
  887. package/lib/core/tree/visitorUtils.d.ts +4 -4
  888. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  889. package/lib/core/tree/visitorUtils.js +1 -1
  890. package/lib/core/tree/visitorUtils.js.map +1 -1
  891. package/lib/domains/json/jsonCursor.d.ts.map +1 -1
  892. package/lib/domains/json/jsonCursor.js +1 -1
  893. package/lib/domains/json/jsonCursor.js.map +1 -1
  894. package/lib/domains/json/jsonDomainSchema.d.ts.map +1 -1
  895. package/lib/domains/json/jsonDomainSchema.js.map +1 -1
  896. package/lib/domains/leafDomain.d.ts.map +1 -1
  897. package/lib/domains/leafDomain.js +1 -1
  898. package/lib/domains/leafDomain.js.map +1 -1
  899. package/lib/domains/nodeKey/nodeKeySchema.d.ts.map +1 -1
  900. package/lib/domains/nodeKey/nodeKeySchema.js +2 -2
  901. package/lib/domains/nodeKey/nodeKeySchema.js.map +1 -1
  902. package/lib/domains/schemaBuilder.d.ts +19 -81
  903. package/lib/domains/schemaBuilder.d.ts.map +1 -1
  904. package/lib/domains/schemaBuilder.js +24 -92
  905. package/lib/domains/schemaBuilder.js.map +1 -1
  906. package/lib/domains/testRecursiveDomain.d.ts +0 -4
  907. package/lib/domains/testRecursiveDomain.d.ts.map +1 -1
  908. package/lib/domains/testRecursiveDomain.js +1 -8
  909. package/lib/domains/testRecursiveDomain.js.map +1 -1
  910. package/lib/events/events.d.ts.map +1 -1
  911. package/lib/events/events.js +1 -1
  912. package/lib/events/events.js.map +1 -1
  913. package/lib/external-utilities/typeboxValidator.d.ts.map +1 -1
  914. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  915. package/lib/feature-libraries/changeAtomIdCodec.d.ts +1 -1
  916. package/lib/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
  917. package/lib/feature-libraries/changeAtomIdCodec.js.map +1 -1
  918. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts +3 -3
  919. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  920. package/lib/feature-libraries/chunked-forest/basicChunk.js +4 -4
  921. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  922. package/lib/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  923. package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  924. package/lib/feature-libraries/chunked-forest/chunk.js +1 -1
  925. package/lib/feature-libraries/chunked-forest/chunk.js.map +1 -1
  926. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +2 -2
  927. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  928. package/lib/feature-libraries/chunked-forest/chunkTree.js +5 -6
  929. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  930. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -2
  931. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  932. package/lib/feature-libraries/chunked-forest/chunkedForest.js +4 -3
  933. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  934. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +2 -2
  935. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
  936. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +1 -1
  937. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  938. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  939. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  940. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +3 -3
  941. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  942. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  943. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  944. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +1 -1
  945. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  946. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -1
  947. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  948. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  949. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -9
  950. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  951. package/lib/feature-libraries/chunked-forest/codec/codecs.js +4 -3
  952. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  953. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  954. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  955. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  956. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  957. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +1 -1
  958. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  959. package/lib/feature-libraries/chunked-forest/codec/format.js +2 -3
  960. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  961. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +1 -1
  962. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  963. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  964. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  965. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  966. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +2 -2
  967. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  968. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  969. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  970. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts +3 -3
  971. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  972. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -4
  973. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  974. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  975. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  976. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  977. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  978. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  979. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  980. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  981. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  982. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  983. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  984. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  985. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +3 -3
  986. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  987. package/lib/feature-libraries/chunked-forest/uniformChunk.js +4 -4
  988. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  989. package/lib/feature-libraries/contextuallyTyped.d.ts +5 -9
  990. package/lib/feature-libraries/contextuallyTyped.d.ts.map +1 -1
  991. package/lib/feature-libraries/contextuallyTyped.js +6 -20
  992. package/lib/feature-libraries/contextuallyTyped.js.map +1 -1
  993. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -5
  994. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  995. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -6
  996. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  997. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +18 -4
  998. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  999. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -20
  1000. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  1001. package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  1002. package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  1003. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  1004. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  1005. package/lib/feature-libraries/default-schema/index.js +1 -1
  1006. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  1007. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts +8 -0
  1008. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -0
  1009. package/lib/feature-libraries/default-schema/noChangeCodecs.js +7 -0
  1010. package/lib/feature-libraries/default-schema/noChangeCodecs.js.map +1 -0
  1011. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +1 -1
  1012. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  1013. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +1 -1
  1014. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  1015. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  1016. package/lib/feature-libraries/editableTreeBinder.js +1 -1
  1017. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  1018. package/lib/feature-libraries/fieldGenerator.d.ts +1 -1
  1019. package/lib/feature-libraries/fieldGenerator.d.ts.map +1 -1
  1020. package/lib/feature-libraries/fieldGenerator.js.map +1 -1
  1021. package/lib/feature-libraries/flex-tree/context.d.ts +16 -4
  1022. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  1023. package/lib/feature-libraries/flex-tree/context.js +17 -5
  1024. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  1025. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +43 -36
  1026. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  1027. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +8 -5
  1028. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  1029. package/lib/feature-libraries/flex-tree/index.d.ts +3 -3
  1030. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  1031. package/lib/feature-libraries/flex-tree/index.js +2 -2
  1032. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  1033. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +7 -8
  1034. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  1035. package/lib/feature-libraries/flex-tree/lazyEntity.js +8 -12
  1036. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  1037. package/lib/feature-libraries/flex-tree/lazyField.d.ts +21 -7
  1038. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  1039. package/lib/feature-libraries/flex-tree/lazyField.js +43 -22
  1040. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  1041. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +12 -9
  1042. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  1043. package/lib/feature-libraries/flex-tree/lazyNode.js +35 -80
  1044. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  1045. package/lib/feature-libraries/flex-tree/nodeKeys.d.ts.map +1 -1
  1046. package/lib/feature-libraries/flex-tree/nodeKeys.js.map +1 -1
  1047. package/lib/feature-libraries/flex-tree/treeEvents.d.ts +7 -70
  1048. package/lib/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  1049. package/lib/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  1050. package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  1051. package/lib/feature-libraries/flex-tree/unboxed.js +1 -1
  1052. package/lib/feature-libraries/flex-tree/unboxed.js.map +1 -1
  1053. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  1054. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  1055. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  1056. package/lib/feature-libraries/forest-summary/codec.js +1 -1
  1057. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  1058. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  1059. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  1060. package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -3
  1061. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  1062. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  1063. package/lib/feature-libraries/forest-summary/format.js +1 -1
  1064. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  1065. package/lib/feature-libraries/index.d.ts +8 -9
  1066. package/lib/feature-libraries/index.d.ts.map +1 -1
  1067. package/lib/feature-libraries/index.js +6 -7
  1068. package/lib/feature-libraries/index.js.map +1 -1
  1069. package/lib/feature-libraries/mapTreeCursor.d.ts +1 -1
  1070. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  1071. package/lib/feature-libraries/mapTreeCursor.js +2 -2
  1072. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  1073. package/lib/feature-libraries/memoizedIdRangeAllocator.js +1 -1
  1074. package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  1075. package/lib/feature-libraries/modular-schema/comparison.d.ts +1 -1
  1076. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  1077. package/lib/feature-libraries/modular-schema/comparison.js +3 -3
  1078. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  1079. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -13
  1080. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  1081. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  1082. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +3 -4
  1083. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  1084. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  1085. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +21 -0
  1086. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -0
  1087. package/lib/{test/codec/codec.spec.d.ts → feature-libraries/modular-schema/fieldKindConfiguration.js} +1 -1
  1088. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -0
  1089. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +1 -2
  1090. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  1091. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +3 -3
  1092. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  1093. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  1094. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -7
  1095. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  1096. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +3 -5
  1097. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  1098. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +7 -7
  1099. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  1100. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +1 -1
  1101. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  1102. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js +1 -1
  1103. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  1104. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +4 -4
  1105. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  1106. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  1107. package/lib/feature-libraries/modular-schema/index.d.ts +5 -4
  1108. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  1109. package/lib/feature-libraries/modular-schema/index.js +2 -2
  1110. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  1111. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +1 -1
  1112. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  1113. package/lib/feature-libraries/modular-schema/isNeverTree.js +6 -7
  1114. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  1115. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -5
  1116. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  1117. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +63 -27
  1118. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  1119. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +13 -25
  1120. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  1121. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +202 -110
  1122. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  1123. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +5 -12
  1124. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  1125. package/lib/feature-libraries/modular-schema/modularChangeFormat.js +2 -12
  1126. package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  1127. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +6 -4
  1128. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  1129. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  1130. package/lib/feature-libraries/node-key/nodeKey.d.ts +1 -1
  1131. package/lib/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  1132. package/lib/feature-libraries/node-key/nodeKey.js.map +1 -1
  1133. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts +2 -2
  1134. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts.map +1 -1
  1135. package/lib/feature-libraries/node-key/nodeKeyIndex.js +2 -2
  1136. package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  1137. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts +2 -2
  1138. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  1139. package/lib/feature-libraries/node-key/nodeKeyManager.js +2 -2
  1140. package/lib/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  1141. package/lib/feature-libraries/object-forest/objectForest.d.ts +1 -1
  1142. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  1143. package/lib/feature-libraries/object-forest/objectForest.js +6 -5
  1144. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  1145. package/lib/feature-libraries/optional-field/index.d.ts +1 -1
  1146. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  1147. package/lib/feature-libraries/optional-field/index.js +1 -1
  1148. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  1149. package/lib/feature-libraries/optional-field/optionalField.d.ts +3 -5
  1150. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  1151. package/lib/feature-libraries/optional-field/optionalField.js +18 -22
  1152. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  1153. package/lib/feature-libraries/optional-field/{optionalFieldChangeFormat.d.ts → optionalFieldChangeFormatV1.d.ts} +1 -1
  1154. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -0
  1155. package/lib/feature-libraries/optional-field/{optionalFieldChangeFormat.js → optionalFieldChangeFormatV1.js} +11 -2
  1156. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -0
  1157. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +25 -0
  1158. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -0
  1159. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +40 -0
  1160. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -0
  1161. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +4 -7
  1162. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  1163. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  1164. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +12 -0
  1165. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +1 -0
  1166. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +154 -0
  1167. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +1 -0
  1168. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +12 -0
  1169. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -0
  1170. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +83 -0
  1171. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -0
  1172. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -4
  1173. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  1174. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +7 -150
  1175. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  1176. package/lib/feature-libraries/schema-aware/schemaAware.d.ts +3 -4
  1177. package/lib/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
  1178. package/lib/feature-libraries/schema-aware/schemaAware.js +1 -1
  1179. package/lib/feature-libraries/schema-aware/schemaAware.js.map +1 -1
  1180. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  1181. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  1182. package/lib/feature-libraries/schema-edits/index.js +1 -1
  1183. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  1184. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +2 -3
  1185. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  1186. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +10 -2
  1187. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  1188. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  1189. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  1190. package/lib/feature-libraries/schema-edits/schemaChangeTypes.d.ts +5 -0
  1191. package/lib/feature-libraries/schema-edits/schemaChangeTypes.d.ts.map +1 -1
  1192. package/lib/feature-libraries/schema-edits/schemaChangeTypes.js.map +1 -1
  1193. package/lib/feature-libraries/schema-index/codec.d.ts +1 -1
  1194. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  1195. package/lib/feature-libraries/schema-index/codec.js +3 -3
  1196. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  1197. package/lib/feature-libraries/schema-index/format.d.ts.map +1 -1
  1198. package/lib/feature-libraries/schema-index/format.js.map +1 -1
  1199. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  1200. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  1201. package/lib/feature-libraries/schema-index/schemaSummarizer.js +2 -2
  1202. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  1203. package/lib/feature-libraries/schemaBuilder.d.ts +1 -1
  1204. package/lib/feature-libraries/schemaBuilder.d.ts.map +1 -1
  1205. package/lib/feature-libraries/schemaBuilder.js +1 -1
  1206. package/lib/feature-libraries/schemaBuilder.js.map +1 -1
  1207. package/lib/feature-libraries/schemaBuilderBase.d.ts +1 -1
  1208. package/lib/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  1209. package/lib/feature-libraries/schemaBuilderBase.js +2 -2
  1210. package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
  1211. package/lib/feature-libraries/sequence-field/compose.d.ts +9 -13
  1212. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  1213. package/lib/feature-libraries/sequence-field/compose.js +63 -30
  1214. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  1215. package/lib/feature-libraries/sequence-field/format.d.ts.map +1 -1
  1216. package/lib/feature-libraries/sequence-field/format.js +1 -1
  1217. package/lib/feature-libraries/sequence-field/format.js.map +1 -1
  1218. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +3 -3
  1219. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  1220. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  1221. package/lib/feature-libraries/sequence-field/index.d.ts +5 -5
  1222. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  1223. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  1224. package/lib/feature-libraries/sequence-field/invert.d.ts +1 -2
  1225. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  1226. package/lib/feature-libraries/sequence-field/invert.js +20 -29
  1227. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  1228. package/lib/feature-libraries/sequence-field/markListFactory.d.ts +4 -4
  1229. package/lib/feature-libraries/sequence-field/markListFactory.d.ts.map +1 -1
  1230. package/lib/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  1231. package/lib/feature-libraries/sequence-field/markQueue.d.ts +7 -7
  1232. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  1233. package/lib/feature-libraries/sequence-field/markQueue.js +1 -1
  1234. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  1235. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +25 -14
  1236. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  1237. package/lib/feature-libraries/sequence-field/moveEffectTable.js +15 -6
  1238. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  1239. package/lib/feature-libraries/sequence-field/prune.d.ts +2 -2
  1240. package/lib/feature-libraries/sequence-field/prune.d.ts.map +1 -1
  1241. package/lib/feature-libraries/sequence-field/prune.js.map +1 -1
  1242. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -4
  1243. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  1244. package/lib/feature-libraries/sequence-field/rebase.js +11 -17
  1245. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  1246. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +2 -2
  1247. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +1 -1
  1248. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +2 -2
  1249. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +1 -1
  1250. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts +1 -1
  1251. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  1252. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -1
  1253. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  1254. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +2 -2
  1255. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
  1256. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +1 -1
  1257. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
  1258. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -3
  1259. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  1260. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +13 -15
  1261. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  1262. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -17
  1263. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  1264. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +1 -1
  1265. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  1266. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -3
  1267. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  1268. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +7 -7
  1269. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  1270. package/lib/feature-libraries/sequence-field/types.d.ts +7 -8
  1271. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  1272. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  1273. package/lib/feature-libraries/sequence-field/utils.d.ts +42 -35
  1274. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  1275. package/lib/feature-libraries/sequence-field/utils.js +28 -7
  1276. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  1277. package/lib/feature-libraries/storedToViewSchema.d.ts +2 -2
  1278. package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  1279. package/lib/feature-libraries/storedToViewSchema.js +3 -3
  1280. package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
  1281. package/lib/feature-libraries/treeCursorUtils.d.ts +1 -1
  1282. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  1283. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  1284. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  1285. package/lib/feature-libraries/treeTextCursor.d.ts +1 -1
  1286. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  1287. package/lib/feature-libraries/treeTextCursor.js +2 -2
  1288. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  1289. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -2
  1290. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  1291. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  1292. package/lib/feature-libraries/typed-schema/index.d.ts +0 -1
  1293. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  1294. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  1295. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  1296. package/lib/feature-libraries/typed-schema/schemaCollection.js +4 -4
  1297. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  1298. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -5
  1299. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +1 -1
  1300. package/lib/feature-libraries/typed-schema/typeUtils.js.map +1 -1
  1301. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +5 -4
  1302. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  1303. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +16 -8
  1304. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  1305. package/lib/feature-libraries/typed-schema/view.d.ts +1 -1
  1306. package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
  1307. package/lib/feature-libraries/typed-schema/view.js +1 -1
  1308. package/lib/feature-libraries/typed-schema/view.js.map +1 -1
  1309. package/lib/feature-libraries/valueUtilities.d.ts +6 -3
  1310. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  1311. package/lib/feature-libraries/valueUtilities.js +8 -7
  1312. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  1313. package/lib/index.d.ts +7 -7
  1314. package/lib/index.d.ts.map +1 -1
  1315. package/lib/index.js +5 -7
  1316. package/lib/index.js.map +1 -1
  1317. package/lib/packageVersion.d.ts +1 -1
  1318. package/lib/packageVersion.js +1 -1
  1319. package/lib/packageVersion.js.map +1 -1
  1320. package/lib/public.d.ts +90 -0
  1321. package/lib/shared-tree/index.d.ts +3 -3
  1322. package/lib/shared-tree/index.d.ts.map +1 -1
  1323. package/lib/shared-tree/index.js +2 -2
  1324. package/lib/shared-tree/index.js.map +1 -1
  1325. package/lib/shared-tree/schematizeTree.d.ts +1 -1
  1326. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  1327. package/lib/shared-tree/schematizeTree.js +6 -6
  1328. package/lib/shared-tree/schematizeTree.js.map +1 -1
  1329. package/lib/shared-tree/schematizingTreeView.d.ts +10 -3
  1330. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  1331. package/lib/shared-tree/schematizingTreeView.js +21 -21
  1332. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  1333. package/lib/shared-tree/sharedTree.d.ts +58 -8
  1334. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  1335. package/lib/shared-tree/sharedTree.js +43 -10
  1336. package/lib/shared-tree/sharedTree.js.map +1 -1
  1337. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +3 -5
  1338. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  1339. package/lib/shared-tree/sharedTreeChangeCodecs.js +18 -10
  1340. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  1341. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +1 -0
  1342. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  1343. package/lib/shared-tree/sharedTreeChangeFamily.js +7 -5
  1344. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  1345. package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -188
  1346. package/lib/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  1347. package/lib/shared-tree/sharedTreeChangeFormat.js +3 -3
  1348. package/lib/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  1349. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  1350. package/lib/shared-tree/sharedTreeEditBuilder.js +4 -1
  1351. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  1352. package/lib/shared-tree/treeApi.d.ts +83 -2
  1353. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  1354. package/lib/shared-tree/treeApi.js +30 -7
  1355. package/lib/shared-tree/treeApi.js.map +1 -1
  1356. package/lib/shared-tree/treeCheckout.d.ts +41 -20
  1357. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  1358. package/lib/shared-tree/treeCheckout.js +115 -41
  1359. package/lib/shared-tree/treeCheckout.js.map +1 -1
  1360. package/lib/shared-tree/treeView.d.ts +3 -3
  1361. package/lib/shared-tree/treeView.d.ts.map +1 -1
  1362. package/lib/shared-tree/treeView.js.map +1 -1
  1363. package/lib/shared-tree-core/branch.d.ts +5 -32
  1364. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  1365. package/lib/shared-tree-core/branch.js +9 -139
  1366. package/lib/shared-tree-core/branch.js.map +1 -1
  1367. package/lib/shared-tree-core/editManager.d.ts +2 -15
  1368. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  1369. package/lib/shared-tree-core/editManager.js +4 -48
  1370. package/lib/shared-tree-core/editManager.js.map +1 -1
  1371. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -4
  1372. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  1373. package/lib/shared-tree-core/editManagerCodecs.js +19 -6
  1374. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  1375. package/lib/shared-tree-core/editManagerFormat.d.ts +4 -5
  1376. package/lib/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  1377. package/lib/shared-tree-core/editManagerFormat.js +2 -3
  1378. package/lib/shared-tree-core/editManagerFormat.js.map +1 -1
  1379. package/lib/shared-tree-core/editManagerSummarizer.d.ts +7 -6
  1380. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  1381. package/lib/shared-tree-core/editManagerSummarizer.js +4 -7
  1382. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  1383. package/lib/shared-tree-core/index.d.ts +1 -1
  1384. package/lib/shared-tree-core/index.d.ts.map +1 -1
  1385. package/lib/shared-tree-core/index.js.map +1 -1
  1386. package/lib/shared-tree-core/messageCodecs.d.ts +7 -4
  1387. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  1388. package/lib/shared-tree-core/messageCodecs.js +19 -3
  1389. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  1390. package/lib/shared-tree-core/messageFormat.d.ts +10 -2
  1391. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  1392. package/lib/shared-tree-core/messageFormat.js +1 -0
  1393. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  1394. package/lib/shared-tree-core/messageTypes.d.ts.map +1 -1
  1395. package/lib/shared-tree-core/messageTypes.js.map +1 -1
  1396. package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  1397. package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
  1398. package/lib/shared-tree-core/sharedTreeCore.d.ts +10 -5
  1399. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  1400. package/lib/shared-tree-core/sharedTreeCore.js +12 -12
  1401. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  1402. package/lib/simple-tree/arrayNode.d.ts +187 -0
  1403. package/lib/simple-tree/arrayNode.d.ts.map +1 -0
  1404. package/lib/simple-tree/arrayNode.js +433 -0
  1405. package/lib/simple-tree/arrayNode.js.map +1 -0
  1406. package/lib/simple-tree/index.d.ts +10 -8
  1407. package/lib/simple-tree/index.d.ts.map +1 -1
  1408. package/lib/simple-tree/index.js +4 -4
  1409. package/lib/simple-tree/index.js.map +1 -1
  1410. package/lib/simple-tree/leafNodeSchema.d.ts +11 -0
  1411. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -0
  1412. package/lib/simple-tree/leafNodeSchema.js +48 -0
  1413. package/lib/simple-tree/leafNodeSchema.js.map +1 -0
  1414. package/lib/simple-tree/mapNode.d.ts +86 -0
  1415. package/lib/simple-tree/mapNode.d.ts.map +1 -0
  1416. package/lib/simple-tree/mapNode.js +198 -0
  1417. package/lib/simple-tree/mapNode.js.map +1 -0
  1418. package/lib/simple-tree/objectNode.d.ts +62 -0
  1419. package/lib/simple-tree/objectNode.d.ts.map +1 -0
  1420. package/lib/simple-tree/objectNode.js +236 -0
  1421. package/lib/simple-tree/objectNode.js.map +1 -0
  1422. package/lib/simple-tree/proxies.d.ts +21 -62
  1423. package/lib/simple-tree/proxies.d.ts.map +1 -1
  1424. package/lib/simple-tree/proxies.js +119 -667
  1425. package/lib/simple-tree/proxies.js.map +1 -1
  1426. package/lib/simple-tree/proxyBinding.d.ts +48 -0
  1427. package/lib/simple-tree/proxyBinding.d.ts.map +1 -0
  1428. package/lib/simple-tree/proxyBinding.js +124 -0
  1429. package/lib/simple-tree/proxyBinding.js.map +1 -0
  1430. package/lib/simple-tree/rawNode.d.ts +9 -50
  1431. package/lib/simple-tree/rawNode.d.ts.map +1 -1
  1432. package/lib/simple-tree/rawNode.js +12 -85
  1433. package/lib/simple-tree/rawNode.js.map +1 -1
  1434. package/lib/simple-tree/schemaCaching.d.ts +26 -0
  1435. package/lib/simple-tree/schemaCaching.d.ts.map +1 -0
  1436. package/lib/simple-tree/schemaCaching.js +61 -0
  1437. package/lib/simple-tree/schemaCaching.js.map +1 -0
  1438. package/lib/simple-tree/schemaCreationUtilities.d.ts +2 -1
  1439. package/lib/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
  1440. package/lib/simple-tree/schemaCreationUtilities.js +1 -1
  1441. package/lib/simple-tree/schemaCreationUtilities.js.map +1 -1
  1442. package/lib/simple-tree/schemaFactory.d.ts +92 -43
  1443. package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
  1444. package/lib/simple-tree/schemaFactory.js +105 -157
  1445. package/lib/simple-tree/schemaFactory.js.map +1 -1
  1446. package/lib/simple-tree/schemaFactoryRecursive.d.ts +27 -83
  1447. package/lib/simple-tree/schemaFactoryRecursive.d.ts.map +1 -1
  1448. package/lib/simple-tree/schemaFactoryRecursive.js +1 -114
  1449. package/lib/simple-tree/schemaFactoryRecursive.js.map +1 -1
  1450. package/lib/simple-tree/schemaTypes.d.ts +123 -70
  1451. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  1452. package/lib/simple-tree/schemaTypes.js +81 -4
  1453. package/lib/simple-tree/schemaTypes.js.map +1 -1
  1454. package/lib/simple-tree/testRecursiveDomain.d.ts +8 -8
  1455. package/lib/simple-tree/testRecursiveDomain.d.ts.map +1 -1
  1456. package/lib/simple-tree/testRecursiveDomain.js +2 -2
  1457. package/lib/simple-tree/testRecursiveDomain.js.map +1 -1
  1458. package/lib/simple-tree/toFlexSchema.d.ts +8 -20
  1459. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  1460. package/lib/simple-tree/toFlexSchema.js +22 -27
  1461. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  1462. package/lib/simple-tree/toMapTree.d.ts +12 -22
  1463. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  1464. package/lib/simple-tree/toMapTree.js +183 -133
  1465. package/lib/simple-tree/toMapTree.js.map +1 -1
  1466. package/lib/simple-tree/tree.d.ts +20 -3
  1467. package/lib/simple-tree/tree.d.ts.map +1 -1
  1468. package/lib/simple-tree/tree.js.map +1 -1
  1469. package/lib/simple-tree/treeApi.d.ts +82 -5
  1470. package/lib/simple-tree/treeApi.d.ts.map +1 -1
  1471. package/lib/simple-tree/treeApi.js +90 -12
  1472. package/lib/simple-tree/treeApi.js.map +1 -1
  1473. package/lib/simple-tree/types.d.ts +1 -142
  1474. package/lib/simple-tree/types.d.ts.map +1 -1
  1475. package/lib/simple-tree/types.js.map +1 -1
  1476. package/lib/simple-tree/typesUnsafe.d.ts +32 -17
  1477. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  1478. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  1479. package/lib/treeFactory.d.ts +31 -14
  1480. package/lib/treeFactory.d.ts.map +1 -1
  1481. package/lib/treeFactory.js +48 -22
  1482. package/lib/treeFactory.js.map +1 -1
  1483. package/lib/util/brand.d.ts +26 -114
  1484. package/lib/util/brand.d.ts.map +1 -1
  1485. package/lib/util/brand.js +23 -83
  1486. package/lib/util/brand.js.map +1 -1
  1487. package/lib/util/idAllocator.d.ts.map +1 -1
  1488. package/lib/util/idAllocator.js +1 -1
  1489. package/lib/util/idAllocator.js.map +1 -1
  1490. package/lib/util/index.d.ts +5 -3
  1491. package/lib/util/index.d.ts.map +1 -1
  1492. package/lib/util/index.js +3 -1
  1493. package/lib/util/index.js.map +1 -1
  1494. package/lib/util/nestedSet.d.ts.map +1 -1
  1495. package/lib/util/nestedSet.js.map +1 -1
  1496. package/lib/util/opaque.d.ts +46 -0
  1497. package/lib/util/opaque.d.ts.map +1 -0
  1498. package/lib/util/opaque.js +24 -0
  1499. package/lib/util/opaque.js.map +1 -0
  1500. package/lib/util/referenceCounting.d.ts +1 -1
  1501. package/lib/util/referenceCounting.d.ts.map +1 -1
  1502. package/lib/util/referenceCounting.js +2 -2
  1503. package/lib/util/referenceCounting.js.map +1 -1
  1504. package/lib/util/typeCheckTests.d.ts +1 -1
  1505. package/lib/util/typeCheckTests.d.ts.map +1 -1
  1506. package/lib/util/typeCheckTests.js.map +1 -1
  1507. package/lib/util/typeUtils.d.ts +13 -0
  1508. package/lib/util/typeUtils.d.ts.map +1 -1
  1509. package/lib/util/typeUtils.js.map +1 -1
  1510. package/lib/util/typeboxBrand.d.ts +17 -0
  1511. package/lib/util/typeboxBrand.d.ts.map +1 -0
  1512. package/lib/util/typeboxBrand.js +27 -0
  1513. package/lib/util/typeboxBrand.js.map +1 -0
  1514. package/lib/util/utils.d.ts +2 -15
  1515. package/lib/util/utils.d.ts.map +1 -1
  1516. package/lib/util/utils.js +3 -3
  1517. package/lib/util/utils.js.map +1 -1
  1518. package/package.json +55 -50
  1519. package/src/codec/codec.ts +15 -7
  1520. package/src/codec/discriminatedUnions.ts +3 -1
  1521. package/src/codec/index.ts +8 -1
  1522. package/src/codec/noopValidator.ts +1 -0
  1523. package/src/codec/versioned/codec.ts +55 -25
  1524. package/src/codec/versioned/index.ts +5 -1
  1525. package/src/core/README.md +1 -5
  1526. package/src/core/change-family/changeFamily.ts +3 -2
  1527. package/src/core/forest/editableForest.ts +7 -5
  1528. package/src/core/forest/forest.ts +11 -4
  1529. package/src/core/index.ts +10 -8
  1530. package/src/core/rebase/changeRebaser.ts +1 -0
  1531. package/src/core/rebase/index.ts +4 -0
  1532. package/src/core/rebase/revisionTagCodec.ts +3 -1
  1533. package/src/core/rebase/types.ts +46 -1
  1534. package/src/core/rebase/utils.ts +9 -6
  1535. package/src/core/revertible/index.ts +1 -1
  1536. package/src/core/revertible/revertible.ts +17 -50
  1537. package/src/core/schema-stored/format.ts +1 -0
  1538. package/src/core/schema-stored/index.ts +5 -2
  1539. package/src/{feature-libraries → core/schema-stored}/multiplicity.ts +1 -0
  1540. package/src/core/schema-stored/schema.ts +51 -23
  1541. package/src/core/schema-stored/storedSchemaRepository.ts +4 -2
  1542. package/src/core/tree/anchorSet.ts +52 -63
  1543. package/src/core/tree/cursor.ts +3 -1
  1544. package/src/core/tree/delta.ts +1 -0
  1545. package/src/core/tree/deltaUtil.ts +2 -1
  1546. package/src/core/tree/detachedFieldIndex.ts +6 -4
  1547. package/src/core/tree/detachedFieldIndexCodec.ts +4 -2
  1548. package/src/core/tree/detachedFieldIndexFormat.ts +2 -0
  1549. package/src/core/tree/detachedFieldIndexTypes.ts +1 -0
  1550. package/src/core/tree/mapTree.ts +1 -0
  1551. package/src/core/tree/pathTree.ts +1 -0
  1552. package/src/core/tree/persistedTreeTextFormat.ts +1 -0
  1553. package/src/core/tree/sparseTree.ts +4 -2
  1554. package/src/core/tree/treeTextFormat.ts +1 -0
  1555. package/src/core/tree/types.ts +2 -1
  1556. package/src/core/tree/visitDelta.ts +65 -18
  1557. package/src/core/tree/visitPath.ts +2 -1
  1558. package/src/core/tree/visitorUtils.ts +7 -5
  1559. package/src/domains/json/jsonCursor.ts +6 -4
  1560. package/src/domains/json/jsonDomainSchema.ts +1 -2
  1561. package/src/domains/leafDomain.ts +1 -1
  1562. package/src/domains/nodeKey/nodeKeySchema.ts +5 -4
  1563. package/src/domains/schemaBuilder.ts +25 -214
  1564. package/src/domains/testRecursiveDomain.ts +2 -25
  1565. package/src/events/events.ts +2 -1
  1566. package/src/external-utilities/typeboxValidator.ts +2 -1
  1567. package/src/feature-libraries/README.md +4 -4
  1568. package/src/feature-libraries/changeAtomIdCodec.ts +4 -4
  1569. package/src/feature-libraries/chunked-forest/basicChunk.ts +12 -10
  1570. package/src/feature-libraries/chunked-forest/chunk.ts +3 -2
  1571. package/src/feature-libraries/chunked-forest/chunkTree.ts +17 -15
  1572. package/src/feature-libraries/chunked-forest/chunkedForest.ts +20 -17
  1573. package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +4 -3
  1574. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +16 -14
  1575. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +5 -3
  1576. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
  1577. package/src/feature-libraries/chunked-forest/codec/codecs.ts +9 -12
  1578. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +11 -9
  1579. package/src/feature-libraries/chunked-forest/codec/format.ts +4 -3
  1580. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -6
  1581. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +8 -6
  1582. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +13 -11
  1583. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -1
  1584. package/src/feature-libraries/chunked-forest/emptyChunk.ts +5 -4
  1585. package/src/feature-libraries/chunked-forest/index.ts +0 -1
  1586. package/src/feature-libraries/chunked-forest/sequenceChunk.ts +3 -2
  1587. package/src/feature-libraries/chunked-forest/uniformChunk.ts +11 -9
  1588. package/src/feature-libraries/contextuallyTyped.ts +23 -36
  1589. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +36 -57
  1590. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +78 -25
  1591. package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
  1592. package/src/feature-libraries/default-schema/index.ts +2 -0
  1593. package/src/feature-libraries/default-schema/noChangeCodecs.ts +12 -0
  1594. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +4 -3
  1595. package/src/feature-libraries/editableTreeBinder.ts +3 -1
  1596. package/src/feature-libraries/fieldGenerator.ts +2 -1
  1597. package/src/feature-libraries/flex-tree/README.md +2 -2
  1598. package/src/feature-libraries/flex-tree/context.ts +34 -8
  1599. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +63 -45
  1600. package/src/feature-libraries/flex-tree/index.ts +3 -3
  1601. package/src/feature-libraries/flex-tree/lazyEntity.ts +13 -23
  1602. package/src/feature-libraries/flex-tree/lazyField.ts +95 -47
  1603. package/src/feature-libraries/flex-tree/lazyNode.ts +65 -131
  1604. package/src/feature-libraries/flex-tree/nodeKeys.ts +1 -0
  1605. package/src/feature-libraries/flex-tree/treeEvents.ts +7 -73
  1606. package/src/feature-libraries/flex-tree/unboxed.ts +3 -2
  1607. package/src/feature-libraries/flex-tree/utilities.ts +1 -0
  1608. package/src/feature-libraries/forest-summary/codec.ts +3 -1
  1609. package/src/feature-libraries/forest-summary/forestSummarizer.ts +13 -11
  1610. package/src/feature-libraries/forest-summary/format.ts +2 -1
  1611. package/src/feature-libraries/index.ts +13 -12
  1612. package/src/feature-libraries/mapTreeCursor.ts +8 -6
  1613. package/src/feature-libraries/memoizedIdRangeAllocator.ts +3 -3
  1614. package/src/feature-libraries/modular-schema/comparison.ts +11 -9
  1615. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +29 -28
  1616. package/src/feature-libraries/modular-schema/fieldKind.ts +8 -4
  1617. package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +24 -0
  1618. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +7 -5
  1619. package/src/feature-libraries/modular-schema/genericFieldKind.ts +12 -20
  1620. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +18 -31
  1621. package/src/feature-libraries/modular-schema/genericFieldKindFormat.ts +2 -2
  1622. package/src/feature-libraries/modular-schema/genericFieldKindTypes.ts +4 -4
  1623. package/src/feature-libraries/modular-schema/index.ts +5 -2
  1624. package/src/feature-libraries/modular-schema/isNeverTree.ts +12 -12
  1625. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +151 -56
  1626. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +460 -251
  1627. package/src/feature-libraries/modular-schema/modularChangeFormat.ts +4 -22
  1628. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +7 -3
  1629. package/src/feature-libraries/node-key/nodeKey.ts +2 -1
  1630. package/src/feature-libraries/node-key/nodeKeyIndex.ts +5 -3
  1631. package/src/feature-libraries/node-key/nodeKeyManager.ts +6 -4
  1632. package/src/feature-libraries/object-forest/objectForest.ts +25 -23
  1633. package/src/feature-libraries/optional-field/index.ts +1 -1
  1634. package/src/feature-libraries/optional-field/optionalField.ts +38 -44
  1635. package/src/feature-libraries/optional-field/{optionalFieldChangeFormat.ts → optionalFieldChangeFormatV1.ts} +10 -1
  1636. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV2.ts +60 -0
  1637. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +4 -7
  1638. package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +204 -0
  1639. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +135 -0
  1640. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +11 -207
  1641. package/src/feature-libraries/schema-aware/README.md +1 -1
  1642. package/src/feature-libraries/schema-aware/schemaAware.ts +13 -9
  1643. package/src/feature-libraries/schema-edits/index.ts +1 -1
  1644. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +23 -3
  1645. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +1 -0
  1646. package/src/feature-libraries/schema-edits/schemaChangeTypes.ts +6 -0
  1647. package/src/feature-libraries/schema-index/codec.ts +8 -7
  1648. package/src/feature-libraries/schema-index/format.ts +1 -0
  1649. package/src/feature-libraries/schema-index/schemaSummarizer.ts +10 -8
  1650. package/src/feature-libraries/schemaBuilder.ts +2 -1
  1651. package/src/feature-libraries/schemaBuilderBase.ts +16 -14
  1652. package/src/feature-libraries/sequence-field/compose.ts +283 -176
  1653. package/src/feature-libraries/sequence-field/format.ts +2 -1
  1654. package/src/feature-libraries/sequence-field/helperTypes.ts +5 -5
  1655. package/src/feature-libraries/sequence-field/index.ts +4 -5
  1656. package/src/feature-libraries/sequence-field/invert.ts +49 -82
  1657. package/src/feature-libraries/sequence-field/markListFactory.ts +4 -4
  1658. package/src/feature-libraries/sequence-field/markQueue.ts +12 -10
  1659. package/src/feature-libraries/sequence-field/moveEffectTable.ts +61 -31
  1660. package/src/feature-libraries/sequence-field/prune.ts +4 -8
  1661. package/src/feature-libraries/sequence-field/rebase.ts +128 -141
  1662. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +9 -10
  1663. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +3 -2
  1664. package/src/feature-libraries/sequence-field/sequenceFieldChangeRebaser.ts +3 -2
  1665. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +31 -38
  1666. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +38 -59
  1667. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +15 -15
  1668. package/src/feature-libraries/sequence-field/types.ts +7 -9
  1669. package/src/feature-libraries/sequence-field/utils.ts +95 -76
  1670. package/src/feature-libraries/storedToViewSchema.ts +13 -12
  1671. package/src/feature-libraries/treeCursorUtils.ts +9 -8
  1672. package/src/feature-libraries/treeTextCursor.ts +12 -10
  1673. package/src/feature-libraries/typed-schema/flexList.ts +1 -3
  1674. package/src/feature-libraries/typed-schema/index.ts +0 -2
  1675. package/src/feature-libraries/typed-schema/schemaCollection.ts +11 -10
  1676. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -6
  1677. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +32 -18
  1678. package/src/feature-libraries/typed-schema/view.ts +6 -5
  1679. package/src/feature-libraries/valueUtilities.ts +11 -9
  1680. package/src/index.ts +34 -26
  1681. package/src/packageVersion.ts +1 -1
  1682. package/src/shared-tree/index.ts +9 -1
  1683. package/src/shared-tree/schematizeTree.ts +12 -10
  1684. package/src/shared-tree/schematizingTreeView.ts +47 -28
  1685. package/src/shared-tree/sharedTree.ts +131 -44
  1686. package/src/shared-tree/sharedTreeChangeCodecs.ts +79 -62
  1687. package/src/shared-tree/sharedTreeChangeFamily.ts +13 -7
  1688. package/src/shared-tree/sharedTreeChangeFormat.ts +4 -3
  1689. package/src/shared-tree/sharedTreeEditBuilder.ts +5 -1
  1690. package/src/shared-tree/treeApi.ts +141 -10
  1691. package/src/shared-tree/treeCheckout.ts +203 -60
  1692. package/src/shared-tree/treeView.ts +5 -4
  1693. package/src/shared-tree-core/branch.ts +20 -204
  1694. package/src/shared-tree-core/editManager.ts +20 -78
  1695. package/src/shared-tree-core/editManagerCodecs.ts +111 -63
  1696. package/src/shared-tree-core/editManagerFormat.ts +7 -8
  1697. package/src/shared-tree-core/editManagerSummarizer.ts +14 -36
  1698. package/src/shared-tree-core/index.ts +2 -0
  1699. package/src/shared-tree-core/messageCodecs.ts +62 -5
  1700. package/src/shared-tree-core/messageFormat.ts +12 -2
  1701. package/src/shared-tree-core/messageTypes.ts +1 -0
  1702. package/src/shared-tree-core/sequenceIdUtils.ts +1 -0
  1703. package/src/shared-tree-core/sharedTreeCore.ts +40 -22
  1704. package/src/simple-tree/ProxyBinding.md +102 -0
  1705. package/src/simple-tree/README.md +0 -6
  1706. package/src/simple-tree/arrayNode.ts +769 -0
  1707. package/src/simple-tree/index.ts +16 -9
  1708. package/src/simple-tree/leafNodeSchema.ts +72 -0
  1709. package/src/simple-tree/mapNode.ts +343 -0
  1710. package/src/simple-tree/objectNode.ts +411 -0
  1711. package/src/simple-tree/proxies.ts +197 -932
  1712. package/src/simple-tree/proxyBinding.ts +182 -0
  1713. package/src/simple-tree/rawNode.ts +19 -135
  1714. package/src/simple-tree/schemaCaching.ts +90 -0
  1715. package/src/simple-tree/schemaCreationUtilities.ts +6 -9
  1716. package/src/simple-tree/schemaFactory.ts +247 -261
  1717. package/src/simple-tree/schemaFactoryRecursive.ts +32 -185
  1718. package/src/simple-tree/schemaTypes.ts +149 -81
  1719. package/src/simple-tree/testRecursiveDomain.ts +3 -3
  1720. package/src/simple-tree/toFlexSchema.ts +39 -47
  1721. package/src/simple-tree/toMapTree.ts +236 -196
  1722. package/src/simple-tree/tree.ts +24 -3
  1723. package/src/simple-tree/treeApi.ts +209 -24
  1724. package/src/simple-tree/types.ts +1 -173
  1725. package/src/simple-tree/typesUnsafe.ts +42 -21
  1726. package/src/treeFactory.ts +51 -26
  1727. package/src/util/brand.ts +36 -168
  1728. package/src/util/idAllocator.ts +2 -1
  1729. package/src/util/index.ts +4 -18
  1730. package/src/util/nestedSet.ts +1 -1
  1731. package/src/util/opaque.ts +68 -0
  1732. package/src/util/referenceCounting.ts +3 -3
  1733. package/src/util/typeCheckTests.ts +7 -7
  1734. package/src/util/typeUtils.ts +14 -0
  1735. package/src/util/typeboxBrand.ts +31 -0
  1736. package/src/util/utils.ts +3 -17
  1737. package/tsconfig.json +1 -1
  1738. package/api-extractor-cjs.json +0 -18
  1739. package/api-extractor-esm.json +0 -14
  1740. package/dist/feature-libraries/multiplicity.d.ts.map +0 -1
  1741. package/dist/feature-libraries/multiplicity.js.map +0 -1
  1742. package/dist/feature-libraries/optional-field/optionalFieldChangeFormat.d.ts.map +0 -1
  1743. package/dist/feature-libraries/optional-field/optionalFieldChangeFormat.js.map +0 -1
  1744. package/dist/simple-tree/flexNode.d.ts +0 -35
  1745. package/dist/simple-tree/flexNode.d.ts.map +0 -1
  1746. package/dist/simple-tree/flexNode.js +0 -62
  1747. package/dist/simple-tree/flexNode.js.map +0 -1
  1748. package/dist/simple-tree/treeArrayNode.d.ts +0 -46
  1749. package/dist/simple-tree/treeArrayNode.d.ts.map +0 -1
  1750. package/dist/simple-tree/treeArrayNode.js +0 -50
  1751. package/dist/simple-tree/treeArrayNode.js.map +0 -1
  1752. package/dist/tree-alpha.d.ts +0 -2159
  1753. package/dist/tree-beta.d.ts +0 -2159
  1754. package/dist/tree-public.d.ts +0 -1942
  1755. package/dist/tree-untrimmed.d.ts +0 -6880
  1756. package/lib/feature-libraries/multiplicity.d.ts.map +0 -1
  1757. package/lib/feature-libraries/optional-field/optionalFieldChangeFormat.d.ts.map +0 -1
  1758. package/lib/feature-libraries/optional-field/optionalFieldChangeFormat.js.map +0 -1
  1759. package/lib/simple-tree/flexNode.d.ts +0 -35
  1760. package/lib/simple-tree/flexNode.d.ts.map +0 -1
  1761. package/lib/simple-tree/flexNode.js +0 -55
  1762. package/lib/simple-tree/flexNode.js.map +0 -1
  1763. package/lib/simple-tree/treeArrayNode.d.ts +0 -46
  1764. package/lib/simple-tree/treeArrayNode.d.ts.map +0 -1
  1765. package/lib/simple-tree/treeArrayNode.js +0 -46
  1766. package/lib/simple-tree/treeArrayNode.js.map +0 -1
  1767. package/lib/test/codec/ajvValidator.cjs +0 -70
  1768. package/lib/test/codec/ajvValidator.cjs.map +0 -1
  1769. package/lib/test/codec/ajvValidator.d.cts +0 -13
  1770. package/lib/test/codec/ajvValidator.d.cts.map +0 -1
  1771. package/lib/test/codec/codec.spec.d.ts.map +0 -1
  1772. package/lib/test/codec/codec.spec.js +0 -36
  1773. package/lib/test/codec/codec.spec.js.map +0 -1
  1774. package/lib/test/codec/index.d.ts +0 -7
  1775. package/lib/test/codec/index.d.ts.map +0 -1
  1776. package/lib/test/codec/index.js +0 -7
  1777. package/lib/test/codec/index.js.map +0 -1
  1778. package/lib/test/codec/utils.d.ts +0 -58
  1779. package/lib/test/codec/utils.d.ts.map +0 -1
  1780. package/lib/test/codec/utils.js +0 -61
  1781. package/lib/test/codec/utils.js.map +0 -1
  1782. package/lib/test/cursorTestSuite.d.ts +0 -106
  1783. package/lib/test/cursorTestSuite.d.ts.map +0 -1
  1784. package/lib/test/cursorTestSuite.js +0 -680
  1785. package/lib/test/cursorTestSuite.js.map +0 -1
  1786. package/lib/test/domains/json/benchmarks.d.ts +0 -17
  1787. package/lib/test/domains/json/benchmarks.d.ts.map +0 -1
  1788. package/lib/test/domains/json/benchmarks.js +0 -61
  1789. package/lib/test/domains/json/benchmarks.js.map +0 -1
  1790. package/lib/test/domains/json/canada.d.ts +0 -33
  1791. package/lib/test/domains/json/canada.d.ts.map +0 -1
  1792. package/lib/test/domains/json/canada.js +0 -81
  1793. package/lib/test/domains/json/canada.js.map +0 -1
  1794. package/lib/test/domains/json/citm.d.ts +0 -81
  1795. package/lib/test/domains/json/citm.d.ts.map +0 -1
  1796. package/lib/test/domains/json/citm.js +0 -515
  1797. package/lib/test/domains/json/citm.js.map +0 -1
  1798. package/lib/test/domains/json/jsDirectObject.bench.d.ts +0 -13
  1799. package/lib/test/domains/json/jsDirectObject.bench.d.ts.map +0 -1
  1800. package/lib/test/domains/json/jsDirectObject.bench.js +0 -74
  1801. package/lib/test/domains/json/jsDirectObject.bench.js.map +0 -1
  1802. package/lib/test/domains/json/jsObjectUtil.d.ts +0 -12
  1803. package/lib/test/domains/json/jsObjectUtil.d.ts.map +0 -1
  1804. package/lib/test/domains/json/jsObjectUtil.js +0 -36
  1805. package/lib/test/domains/json/jsObjectUtil.js.map +0 -1
  1806. package/lib/test/domains/json/jsonCursor.bench.d.ts +0 -11
  1807. package/lib/test/domains/json/jsonCursor.bench.d.ts.map +0 -1
  1808. package/lib/test/domains/json/jsonCursor.bench.js +0 -220
  1809. package/lib/test/domains/json/jsonCursor.bench.js.map +0 -1
  1810. package/lib/test/domains/json/jsonCursor.spec.d.ts +0 -6
  1811. package/lib/test/domains/json/jsonCursor.spec.d.ts.map +0 -1
  1812. package/lib/test/domains/json/jsonCursor.spec.js +0 -75
  1813. package/lib/test/domains/json/jsonCursor.spec.js.map +0 -1
  1814. package/lib/test/domains/json/jsonGeneratorUtils.d.ts +0 -9
  1815. package/lib/test/domains/json/jsonGeneratorUtils.d.ts.map +0 -1
  1816. package/lib/test/domains/json/jsonGeneratorUtils.js +0 -36
  1817. package/lib/test/domains/json/jsonGeneratorUtils.js.map +0 -1
  1818. package/lib/test/domains/json/twitter.d.ts +0 -204
  1819. package/lib/test/domains/json/twitter.d.ts.map +0 -1
  1820. package/lib/test/domains/json/twitter.js +0 -7413
  1821. package/lib/test/domains/json/twitter.js.map +0 -1
  1822. package/lib/test/domains/schemaBuilder.spec.d.ts +0 -6
  1823. package/lib/test/domains/schemaBuilder.spec.d.ts.map +0 -1
  1824. package/lib/test/domains/schemaBuilder.spec.js +0 -148
  1825. package/lib/test/domains/schemaBuilder.spec.js.map +0 -1
  1826. package/lib/test/editMinter.d.ts +0 -8
  1827. package/lib/test/editMinter.d.ts.map +0 -1
  1828. package/lib/test/editMinter.js +0 -21
  1829. package/lib/test/editMinter.js.map +0 -1
  1830. package/lib/test/events/eventEmitter.spec.d.ts +0 -6
  1831. package/lib/test/events/eventEmitter.spec.d.ts.map +0 -1
  1832. package/lib/test/events/eventEmitter.spec.js +0 -159
  1833. package/lib/test/events/eventEmitter.spec.js.map +0 -1
  1834. package/lib/test/exhaustiveRebaserUtils.d.ts +0 -78
  1835. package/lib/test/exhaustiveRebaserUtils.d.ts.map +0 -1
  1836. package/lib/test/exhaustiveRebaserUtils.js +0 -53
  1837. package/lib/test/exhaustiveRebaserUtils.js.map +0 -1
  1838. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.d.ts +0 -6
  1839. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.d.ts.map +0 -1
  1840. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.js +0 -161
  1841. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.js.map +0 -1
  1842. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.d.ts +0 -2
  1843. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.d.ts.map +0 -1
  1844. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.js +0 -102
  1845. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.js.map +0 -1
  1846. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.d.ts +0 -6
  1847. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.d.ts.map +0 -1
  1848. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.js +0 -259
  1849. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.js.map +0 -1
  1850. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.d.ts +0 -6
  1851. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.d.ts.map +0 -1
  1852. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.js +0 -47
  1853. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.js.map +0 -1
  1854. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.d.ts +0 -9
  1855. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.d.ts.map +0 -1
  1856. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.js +0 -124
  1857. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.js.map +0 -1
  1858. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.d.ts +0 -6
  1859. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.d.ts.map +0 -1
  1860. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.js +0 -187
  1861. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.js.map +0 -1
  1862. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.d.ts +0 -6
  1863. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.d.ts.map +0 -1
  1864. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.js +0 -308
  1865. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.js.map +0 -1
  1866. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.d.ts +0 -6
  1867. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.d.ts.map +0 -1
  1868. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.js +0 -123
  1869. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.js.map +0 -1
  1870. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.d.ts +0 -7
  1871. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.d.ts.map +0 -1
  1872. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.js +0 -135
  1873. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.js.map +0 -1
  1874. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.d.ts +0 -11
  1875. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.d.ts.map +0 -1
  1876. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.js +0 -211
  1877. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.js.map +0 -1
  1878. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.d.ts +0 -6
  1879. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.d.ts.map +0 -1
  1880. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.js +0 -15
  1881. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.js.map +0 -1
  1882. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.d.ts +0 -6
  1883. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.d.ts.map +0 -1
  1884. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.js +0 -98
  1885. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.js.map +0 -1
  1886. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.d.ts +0 -6
  1887. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.d.ts.map +0 -1
  1888. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.js +0 -176
  1889. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.js.map +0 -1
  1890. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.d.ts +0 -6
  1891. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.d.ts.map +0 -1
  1892. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.js +0 -29
  1893. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.js.map +0 -1
  1894. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.d.ts +0 -12
  1895. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.d.ts.map +0 -1
  1896. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.js +0 -38
  1897. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.js.map +0 -1
  1898. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.d.ts +0 -6
  1899. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.d.ts.map +0 -1
  1900. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.js +0 -138
  1901. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.js.map +0 -1
  1902. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.d.ts +0 -34
  1903. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.d.ts.map +0 -1
  1904. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.js +0 -114
  1905. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.js.map +0 -1
  1906. package/lib/test/feature-libraries/contextuallyTyped.spec.d.ts +0 -6
  1907. package/lib/test/feature-libraries/contextuallyTyped.spec.d.ts.map +0 -1
  1908. package/lib/test/feature-libraries/contextuallyTyped.spec.js +0 -107
  1909. package/lib/test/feature-libraries/contextuallyTyped.spec.js.map +0 -1
  1910. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.d.ts +0 -6
  1911. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.d.ts.map +0 -1
  1912. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.js +0 -850
  1913. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.js.map +0 -1
  1914. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.d.ts +0 -6
  1915. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.d.ts.map +0 -1
  1916. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.js +0 -110
  1917. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.js.map +0 -1
  1918. package/lib/test/feature-libraries/deltaUtils.spec.d.ts +0 -6
  1919. package/lib/test/feature-libraries/deltaUtils.spec.d.ts.map +0 -1
  1920. package/lib/test/feature-libraries/deltaUtils.spec.js +0 -87
  1921. package/lib/test/feature-libraries/deltaUtils.spec.js.map +0 -1
  1922. package/lib/test/feature-libraries/fieldKindTestUtils.d.ts +0 -20
  1923. package/lib/test/feature-libraries/fieldKindTestUtils.d.ts.map +0 -1
  1924. package/lib/test/feature-libraries/fieldKindTestUtils.js +0 -42
  1925. package/lib/test/feature-libraries/fieldKindTestUtils.js.map +0 -1
  1926. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.d.ts +0 -6
  1927. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.d.ts.map +0 -1
  1928. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.js +0 -91
  1929. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.js.map +0 -1
  1930. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.d.ts +0 -6
  1931. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.d.ts.map +0 -1
  1932. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.js +0 -225
  1933. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.js.map +0 -1
  1934. package/lib/test/feature-libraries/flex-tree/events.spec.d.ts +0 -2
  1935. package/lib/test/feature-libraries/flex-tree/events.spec.d.ts.map +0 -1
  1936. package/lib/test/feature-libraries/flex-tree/events.spec.js +0 -605
  1937. package/lib/test/feature-libraries/flex-tree/events.spec.js.map +0 -1
  1938. package/lib/test/feature-libraries/flex-tree/lazyField.spec.d.ts +0 -6
  1939. package/lib/test/feature-libraries/flex-tree/lazyField.spec.d.ts.map +0 -1
  1940. package/lib/test/feature-libraries/flex-tree/lazyField.spec.js +0 -326
  1941. package/lib/test/feature-libraries/flex-tree/lazyField.spec.js.map +0 -1
  1942. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.d.ts +0 -6
  1943. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.d.ts.map +0 -1
  1944. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.js +0 -381
  1945. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.js.map +0 -1
  1946. package/lib/test/feature-libraries/flex-tree/navigation.spec.d.ts +0 -6
  1947. package/lib/test/feature-libraries/flex-tree/navigation.spec.d.ts.map +0 -1
  1948. package/lib/test/feature-libraries/flex-tree/navigation.spec.js +0 -50
  1949. package/lib/test/feature-libraries/flex-tree/navigation.spec.js.map +0 -1
  1950. package/lib/test/feature-libraries/flex-tree/unboxed.spec.d.ts +0 -6
  1951. package/lib/test/feature-libraries/flex-tree/unboxed.spec.d.ts.map +0 -1
  1952. package/lib/test/feature-libraries/flex-tree/unboxed.spec.js +0 -197
  1953. package/lib/test/feature-libraries/flex-tree/unboxed.spec.js.map +0 -1
  1954. package/lib/test/feature-libraries/flex-tree/utilities.spec.d.ts +0 -6
  1955. package/lib/test/feature-libraries/flex-tree/utilities.spec.d.ts.map +0 -1
  1956. package/lib/test/feature-libraries/flex-tree/utilities.spec.js +0 -109
  1957. package/lib/test/feature-libraries/flex-tree/utilities.spec.js.map +0 -1
  1958. package/lib/test/feature-libraries/flex-tree/utils.d.ts +0 -32
  1959. package/lib/test/feature-libraries/flex-tree/utils.d.ts.map +0 -1
  1960. package/lib/test/feature-libraries/flex-tree/utils.js +0 -50
  1961. package/lib/test/feature-libraries/flex-tree/utils.js.map +0 -1
  1962. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.d.ts +0 -6
  1963. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.d.ts.map +0 -1
  1964. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.js +0 -115
  1965. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.js.map +0 -1
  1966. package/lib/test/feature-libraries/mapTreeCursor.spec.d.ts +0 -6
  1967. package/lib/test/feature-libraries/mapTreeCursor.spec.d.ts.map +0 -1
  1968. package/lib/test/feature-libraries/mapTreeCursor.spec.js +0 -8
  1969. package/lib/test/feature-libraries/mapTreeCursor.spec.js.map +0 -1
  1970. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.d.ts +0 -6
  1971. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.d.ts.map +0 -1
  1972. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.js +0 -80
  1973. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.js.map +0 -1
  1974. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.d.ts +0 -6
  1975. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.d.ts.map +0 -1
  1976. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.js +0 -96
  1977. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.js.map +0 -1
  1978. package/lib/test/feature-libraries/modular-schema/basicRebasers.d.ts +0 -44
  1979. package/lib/test/feature-libraries/modular-schema/basicRebasers.d.ts.map +0 -1
  1980. package/lib/test/feature-libraries/modular-schema/basicRebasers.js +0 -77
  1981. package/lib/test/feature-libraries/modular-schema/basicRebasers.js.map +0 -1
  1982. package/lib/test/feature-libraries/modular-schema/comparison.spec.d.ts +0 -6
  1983. package/lib/test/feature-libraries/modular-schema/comparison.spec.d.ts.map +0 -1
  1984. package/lib/test/feature-libraries/modular-schema/comparison.spec.js +0 -264
  1985. package/lib/test/feature-libraries/modular-schema/comparison.spec.js.map +0 -1
  1986. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.d.ts +0 -6
  1987. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.d.ts.map +0 -1
  1988. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.js +0 -345
  1989. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.js.map +0 -1
  1990. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.d.ts +0 -6
  1991. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.d.ts.map +0 -1
  1992. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.js +0 -49
  1993. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.js.map +0 -1
  1994. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.d.ts +0 -6
  1995. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.d.ts.map +0 -1
  1996. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.js +0 -126
  1997. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.js.map +0 -1
  1998. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.d.ts +0 -6
  1999. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.d.ts.map +0 -1
  2000. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.js +0 -1070
  2001. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.js.map +0 -1
  2002. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.d.ts +0 -6
  2003. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.d.ts.map +0 -1
  2004. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.js +0 -182
  2005. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.js.map +0 -1
  2006. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.d.ts +0 -6
  2007. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.d.ts.map +0 -1
  2008. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.js +0 -390
  2009. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.js.map +0 -1
  2010. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.d.ts +0 -6
  2011. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.d.ts.map +0 -1
  2012. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.js +0 -556
  2013. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.js.map +0 -1
  2014. package/lib/test/feature-libraries/node-key/nodeKey.spec.d.ts +0 -6
  2015. package/lib/test/feature-libraries/node-key/nodeKey.spec.d.ts.map +0 -1
  2016. package/lib/test/feature-libraries/node-key/nodeKey.spec.js +0 -74
  2017. package/lib/test/feature-libraries/node-key/nodeKey.spec.js.map +0 -1
  2018. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.d.ts +0 -6
  2019. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.d.ts.map +0 -1
  2020. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.js +0 -258
  2021. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.js.map +0 -1
  2022. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.d.ts +0 -6
  2023. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.d.ts.map +0 -1
  2024. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.js +0 -262
  2025. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.js.map +0 -1
  2026. package/lib/test/feature-libraries/objectForest.spec.d.ts +0 -6
  2027. package/lib/test/feature-libraries/objectForest.spec.d.ts.map +0 -1
  2028. package/lib/test/feature-libraries/objectForest.spec.js +0 -62
  2029. package/lib/test/feature-libraries/objectForest.spec.js.map +0 -1
  2030. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.d.ts +0 -6
  2031. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.d.ts.map +0 -1
  2032. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.js +0 -352
  2033. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.js.map +0 -1
  2034. package/lib/test/feature-libraries/optional-field/optionalField.spec.d.ts +0 -6
  2035. package/lib/test/feature-libraries/optional-field/optionalField.spec.d.ts.map +0 -1
  2036. package/lib/test/feature-libraries/optional-field/optionalField.spec.js +0 -396
  2037. package/lib/test/feature-libraries/optional-field/optionalField.spec.js.map +0 -1
  2038. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.d.ts +0 -6
  2039. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.d.ts.map +0 -1
  2040. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.js +0 -50
  2041. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.js.map +0 -1
  2042. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.d.ts +0 -6
  2043. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.d.ts.map +0 -1
  2044. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.js +0 -59
  2045. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.js.map +0 -1
  2046. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.d.ts +0 -62
  2047. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.d.ts.map +0 -1
  2048. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.js +0 -232
  2049. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.js.map +0 -1
  2050. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.d.ts +0 -6
  2051. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.d.ts.map +0 -1
  2052. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.js +0 -133
  2053. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.js.map +0 -1
  2054. package/lib/test/feature-libraries/schema-aware/schemaComplex.d.ts +0 -16
  2055. package/lib/test/feature-libraries/schema-aware/schemaComplex.d.ts.map +0 -1
  2056. package/lib/test/feature-libraries/schema-aware/schemaComplex.js +0 -40
  2057. package/lib/test/feature-libraries/schema-aware/schemaComplex.js.map +0 -1
  2058. package/lib/test/feature-libraries/schema-aware/schemaSimple.d.ts +0 -13
  2059. package/lib/test/feature-libraries/schema-aware/schemaSimple.d.ts.map +0 -1
  2060. package/lib/test/feature-libraries/schema-aware/schemaSimple.js +0 -28
  2061. package/lib/test/feature-libraries/schema-aware/schemaSimple.js.map +0 -1
  2062. package/lib/test/feature-libraries/schema-index/codec.spec.d.ts +0 -6
  2063. package/lib/test/feature-libraries/schema-index/codec.spec.d.ts.map +0 -1
  2064. package/lib/test/feature-libraries/schema-index/codec.spec.js +0 -81
  2065. package/lib/test/feature-libraries/schema-index/codec.spec.js.map +0 -1
  2066. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.d.ts +0 -6
  2067. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.d.ts.map +0 -1
  2068. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.js +0 -28
  2069. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.js.map +0 -1
  2070. package/lib/test/feature-libraries/schemaBuilder.spec.d.ts +0 -6
  2071. package/lib/test/feature-libraries/schemaBuilder.spec.d.ts.map +0 -1
  2072. package/lib/test/feature-libraries/schemaBuilder.spec.js +0 -88
  2073. package/lib/test/feature-libraries/schemaBuilder.spec.js.map +0 -1
  2074. package/lib/test/feature-libraries/sequence-field/compose.test.d.ts +0 -6
  2075. package/lib/test/feature-libraries/sequence-field/compose.test.d.ts.map +0 -1
  2076. package/lib/test/feature-libraries/sequence-field/compose.test.js +0 -1431
  2077. package/lib/test/feature-libraries/sequence-field/compose.test.js.map +0 -1
  2078. package/lib/test/feature-libraries/sequence-field/invert.test.d.ts +0 -6
  2079. package/lib/test/feature-libraries/sequence-field/invert.test.d.ts.map +0 -1
  2080. package/lib/test/feature-libraries/sequence-field/invert.test.js +0 -418
  2081. package/lib/test/feature-libraries/sequence-field/invert.test.js.map +0 -1
  2082. package/lib/test/feature-libraries/sequence-field/markListFactory.test.d.ts +0 -6
  2083. package/lib/test/feature-libraries/sequence-field/markListFactory.test.d.ts.map +0 -1
  2084. package/lib/test/feature-libraries/sequence-field/markListFactory.test.js +0 -239
  2085. package/lib/test/feature-libraries/sequence-field/markListFactory.test.js.map +0 -1
  2086. package/lib/test/feature-libraries/sequence-field/populatedMarks.d.ts +0 -18
  2087. package/lib/test/feature-libraries/sequence-field/populatedMarks.d.ts.map +0 -1
  2088. package/lib/test/feature-libraries/sequence-field/populatedMarks.js +0 -95
  2089. package/lib/test/feature-libraries/sequence-field/populatedMarks.js.map +0 -1
  2090. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.d.ts +0 -12
  2091. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.d.ts.map +0 -1
  2092. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.js +0 -35
  2093. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.js.map +0 -1
  2094. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.d.ts +0 -6
  2095. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.d.ts.map +0 -1
  2096. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.js +0 -42
  2097. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.js.map +0 -1
  2098. package/lib/test/feature-libraries/sequence-field/rebase.test.d.ts +0 -6
  2099. package/lib/test/feature-libraries/sequence-field/rebase.test.d.ts.map +0 -1
  2100. package/lib/test/feature-libraries/sequence-field/rebase.test.js +0 -1038
  2101. package/lib/test/feature-libraries/sequence-field/rebase.test.js.map +0 -1
  2102. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.d.ts +0 -6
  2103. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.d.ts.map +0 -1
  2104. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.js +0 -211
  2105. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.js.map +0 -1
  2106. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.d.ts +0 -11
  2107. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.d.ts.map +0 -1
  2108. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.js +0 -784
  2109. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.js.map +0 -1
  2110. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.d.ts +0 -6
  2111. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.d.ts.map +0 -1
  2112. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.js +0 -36
  2113. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.js.map +0 -1
  2114. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.d.ts +0 -6
  2115. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.d.ts.map +0 -1
  2116. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.js +0 -34
  2117. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.js.map +0 -1
  2118. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.d.ts +0 -6
  2119. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.d.ts.map +0 -1
  2120. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.js +0 -38
  2121. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.js.map +0 -1
  2122. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.d.ts +0 -6
  2123. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.d.ts.map +0 -1
  2124. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.js +0 -34
  2125. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.js.map +0 -1
  2126. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.d.ts +0 -6
  2127. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.d.ts.map +0 -1
  2128. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.js +0 -417
  2129. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.js.map +0 -1
  2130. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.d.ts +0 -6
  2131. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.d.ts.map +0 -1
  2132. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.js +0 -40
  2133. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.js.map +0 -1
  2134. package/lib/test/feature-libraries/sequence-field/testEdits.d.ts +0 -124
  2135. package/lib/test/feature-libraries/sequence-field/testEdits.d.ts.map +0 -1
  2136. package/lib/test/feature-libraries/sequence-field/testEdits.js +0 -270
  2137. package/lib/test/feature-libraries/sequence-field/testEdits.js.map +0 -1
  2138. package/lib/test/feature-libraries/sequence-field/utils.d.ts +0 -106
  2139. package/lib/test/feature-libraries/sequence-field/utils.d.ts.map +0 -1
  2140. package/lib/test/feature-libraries/sequence-field/utils.js +0 -535
  2141. package/lib/test/feature-libraries/sequence-field/utils.js.map +0 -1
  2142. package/lib/test/feature-libraries/storedToViewSchema.spec.d.ts +0 -6
  2143. package/lib/test/feature-libraries/storedToViewSchema.spec.d.ts.map +0 -1
  2144. package/lib/test/feature-libraries/storedToViewSchema.spec.js +0 -117
  2145. package/lib/test/feature-libraries/storedToViewSchema.spec.js.map +0 -1
  2146. package/lib/test/feature-libraries/treeCursorUtils.spec.d.ts +0 -6
  2147. package/lib/test/feature-libraries/treeCursorUtils.spec.d.ts.map +0 -1
  2148. package/lib/test/feature-libraries/treeCursorUtils.spec.js +0 -237
  2149. package/lib/test/feature-libraries/treeCursorUtils.spec.js.map +0 -1
  2150. package/lib/test/feature-libraries/treeTextCursor.spec.d.ts +0 -6
  2151. package/lib/test/feature-libraries/treeTextCursor.spec.d.ts.map +0 -1
  2152. package/lib/test/feature-libraries/treeTextCursor.spec.js +0 -8
  2153. package/lib/test/feature-libraries/treeTextCursor.spec.js.map +0 -1
  2154. package/lib/test/feature-libraries/typedSchema/example.spec.d.ts +0 -6
  2155. package/lib/test/feature-libraries/typedSchema/example.spec.d.ts.map +0 -1
  2156. package/lib/test/feature-libraries/typedSchema/example.spec.js +0 -20
  2157. package/lib/test/feature-libraries/typedSchema/example.spec.js.map +0 -1
  2158. package/lib/test/feature-libraries/typedSchema/flexList.spec.d.ts +0 -6
  2159. package/lib/test/feature-libraries/typedSchema/flexList.spec.d.ts.map +0 -1
  2160. package/lib/test/feature-libraries/typedSchema/flexList.spec.js +0 -52
  2161. package/lib/test/feature-libraries/typedSchema/flexList.spec.js.map +0 -1
  2162. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.d.ts +0 -6
  2163. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.d.ts.map +0 -1
  2164. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.js +0 -10
  2165. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.js.map +0 -1
  2166. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.d.ts +0 -6
  2167. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.d.ts.map +0 -1
  2168. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.js +0 -83
  2169. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.js.map +0 -1
  2170. package/lib/test/feature-libraries/valueUtilities.spec.d.ts +0 -6
  2171. package/lib/test/feature-libraries/valueUtilities.spec.d.ts.map +0 -1
  2172. package/lib/test/feature-libraries/valueUtilities.spec.js +0 -69
  2173. package/lib/test/feature-libraries/valueUtilities.spec.js.map +0 -1
  2174. package/lib/test/forestTestSuite.d.ts +0 -26
  2175. package/lib/test/forestTestSuite.d.ts.map +0 -1
  2176. package/lib/test/forestTestSuite.js +0 -793
  2177. package/lib/test/forestTestSuite.js.map +0 -1
  2178. package/lib/test/objMerge.d.ts +0 -24
  2179. package/lib/test/objMerge.d.ts.map +0 -1
  2180. package/lib/test/objMerge.js +0 -181
  2181. package/lib/test/objMerge.js.map +0 -1
  2182. package/lib/test/rebase/findAncestor.spec.d.ts +0 -6
  2183. package/lib/test/rebase/findAncestor.spec.d.ts.map +0 -1
  2184. package/lib/test/rebase/findAncestor.spec.js +0 -139
  2185. package/lib/test/rebase/findAncestor.spec.js.map +0 -1
  2186. package/lib/test/rebase/fuzz.d.ts +0 -16
  2187. package/lib/test/rebase/fuzz.d.ts.map +0 -1
  2188. package/lib/test/rebase/fuzz.js +0 -57
  2189. package/lib/test/rebase/fuzz.js.map +0 -1
  2190. package/lib/test/rebase/generateFuzzyCombinedChange.spec.d.ts +0 -6
  2191. package/lib/test/rebase/generateFuzzyCombinedChange.spec.d.ts.map +0 -1
  2192. package/lib/test/rebase/generateFuzzyCombinedChange.spec.js +0 -42
  2193. package/lib/test/rebase/generateFuzzyCombinedChange.spec.js.map +0 -1
  2194. package/lib/test/rebase/rebaseBranch.spec.d.ts +0 -6
  2195. package/lib/test/rebase/rebaseBranch.spec.d.ts.map +0 -1
  2196. package/lib/test/rebase/rebaseBranch.spec.js +0 -208
  2197. package/lib/test/rebase/rebaseBranch.spec.js.map +0 -1
  2198. package/lib/test/rebase/rebaser.spec.d.ts +0 -14
  2199. package/lib/test/rebase/rebaser.spec.d.ts.map +0 -1
  2200. package/lib/test/rebase/rebaser.spec.js +0 -166
  2201. package/lib/test/rebase/rebaser.spec.js.map +0 -1
  2202. package/lib/test/rebase/revisionTagCodec.spec.d.ts +0 -6
  2203. package/lib/test/rebase/revisionTagCodec.spec.d.ts.map +0 -1
  2204. package/lib/test/rebase/revisionTagCodec.spec.js +0 -56
  2205. package/lib/test/rebase/revisionTagCodec.spec.js.map +0 -1
  2206. package/lib/test/rebase/verifyChangeRebaser.spec.d.ts +0 -6
  2207. package/lib/test/rebase/verifyChangeRebaser.spec.d.ts.map +0 -1
  2208. package/lib/test/rebase/verifyChangeRebaser.spec.js +0 -52
  2209. package/lib/test/rebase/verifyChangeRebaser.spec.js.map +0 -1
  2210. package/lib/test/rebaserAxiomaticTests.d.ts +0 -15
  2211. package/lib/test/rebaserAxiomaticTests.d.ts.map +0 -1
  2212. package/lib/test/rebaserAxiomaticTests.js +0 -202
  2213. package/lib/test/rebaserAxiomaticTests.js.map +0 -1
  2214. package/lib/test/scalableTestTrees.d.ts +0 -89
  2215. package/lib/test/scalableTestTrees.d.ts.map +0 -1
  2216. package/lib/test/scalableTestTrees.js +0 -188
  2217. package/lib/test/scalableTestTrees.js.map +0 -1
  2218. package/lib/test/shared-tree/editing.spec.d.ts +0 -2
  2219. package/lib/test/shared-tree/editing.spec.d.ts.map +0 -1
  2220. package/lib/test/shared-tree/editing.spec.js +0 -2091
  2221. package/lib/test/shared-tree/editing.spec.js.map +0 -1
  2222. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.d.ts +0 -2
  2223. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.d.ts.map +0 -1
  2224. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.js +0 -161
  2225. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.js.map +0 -1
  2226. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.d.ts +0 -2
  2227. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.d.ts.map +0 -1
  2228. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.js +0 -105
  2229. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.js.map +0 -1
  2230. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.d.ts +0 -127
  2231. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.d.ts.map +0 -1
  2232. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.js +0 -439
  2233. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.js.map +0 -1
  2234. package/lib/test/shared-tree/fuzz/fuzzEditReducers.d.ts +0 -21
  2235. package/lib/test/shared-tree/fuzz/fuzzEditReducers.d.ts.map +0 -1
  2236. package/lib/test/shared-tree/fuzz/fuzzEditReducers.js +0 -214
  2237. package/lib/test/shared-tree/fuzz/fuzzEditReducers.js.map +0 -1
  2238. package/lib/test/shared-tree/fuzz/fuzzUtils.d.ts +0 -33
  2239. package/lib/test/shared-tree/fuzz/fuzzUtils.d.ts.map +0 -1
  2240. package/lib/test/shared-tree/fuzz/fuzzUtils.js +0 -78
  2241. package/lib/test/shared-tree/fuzz/fuzzUtils.js.map +0 -1
  2242. package/lib/test/shared-tree/fuzz/operationTypes.d.ts +0 -116
  2243. package/lib/test/shared-tree/fuzz/operationTypes.d.ts.map +0 -1
  2244. package/lib/test/shared-tree/fuzz/operationTypes.js +0 -6
  2245. package/lib/test/shared-tree/fuzz/operationTypes.js.map +0 -1
  2246. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.d.ts +0 -2
  2247. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.d.ts.map +0 -1
  2248. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.js +0 -110
  2249. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.js.map +0 -1
  2250. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.d.ts +0 -6
  2251. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.d.ts.map +0 -1
  2252. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.js +0 -220
  2253. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.js.map +0 -1
  2254. package/lib/test/shared-tree/opSize.bench.d.ts +0 -2
  2255. package/lib/test/shared-tree/opSize.bench.d.ts.map +0 -1
  2256. package/lib/test/shared-tree/opSize.bench.js +0 -559
  2257. package/lib/test/shared-tree/opSize.bench.js.map +0 -1
  2258. package/lib/test/shared-tree/schematizeTree.spec.d.ts +0 -6
  2259. package/lib/test/shared-tree/schematizeTree.spec.d.ts.map +0 -1
  2260. package/lib/test/shared-tree/schematizeTree.spec.js +0 -331
  2261. package/lib/test/shared-tree/schematizeTree.spec.js.map +0 -1
  2262. package/lib/test/shared-tree/schematizingTreeView.spec.d.ts +0 -6
  2263. package/lib/test/shared-tree/schematizingTreeView.spec.d.ts.map +0 -1
  2264. package/lib/test/shared-tree/schematizingTreeView.spec.js +0 -137
  2265. package/lib/test/shared-tree/schematizingTreeView.spec.js.map +0 -1
  2266. package/lib/test/shared-tree/sharedTree.bench.d.ts +0 -2
  2267. package/lib/test/shared-tree/sharedTree.bench.d.ts.map +0 -1
  2268. package/lib/test/shared-tree/sharedTree.bench.js +0 -349
  2269. package/lib/test/shared-tree/sharedTree.bench.js.map +0 -1
  2270. package/lib/test/shared-tree/sharedTree.spec.d.ts +0 -2
  2271. package/lib/test/shared-tree/sharedTree.spec.d.ts.map +0 -1
  2272. package/lib/test/shared-tree/sharedTree.spec.js +0 -1375
  2273. package/lib/test/shared-tree/sharedTree.spec.js.map +0 -1
  2274. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.d.ts +0 -6
  2275. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.d.ts.map +0 -1
  2276. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.js +0 -52
  2277. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.js.map +0 -1
  2278. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.d.ts +0 -6
  2279. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.d.ts.map +0 -1
  2280. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.js +0 -139
  2281. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.js.map +0 -1
  2282. package/lib/test/shared-tree/summary.bench.d.ts +0 -6
  2283. package/lib/test/shared-tree/summary.bench.d.ts.map +0 -1
  2284. package/lib/test/shared-tree/summary.bench.js +0 -111
  2285. package/lib/test/shared-tree/summary.bench.js.map +0 -1
  2286. package/lib/test/shared-tree/treeApi.spec.d.ts +0 -2
  2287. package/lib/test/shared-tree/treeApi.spec.d.ts.map +0 -1
  2288. package/lib/test/shared-tree/treeApi.spec.js +0 -151
  2289. package/lib/test/shared-tree/treeApi.spec.js.map +0 -1
  2290. package/lib/test/shared-tree/treeCheckout.spec.d.ts +0 -2
  2291. package/lib/test/shared-tree/treeCheckout.spec.d.ts.map +0 -1
  2292. package/lib/test/shared-tree/treeCheckout.spec.js +0 -678
  2293. package/lib/test/shared-tree/treeCheckout.spec.js.map +0 -1
  2294. package/lib/test/shared-tree/treeView.spec.d.ts +0 -2
  2295. package/lib/test/shared-tree/treeView.spec.d.ts.map +0 -1
  2296. package/lib/test/shared-tree/treeView.spec.js +0 -16
  2297. package/lib/test/shared-tree/treeView.spec.js.map +0 -1
  2298. package/lib/test/shared-tree/undo.spec.d.ts +0 -2
  2299. package/lib/test/shared-tree/undo.spec.d.ts.map +0 -1
  2300. package/lib/test/shared-tree/undo.spec.js +0 -298
  2301. package/lib/test/shared-tree/undo.spec.js.map +0 -1
  2302. package/lib/test/shared-tree-core/branch.spec.d.ts +0 -6
  2303. package/lib/test/shared-tree-core/branch.spec.d.ts.map +0 -1
  2304. package/lib/test/shared-tree-core/branch.spec.js +0 -766
  2305. package/lib/test/shared-tree-core/branch.spec.js.map +0 -1
  2306. package/lib/test/shared-tree-core/edit-manager/editManager.bench.d.ts +0 -6
  2307. package/lib/test/shared-tree-core/edit-manager/editManager.bench.d.ts.map +0 -1
  2308. package/lib/test/shared-tree-core/edit-manager/editManager.bench.js +0 -227
  2309. package/lib/test/shared-tree-core/edit-manager/editManager.bench.js.map +0 -1
  2310. package/lib/test/shared-tree-core/edit-manager/editManager.spec.d.ts +0 -6
  2311. package/lib/test/shared-tree-core/edit-manager/editManager.spec.d.ts.map +0 -1
  2312. package/lib/test/shared-tree-core/edit-manager/editManager.spec.js +0 -13
  2313. package/lib/test/shared-tree-core/edit-manager/editManager.spec.js.map +0 -1
  2314. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.d.ts +0 -6
  2315. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.d.ts.map +0 -1
  2316. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.js +0 -161
  2317. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.js.map +0 -1
  2318. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.d.ts +0 -6
  2319. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.d.ts.map +0 -1
  2320. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.js +0 -568
  2321. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.js.map +0 -1
  2322. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.d.ts +0 -6
  2323. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.d.ts.map +0 -1
  2324. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.js +0 -442
  2325. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.js.map +0 -1
  2326. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.d.ts +0 -80
  2327. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.d.ts.map +0 -1
  2328. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.js +0 -267
  2329. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.js.map +0 -1
  2330. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.d.ts +0 -211
  2331. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.d.ts.map +0 -1
  2332. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.js +0 -130
  2333. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.js.map +0 -1
  2334. package/lib/test/shared-tree-core/message.spec.d.ts +0 -2
  2335. package/lib/test/shared-tree-core/message.spec.d.ts.map +0 -1
  2336. package/lib/test/shared-tree-core/message.spec.js +0 -99
  2337. package/lib/test/shared-tree-core/message.spec.js.map +0 -1
  2338. package/lib/test/shared-tree-core/sharedTreeCore.spec.d.ts +0 -2
  2339. package/lib/test/shared-tree-core/sharedTreeCore.spec.d.ts.map +0 -1
  2340. package/lib/test/shared-tree-core/sharedTreeCore.spec.js +0 -316
  2341. package/lib/test/shared-tree-core/sharedTreeCore.spec.js.map +0 -1
  2342. package/lib/test/shared-tree-core/utils.d.ts +0 -19
  2343. package/lib/test/shared-tree-core/utils.d.ts.map +0 -1
  2344. package/lib/test/shared-tree-core/utils.js +0 -26
  2345. package/lib/test/shared-tree-core/utils.js.map +0 -1
  2346. package/lib/test/simple-tree/list.spec.d.ts +0 -6
  2347. package/lib/test/simple-tree/list.spec.d.ts.map +0 -1
  2348. package/lib/test/simple-tree/list.spec.js +0 -613
  2349. package/lib/test/simple-tree/list.spec.js.map +0 -1
  2350. package/lib/test/simple-tree/object.spec.d.ts +0 -6
  2351. package/lib/test/simple-tree/object.spec.d.ts.map +0 -1
  2352. package/lib/test/simple-tree/object.spec.js +0 -390
  2353. package/lib/test/simple-tree/object.spec.js.map +0 -1
  2354. package/lib/test/simple-tree/objectFactory.spec.d.ts +0 -6
  2355. package/lib/test/simple-tree/objectFactory.spec.d.ts.map +0 -1
  2356. package/lib/test/simple-tree/objectFactory.spec.js +0 -210
  2357. package/lib/test/simple-tree/objectFactory.spec.js.map +0 -1
  2358. package/lib/test/simple-tree/primitives.spec.d.ts +0 -6
  2359. package/lib/test/simple-tree/primitives.spec.d.ts.map +0 -1
  2360. package/lib/test/simple-tree/primitives.spec.js +0 -134
  2361. package/lib/test/simple-tree/primitives.spec.js.map +0 -1
  2362. package/lib/test/simple-tree/proxies.spec.d.ts +0 -6
  2363. package/lib/test/simple-tree/proxies.spec.d.ts.map +0 -1
  2364. package/lib/test/simple-tree/proxies.spec.js +0 -597
  2365. package/lib/test/simple-tree/proxies.spec.js.map +0 -1
  2366. package/lib/test/simple-tree/rawObjectNode.spec.d.ts +0 -6
  2367. package/lib/test/simple-tree/rawObjectNode.spec.d.ts.map +0 -1
  2368. package/lib/test/simple-tree/rawObjectNode.spec.js +0 -73
  2369. package/lib/test/simple-tree/rawObjectNode.spec.js.map +0 -1
  2370. package/lib/test/simple-tree/schemaCreationUtilities.spec.d.ts +0 -6
  2371. package/lib/test/simple-tree/schemaCreationUtilities.spec.d.ts.map +0 -1
  2372. package/lib/test/simple-tree/schemaCreationUtilities.spec.js +0 -153
  2373. package/lib/test/simple-tree/schemaCreationUtilities.spec.js.map +0 -1
  2374. package/lib/test/simple-tree/schemaFactory.examples.spec.d.ts +0 -6
  2375. package/lib/test/simple-tree/schemaFactory.examples.spec.d.ts.map +0 -1
  2376. package/lib/test/simple-tree/schemaFactory.examples.spec.js +0 -107
  2377. package/lib/test/simple-tree/schemaFactory.examples.spec.js.map +0 -1
  2378. package/lib/test/simple-tree/schemaFactory.spec.d.ts +0 -6
  2379. package/lib/test/simple-tree/schemaFactory.spec.d.ts.map +0 -1
  2380. package/lib/test/simple-tree/schemaFactory.spec.js +0 -515
  2381. package/lib/test/simple-tree/schemaFactory.spec.js.map +0 -1
  2382. package/lib/test/simple-tree/schemaFactoryRecursive.spec.d.ts +0 -6
  2383. package/lib/test/simple-tree/schemaFactoryRecursive.spec.d.ts.map +0 -1
  2384. package/lib/test/simple-tree/schemaFactoryRecursive.spec.js +0 -282
  2385. package/lib/test/simple-tree/schemaFactoryRecursive.spec.js.map +0 -1
  2386. package/lib/test/simple-tree/schemaTypes.spec.d.ts +0 -6
  2387. package/lib/test/simple-tree/schemaTypes.spec.d.ts.map +0 -1
  2388. package/lib/test/simple-tree/schemaTypes.spec.js +0 -89
  2389. package/lib/test/simple-tree/schemaTypes.spec.js.map +0 -1
  2390. package/lib/test/simple-tree/toFlexSchema.spec.d.ts +0 -6
  2391. package/lib/test/simple-tree/toFlexSchema.spec.d.ts.map +0 -1
  2392. package/lib/test/simple-tree/toFlexSchema.spec.js +0 -30
  2393. package/lib/test/simple-tree/toFlexSchema.spec.js.map +0 -1
  2394. package/lib/test/simple-tree/toMapTree.spec.d.ts +0 -6
  2395. package/lib/test/simple-tree/toMapTree.spec.d.ts.map +0 -1
  2396. package/lib/test/simple-tree/toMapTree.spec.js +0 -423
  2397. package/lib/test/simple-tree/toMapTree.spec.js.map +0 -1
  2398. package/lib/test/simple-tree/tree.spec.d.ts +0 -6
  2399. package/lib/test/simple-tree/tree.spec.d.ts.map +0 -1
  2400. package/lib/test/simple-tree/tree.spec.js +0 -71
  2401. package/lib/test/simple-tree/tree.spec.js.map +0 -1
  2402. package/lib/test/simple-tree/treeApi.spec.d.ts +0 -6
  2403. package/lib/test/simple-tree/treeApi.spec.d.ts.map +0 -1
  2404. package/lib/test/simple-tree/treeApi.spec.js +0 -146
  2405. package/lib/test/simple-tree/treeApi.spec.js.map +0 -1
  2406. package/lib/test/simple-tree/utils.d.ts +0 -16
  2407. package/lib/test/simple-tree/utils.d.ts.map +0 -1
  2408. package/lib/test/simple-tree/utils.js +0 -33
  2409. package/lib/test/simple-tree/utils.js.map +0 -1
  2410. package/lib/test/snapshots/gc.spec.d.ts +0 -6
  2411. package/lib/test/snapshots/gc.spec.d.ts.map +0 -1
  2412. package/lib/test/snapshots/gc.spec.js +0 -106
  2413. package/lib/test/snapshots/gc.spec.js.map +0 -1
  2414. package/lib/test/snapshots/index.d.ts +0 -6
  2415. package/lib/test/snapshots/index.d.ts.map +0 -1
  2416. package/lib/test/snapshots/index.js +0 -6
  2417. package/lib/test/snapshots/index.js.map +0 -1
  2418. package/lib/test/snapshots/schema.spec.d.ts +0 -6
  2419. package/lib/test/snapshots/schema.spec.d.ts.map +0 -1
  2420. package/lib/test/snapshots/schema.spec.js +0 -17
  2421. package/lib/test/snapshots/schema.spec.js.map +0 -1
  2422. package/lib/test/snapshots/snapshotTools.d.ts +0 -25
  2423. package/lib/test/snapshots/snapshotTools.d.ts.map +0 -1
  2424. package/lib/test/snapshots/snapshotTools.js +0 -85
  2425. package/lib/test/snapshots/snapshotTools.js.map +0 -1
  2426. package/lib/test/snapshots/summary.spec.d.ts +0 -6
  2427. package/lib/test/snapshots/summary.spec.d.ts.map +0 -1
  2428. package/lib/test/snapshots/summary.spec.js +0 -26
  2429. package/lib/test/snapshots/summary.spec.js.map +0 -1
  2430. package/lib/test/snapshots/testTrees.d.ts +0 -15
  2431. package/lib/test/snapshots/testTrees.d.ts.map +0 -1
  2432. package/lib/test/snapshots/testTrees.js +0 -374
  2433. package/lib/test/snapshots/testTrees.js.map +0 -1
  2434. package/lib/test/snapshots/utils.d.ts +0 -7
  2435. package/lib/test/snapshots/utils.d.ts.map +0 -1
  2436. package/lib/test/snapshots/utils.js +0 -106
  2437. package/lib/test/snapshots/utils.js.map +0 -1
  2438. package/lib/test/testChange.d.ts +0 -90
  2439. package/lib/test/testChange.d.ts.map +0 -1
  2440. package/lib/test/testChange.js +0 -234
  2441. package/lib/test/testChange.js.map +0 -1
  2442. package/lib/test/testChange.spec.d.ts +0 -6
  2443. package/lib/test/testChange.spec.d.ts.map +0 -1
  2444. package/lib/test/testChange.spec.js +0 -113
  2445. package/lib/test/testChange.spec.js.map +0 -1
  2446. package/lib/test/testTrees.d.ts +0 -56
  2447. package/lib/test/testTrees.d.ts.map +0 -1
  2448. package/lib/test/testTrees.js +0 -175
  2449. package/lib/test/testTrees.js.map +0 -1
  2450. package/lib/test/tree/anchorSet.spec.d.ts +0 -6
  2451. package/lib/test/tree/anchorSet.spec.d.ts.map +0 -1
  2452. package/lib/test/tree/anchorSet.spec.js +0 -593
  2453. package/lib/test/tree/anchorSet.spec.js.map +0 -1
  2454. package/lib/test/tree/detachedFieldIndex.spec.d.ts +0 -11
  2455. package/lib/test/tree/detachedFieldIndex.spec.d.ts.map +0 -1
  2456. package/lib/test/tree/detachedFieldIndex.spec.js +0 -218
  2457. package/lib/test/tree/detachedFieldIndex.spec.js.map +0 -1
  2458. package/lib/test/tree/pathTree.spec.d.ts +0 -6
  2459. package/lib/test/tree/pathTree.spec.d.ts.map +0 -1
  2460. package/lib/test/tree/pathTree.spec.js +0 -122
  2461. package/lib/test/tree/pathTree.spec.js.map +0 -1
  2462. package/lib/test/tree/visitDelta.spec.d.ts +0 -6
  2463. package/lib/test/tree/visitDelta.spec.d.ts.map +0 -1
  2464. package/lib/test/tree/visitDelta.spec.js +0 -1055
  2465. package/lib/test/tree/visitDelta.spec.js.map +0 -1
  2466. package/lib/test/util/brand.spec.d.ts +0 -22
  2467. package/lib/test/util/brand.spec.d.ts.map +0 -1
  2468. package/lib/test/util/brand.spec.js +0 -19
  2469. package/lib/test/util/brand.spec.js.map +0 -1
  2470. package/lib/test/util/deepFreeze.spec.d.ts +0 -6
  2471. package/lib/test/util/deepFreeze.spec.d.ts.map +0 -1
  2472. package/lib/test/util/deepFreeze.spec.js +0 -176
  2473. package/lib/test/util/deepFreeze.spec.js.map +0 -1
  2474. package/lib/test/util/nestedMap.spec.d.ts +0 -6
  2475. package/lib/test/util/nestedMap.spec.d.ts.map +0 -1
  2476. package/lib/test/util/nestedMap.spec.js +0 -190
  2477. package/lib/test/util/nestedMap.spec.js.map +0 -1
  2478. package/lib/test/util/offsetList.spec.d.ts +0 -6
  2479. package/lib/test/util/offsetList.spec.d.ts.map +0 -1
  2480. package/lib/test/util/offsetList.spec.js +0 -35
  2481. package/lib/test/util/offsetList.spec.js.map +0 -1
  2482. package/lib/test/util/testTreeProvider.spec.d.ts +0 -6
  2483. package/lib/test/util/testTreeProvider.spec.d.ts.map +0 -1
  2484. package/lib/test/util/testTreeProvider.spec.js +0 -56
  2485. package/lib/test/util/testTreeProvider.spec.js.map +0 -1
  2486. package/lib/test/util/typeUtils.spec.d.ts +0 -6
  2487. package/lib/test/util/typeUtils.spec.d.ts.map +0 -1
  2488. package/lib/test/util/typeUtils.spec.js +0 -19
  2489. package/lib/test/util/typeUtils.spec.js.map +0 -1
  2490. package/lib/test/util/utils.spec.d.ts +0 -6
  2491. package/lib/test/util/utils.spec.d.ts.map +0 -1
  2492. package/lib/test/util/utils.spec.js +0 -27
  2493. package/lib/test/util/utils.spec.js.map +0 -1
  2494. package/lib/test/utils.d.ts +0 -313
  2495. package/lib/test/utils.d.ts.map +0 -1
  2496. package/lib/test/utils.js +0 -765
  2497. package/lib/test/utils.js.map +0 -1
  2498. package/lib/tree-alpha.d.ts +0 -2159
  2499. package/lib/tree-beta.d.ts +0 -2159
  2500. package/lib/tree-public.d.ts +0 -1942
  2501. package/lib/tree-untrimmed.d.ts +0 -6880
  2502. package/src/simple-tree/flexNode.ts +0 -96
  2503. package/src/simple-tree/treeArrayNode.ts +0 -70
  2504. /package/dist/{feature-libraries → core/schema-stored}/multiplicity.d.ts +0 -0
  2505. /package/lib/{feature-libraries → core/schema-stored}/multiplicity.d.ts +0 -0
  2506. /package/lib/{feature-libraries → core/schema-stored}/multiplicity.js +0 -0
  2507. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -2,12 +2,12 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+ import { assert } from "@fluidframework/core-utils/internal";
5
6
  import { BTree } from "@tylerbu/sorted-btree-es6";
6
- import { assert } from "@fluidframework/core-utils";
7
- import { brand, fail, getOrCreate, mapIterable, } from "../util/index.js";
8
7
  import { findAncestor, findCommonAncestor, mintCommit, rebaseChange, } from "../core/index.js";
9
- import { getChangeReplaceType, onForkTransitive, SharedTreeBranch } from "./branch.js";
10
- import { sequenceIdComparator, equalSequenceIds, minSequenceId, decrementSequenceId, maxSequenceId, } from "./sequenceIdUtils.js";
8
+ import { brand, fail, getOrCreate, mapIterable, } from "../util/index.js";
9
+ import { SharedTreeBranch, getChangeReplaceType, onForkTransitive } from "./branch.js";
10
+ import { decrementSequenceId, equalSequenceIds, maxSequenceId, minSequenceId, sequenceIdComparator, } from "./sequenceIdUtils.js";
11
11
  export const minimumPossibleSequenceNumber = brand(Number.MIN_SAFE_INTEGER);
12
12
  const minimumPossibleSequenceId = {
13
13
  sequenceNumber: minimumPossibleSequenceNumber,
@@ -78,7 +78,6 @@ export class EditManager {
78
78
  findCommonAncestor([this.localBranch.getHead(), this.localCommits], this.trunk.getHead());
79
79
  }
80
80
  });
81
- this.localBranch.on("revertibleDisposed", this.onRevertibleDisposed.bind(this));
82
81
  // Track all forks of the local branch for purposes of trunk eviction. Unlike the local branch, they have
83
82
  // an unknown lifetime and rebase frequency, so we can not make any assumptions about which trunk commits
84
83
  // they require and therefore we monitor them explicitly.
@@ -155,41 +154,6 @@ export class EditManager {
155
154
  }
156
155
  }
157
156
  }
158
- /**
159
- * Returns the sequence id of the oldest sequenced revertible commit on the local branch.
160
- *
161
- * TODO: may be more performant to maintain the oldest revertible on the branches themselves
162
- * this should be tested and revisited once branches are supported
163
- */
164
- getOldestRevertibleSequenceId() {
165
- if (this._oldestRevertibleSequenceId === undefined) {
166
- let oldest;
167
- for (const revision of this.localBranch.revertibleCommits()) {
168
- if (oldest === undefined) {
169
- oldest = this.trunkMetadata.get(revision)?.sequenceId;
170
- }
171
- else {
172
- const current = this.trunkMetadata.get(revision)?.sequenceId;
173
- if (current !== undefined) {
174
- oldest = minSequenceId(oldest, current);
175
- }
176
- }
177
- }
178
- this._oldestRevertibleSequenceId = oldest;
179
- }
180
- return this._oldestRevertibleSequenceId;
181
- }
182
- onRevertibleDisposed(revertible, revision) {
183
- const metadata = this.trunkMetadata.get(revision);
184
- // if this revision hasn't been sequenced, it won't be evicted
185
- if (metadata !== undefined) {
186
- const { sequenceId: id } = metadata;
187
- // if this revision corresponds with the current oldest revertible sequence id, replace it with the new oldest
188
- if (id === this._oldestRevertibleSequenceId) {
189
- this._oldestRevertibleSequenceId = undefined;
190
- }
191
- }
192
- }
193
157
  /**
194
158
  * Advances the minimum sequence number, and removes all commits from the trunk which lie outside the collaboration window,
195
159
  * if they are not retained by revertibles or local branches.
@@ -224,13 +188,6 @@ export class EditManager {
224
188
  const sequenceIdBeforeMinimumBranchBase = decrementSequenceId(minimumBranchBaseSequenceId);
225
189
  trunkTailSequenceId = minSequenceId(trunkTailSequenceId, sequenceIdBeforeMinimumBranchBase);
226
190
  }
227
- // TODO get the oldest revertible sequence id from all registered branches, not just the local branch
228
- const oldestRevertibleSequenceId = this.getOldestRevertibleSequenceId();
229
- if (oldestRevertibleSequenceId !== undefined) {
230
- // use a smaller sequence number so that the oldest revertible is not trimmed
231
- const sequenceIdBeforeOldestRevertible = decrementSequenceId(oldestRevertibleSequenceId);
232
- trunkTailSequenceId = minSequenceId(trunkTailSequenceId, sequenceIdBeforeOldestRevertible);
233
- }
234
191
  const [sequenceId, latestEvicted] = this.getClosestTrunkCommit(maxSequenceId(trunkTailSequenceId, this.sequenceMap.minKey() ?? minimumPossibleSequenceId));
235
192
  // Don't do any work if the commit found by the search is already the tail of the trunk
236
193
  if (latestEvicted !== this.trunkBase) {
@@ -452,7 +409,6 @@ export class EditManager {
452
409
  }
453
410
  pushGraphCommitToTrunk(sequenceId, graphCommit, sessionId) {
454
411
  this.trunk.setHead(graphCommit);
455
- this.localBranch.updateRevertibleCommit(graphCommit);
456
412
  const trunkHead = this.trunk.getHead();
457
413
  this.sequenceMap.set(sequenceId, trunkHead);
458
414
  this.trunkMetadata.set(trunkHead.revision, { sequenceId, sessionId });
@@ -1 +1 @@
1
- {"version":3,"file":"editManager.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EACN,KAAK,EACL,IAAI,EACJ,WAAW,EACX,WAAW,GAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGN,YAAY,EACZ,kBAAkB,EAElB,UAAU,EACV,YAAY,GAGZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQvF,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,aAAa,GACb,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,6BAA6B,GAAc,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvF,MAAM,yBAAyB,GAAe;IAC7C,cAAc,EAAE,6BAA6B;CAC7C,CAAC;AAEF;;;GAGG;AACH,sDAAsD;AACtD,MAAM,OAAO,WAAW;IA4EvB;;;OAGG;IACH,YACiB,YAA2B,EAC3B,cAAyB,EACxB,eAAkC;QAFnC,iBAAY,GAAZ,YAAY,CAAe;QAC3B,mBAAc,GAAd,cAAc,CAAW;QACxB,oBAAe,GAAf,eAAe,CAAmB;QA3EpD;;;WAGG;QACc,kBAAa,GAAG,IAAI,GAAG,EAGrC,CAAC;QACJ;;;WAGG;QACc,gBAAW,GAAG,IAAI,KAAK,CACvC,SAAS,EACT,oBAAoB,CACpB,CAAC;QAEF;;;;WAIG;QACH,yGAAyG;QACxF,sBAAiB,GACjC,IAAI,GAAG,EAAE,CAAC;QAOX;;;WAGG;QACc,kBAAa,GAAG,IAAI,KAAK,CAGxC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAEnC;;;;;WAKG;QACK,0BAAqB,GAAG,6BAA6B,CAAC;QAgB9D;;;WAGG;QACc,iBAAY,GAA8B,EAAE,CAAC;QAW7D,IAAI,CAAC,SAAS,GAAG;YAChB,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;SACxC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CACtC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EACpB,YAAY,EACZ,eAAe,CACf,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC5B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;oBACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACD;iBAAM;gBACN,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7B,kBAAkB,CACjB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CACpB,CAAC;aACF;QACF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhF,yGAAyG;QACzG,yGAAyG;QACzG,yDAAyD;QACzD,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;OAQG;IACK,cAAc,CAAC,MAA6C;QACnE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,6EAA6E;QAC7E,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACvE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAC3B;QACF,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACvE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;aACjB;QACF,CAAC,CAAC,CAAC;QACH,wEAAwE;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,cAAc,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,CAAwC;QAC3D,MAAM,WAAW,GAChB,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAE9E,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC3E,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,CAAwC;QAC7D,MAAM,WAAW,GAChB,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,QAAQ,GACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE7E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACtC;IACF,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAC1B,gBAAyC,EACzC,KAAiB;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,eAAe,KAAK,SAAS,EAAE;YAClC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC5E,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;gBACrC,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,gBAAgB,EAAE;oBAC1C,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACxB,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACD;YACD,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrC;SACD;IACF,CAAC;IAED;;;;;OAKG;IACK,6BAA6B;QACpC,IAAI,IAAI,CAAC,2BAA2B,KAAK,SAAS,EAAE;YACnD,IAAI,MAA8B,CAAC;YACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE;gBAC5D,IAAI,MAAM,KAAK,SAAS,EAAE;oBACzB,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;iBACtD;qBAAM;oBACN,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;oBAC7D,IAAI,OAAO,KAAK,SAAS,EAAE;wBAC1B,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;qBACxC;iBACD;aACD;YACD,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,2BAA2B,CAAC;IACzC,CAAC;IAEO,oBAAoB,CAAC,UAAsB,EAAE,QAAqB;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,8DAA8D;QAC9D,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;YACpC,8GAA8G;YAC9G,IAAI,EAAE,KAAK,IAAI,CAAC,2BAA2B,EAAE;gBAC5C,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC;aAC7C;SACD;IACF,CAAC;IAED;;;;;;OAMG;IACI,4BAA4B,CAAC,qBAAgC;QACnE,IAAI,qBAAqB,KAAK,IAAI,CAAC,qBAAqB,EAAE;YACzD,OAAO;SACP;QAED,MAAM,CACL,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,EAClD,KAAK,CAAC,sEAAsE,CAC5E,CAAC;QAEF,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,SAAS;QAChB,8EAA8E;QAC9E,IAAI,mBAAmB,GAAe;YACrC,cAAc,EAAE,IAAI,CAAC,qBAAqB;YAC1C,YAAY,EAAE,MAAM,CAAC,iBAAiB;SACtC,CAAC;QACF,sHAAsH;QACtH,MAAM,2BAA2B,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAChE,IAAI,2BAA2B,KAAK,SAAS,EAAE;YAC9C,iGAAiG;YACjG,2DAA2D;YAC3D,MAAM,iCAAiC,GAAG,mBAAmB,CAC5D,2BAA2B,CAC3B,CAAC;YACF,mBAAmB,GAAG,aAAa,CAClC,mBAAmB,EACnB,iCAAiC,CACjC,CAAC;SACF;QAED,qGAAqG;QACrG,MAAM,0BAA0B,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACxE,IAAI,0BAA0B,KAAK,SAAS,EAAE;YAC7C,6EAA6E;YAC7E,MAAM,gCAAgC,GAAG,mBAAmB,CAC3D,0BAA0B,CAC1B,CAAC;YACF,mBAAmB,GAAG,aAAa,CAClC,mBAAmB,EACnB,gCAAgC,CAChC,CAAC;SACF;QAED,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAC7D,aAAa,CACZ,mBAAmB,EACnB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,yBAAyB,CACtD,CACD,CAAC;QAEF,uFAAuF;QACvF,IAAI,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;YACrC,2GAA2G;YAC3G,+GAA+G;YAC/G,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;aAC7C;YAED,+GAA+G;YAC/G,4GAA4G;YAC5G,8GAA8G;YAC9G,gHAAgH;YAChH,iHAAiH;YACjH,iHAAiH;YACjH,kHAAkH;YAClH,0HAA0H;YAC1H,MAAM,YAAY,GAAG,aAA8C,CAAC;YACpE,oFAAoF;YACpF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,mHAAmH;YACnH,uGAAuG;YACvG,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAChD,yHAAyH;YACzH,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5C,2HAA2H;YAC3H,OAAO,YAAY,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;YAE9B,sDAAsD;YACtD,IAAI,CAAC,WAAW,CAAC,SAAS,CACzB,yBAAyB,EACzB,UAAU,EACV,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACnB,kDAAkD;gBAClD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACpC,wGAAwG;gBACxG,IAAI,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE;oBACpC,MAAM,CACL,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAClC,KAAK,CAAC,uDAAuD,CAC7D,CAAC;iBACF;qBAAM;oBACN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBACxB;YACF,CAAC,CACD,CAAC;YAEF,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAC/E,MAAM,CACL,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,EACvC,KAAK,CAAC,2EAA2E,CACjF,CAAC;YACF,MAAM,CACL,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,SAAS,EACrC,KAAK,CAAC,iEAAiE,CACvE,CAAC;SACF;IACF,CAAC;IAEM,OAAO;QACb,OAAO,CACN,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS;YACvC,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACnD,IAAI,CAAC,qBAAqB,KAAK,6BAA6B,CAC5D,CAAC;IACH,CAAC;IAEM,cAAc;QACpB,uGAAuG;QACvG,2BAA2B;QAC3B,sGAAsG;QACtG,6DAA6D;QAC7D,oGAAoG;QACpG,oFAAoF;QACpF,yGAAyG;QACzG,4DAA4D;QAC5D,MAAM,CACL,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EACnD,KAAK,CAAC,qEAAqE,CAC3E,CAAC;QAEF,IAAI,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,CACL,0BAA0B,CAAC,MAAM,KAAK,SAAS;YAC9C,0BAA0B,KAAK,IAAI,CAAC,SAAS,EAC9C,KAAK,CAAC,mFAAmF,CACzF,CAAC;QAEF,+GAA+G;QAC/G,0BAA0B;YACzB,0BAA0B,CAAC,MAAM,IAAI,0BAA0B,CAAC;QAEjE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzF,MAAM,QAAQ,GACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAClF,MAAM,MAAM,GAAgC;gBAC3C,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,cAAc;gBAClD,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC7B,CAAC;YACF,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE;gBACnD,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;aACvD;YACD,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAChC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE;YACrE,MAAM,UAAU,GAA8B,EAAE,CAAC;YACjD,MAAM,QAAQ,GACb,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxE,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAE9C,OAAO;gBACN,SAAS;gBACT;oBACC,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC7B,MAAM,MAAM,GAAuB;4BAClC,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,SAAS;yBACT,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;iBACF;aACD,CAAC;QACH,CAAC,CAAC,CACF,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACrC,CAAC;IAEM,eAAe,CAAC,IAA6B;QACnD,MAAM,CACL,IAAI,CAAC,OAAO,EAAE,EACd,KAAK,CAAC,2EAA2E,CACjF,CAAC;QACF,iGAAiG;QACjG,yCAAyC;QACzC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwC,CAAC;QAC3E,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,UAAU,GACf,CAAC,CAAC,YAAY,KAAK,SAAS;gBAC3B,CAAC,CAAC;oBACA,cAAc,EAAE,CAAC,CAAC,cAAc;iBAC/B;gBACH,CAAC,CAAC;oBACA,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,YAAY,EAAE,CAAC,CAAC,YAAY;iBAC3B,CAAC;YACN,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAClC,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,SAAS;aACtB,CAAC,CAAC;YACH,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAClB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/C,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACzD,MAAM,MAAM,GACX,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAE5E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACzB,SAAS,EACT,IAAI,gBAAgB,CACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,EACzC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,CACpB,CACD,CAAC;SACF;IACF,CAAC;IAEO,mBAAmB,CAAC,MAA+B;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,IAAI,yBAAyB,CAAC;IACzF,CAAC;IAEM,eAAe;QACrB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAEM,eAAe;QACrB,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEM,eAAe;QACrB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAEM,eAAe;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,sBAAsB;QAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;YACrD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,UAAU,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC5B,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;aACxB;SACD;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,kBAAkB,CACxB,SAA6B,EAC7B,cAAyB,EACzB,uBAAkC;QAElC,MAAM,CACL,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAC3C,KAAK,CAAC,sFAAsF,CAC5F,CAAC;QAEF,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,UAAU,GACf,qBAAqB,CAAC,MAAM,KAAK,CAAC;YACjC,CAAC,CAAC;gBACA,cAAc;aACb;YACH,CAAC,CAAC;gBACA,cAAc;gBACd,YAAY,EAAE,qBAAqB,CAAC,MAAM;aACzC,CAAC;QAEN,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;YAChD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YACnD,MAAM,CACL,gBAAgB,KAAK,SAAS,EAC9B,KAAK,CAAC,wFAAwF,CAC9F,CAAC;YAEF,4GAA4G;YAC5G,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/E,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YACtD,OAAO;SACP;QAED,sDAAsD;QACtD,MAAM,CAAC,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;QACpF,wEAAwE;QACxE,8GAA8G;QAC9G,MAAM,eAAe,GAAG,WAAW,CAClC,IAAI,CAAC,iBAAiB,EACtB,SAAS,CAAC,SAAS,EACnB,GAAG,EAAE,CACJ,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CACnF,CAAC;QACF,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAE5D,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YACvD,kGAAkG;YAClG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC9C,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9C;aAAM;YACN,gHAAgH;YAChH,MAAM,qBAAqB,GAAG,YAAY,CACzC,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,SAAS,CAAC,MAAM,EAChB,eAAe,CAAC,OAAO,EAAE,EACzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EACpB,IAAI,CAAC,eAAe,CACpB,CAAC;YAEF,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;gBAClC,GAAG,SAAS;gBACZ,MAAM,EAAE,qBAAqB;aAC7B,CAAC,CAAC;SACH;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,eAAe,CACrB,QAAqB;QAErB,MAAM,OAAO,GAA8B,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,YAAY,CAC1B,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,EACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC9B,CAAC;QACF,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACpF,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CACxB,UAAsB,EACtB,MAA0B,EAC1B,KAAK,GAAG,KAAK;QAEb,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAEO,sBAAsB,CAC7B,UAAsB,EACtB,WAAoC,EACpC,SAAoB;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAUO,qBAAqB,CAC5B,QAAgC;QAEhC,MAAM,UAAU,GACf,OAAO,QAAQ,KAAK,QAAQ;YAC3B,CAAC,CAAC;gBACA,gFAAgF;gBAChF,mDAAmD;gBACnD,+GAA+G;gBAC/G,cAAc,EAAE,QAAQ;gBACxB,YAAY,EAAE,MAAM,CAAC,iBAAiB;aACrC;YACH,CAAC,CAAC,QAAQ,CAAC;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,QAAQ,CAAC,cAAyB;QACzC,MAAM,eAAe,GAAe;YACnC,cAAc;SACd,CAAC;QACF,MAAM,aAAa,GAAe;YACjC,cAAc,EAAE,KAAK,CAAE,cAAyB,GAAG,CAAC,CAAC;SACrD,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;CACD;AAUD;;GAEG;AACH,SAAS,eAAe,CACvB,UAAmB,EACnB,cAAuB;IAEvB,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,MAAM,CACL,kBAAkB,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,SAAS,EACpE,KAAK,CAAC,qCAAqC,CAC3C,CAAC;IACF,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { SessionId } from \"@fluidframework/id-compressor\";\nimport {\n\tbrand,\n\tfail,\n\tgetOrCreate,\n\tmapIterable,\n\tMutable,\n\tRecursiveReadonly,\n} from \"../util/index.js\";\nimport {\n\tChangeFamily,\n\tChangeFamilyEditor,\n\tfindAncestor,\n\tfindCommonAncestor,\n\tGraphCommit,\n\tmintCommit,\n\trebaseChange,\n\tRevertible,\n\tRevisionTag,\n} from \"../core/index.js\";\nimport { getChangeReplaceType, onForkTransitive, SharedTreeBranch } from \"./branch.js\";\nimport {\n\tCommit,\n\tSequenceId,\n\tSummarySessionBranch,\n\tSeqNumber,\n\tSequencedCommit,\n} from \"./editManagerFormat.js\";\nimport {\n\tsequenceIdComparator,\n\tequalSequenceIds,\n\tminSequenceId,\n\tdecrementSequenceId,\n\tmaxSequenceId,\n} from \"./sequenceIdUtils.js\";\n\nexport const minimumPossibleSequenceNumber: SeqNumber = brand(Number.MIN_SAFE_INTEGER);\nconst minimumPossibleSequenceId: SequenceId = {\n\tsequenceNumber: minimumPossibleSequenceNumber,\n};\n\n/**\n * Represents a local branch of a document and interprets the effect on the document of adding sequenced changes,\n * which were based on a given session's branch, to the document history\n */\n// TODO: Try to reduce this to a single type parameter\nexport class EditManager<\n\tTEditor extends ChangeFamilyEditor,\n\tTChangeset,\n\tTChangeFamily extends ChangeFamily<TEditor, TChangeset>,\n> {\n\t/** The \"trunk\" branch. The trunk represents the list of received sequenced changes. */\n\tprivate readonly trunk: SharedTreeBranch<TEditor, TChangeset>;\n\n\t/**\n\t * Records extra data associated with commits in the {@link trunk}.\n\t * This does not include an entry for the {@link trunkBase}.\n\t */\n\tprivate readonly trunkMetadata = new Map<\n\t\tRevisionTag,\n\t\t{ sequenceId: SequenceId; sessionId: SessionId }\n\t>();\n\t/**\n\t * A map from a sequence id to the commit in the {@link trunk} which has that sequence id.\n\t * This also includes an entry for the {@link trunkBase} which always has the lowest key in the map.\n\t */\n\tprivate readonly sequenceMap = new BTree<SequenceId, GraphCommit<TChangeset>>(\n\t\tundefined,\n\t\tsequenceIdComparator,\n\t);\n\n\t/**\n\t * Branches are maintained to represent the local change list that the issuing client had\n\t * at the time of submitting the latest known edit on the branch.\n\t * This means the head commit of each branch is always in its original (non-rebased) form.\n\t */\n\t// TODO:#4593: Add test to ensure that peer branches are never initialized with a repairDataStoreProvider\n\tprivate readonly peerLocalBranches: Map<SessionId, SharedTreeBranch<TEditor, TChangeset>> =\n\t\tnew Map();\n\n\t/**\n\t * This branch holds the changes made by this client which have not yet been confirmed as sequenced changes.\n\t */\n\tpublic readonly localBranch: SharedTreeBranch<TEditor, TChangeset>;\n\n\t/**\n\t * Tracks where on the trunk all registered branches are based. Each key is the sequence id of a commit on\n\t * the trunk, and the value is the set of all branches who have that commit as their common ancestor with the trunk.\n\t */\n\tprivate readonly trunkBranches = new BTree<\n\t\tSequenceId,\n\t\tSet<SharedTreeBranch<TEditor, TChangeset>>\n\t>(undefined, sequenceIdComparator);\n\n\t/**\n\t * The sequence number of the newest commit on the trunk that has been received by all peers.\n\t * Defaults to {@link minimumPossibleSequenceNumber} if no commits have been received.\n\t *\n\t * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n\t */\n\tprivate minimumSequenceNumber = minimumPossibleSequenceNumber;\n\n\t/**\n\t * The sequence ID corresponding to the oldest revertible commit owned by the local branch. This is used\n\t * to prevent the trunk from trimming this commit or commits after it as they're needed for undo.\n\t */\n\tprivate _oldestRevertibleSequenceId?: SequenceId;\n\n\t/**\n\t * A special commit that is a \"base\" (tail) of the trunk, though not part of the trunk itself.\n\t * This makes it possible to model the trunk in the same way as any other branch (it branches off of a base commit)\n\t * which allows it to use branching APIs to interact with the other branches.\n\t * Each time trunk eviction occurs, the most recent evicted commit becomes the new `trunkBase`.\n\t */\n\tprivate trunkBase: GraphCommit<TChangeset>;\n\n\t/**\n\t * The list of commits (from oldest to most recent) that are on the local branch but not on the trunk.\n\t * When a local commit is sequenced, the first commit in this list shifted onto the tip of the trunk.\n\t */\n\tprivate readonly localCommits: GraphCommit<TChangeset>[] = [];\n\n\t/**\n\t * @param changeFamily - the change family of changes on the trunk and local branch\n\t * @param localSessionId - the id of the local session that will be used for local commits\n\t */\n\tpublic constructor(\n\t\tpublic readonly changeFamily: TChangeFamily,\n\t\tpublic readonly localSessionId: SessionId,\n\t\tprivate readonly mintRevisionTag: () => RevisionTag,\n\t) {\n\t\tthis.trunkBase = {\n\t\t\trevision: \"root\",\n\t\t\tchange: changeFamily.rebaser.compose([]),\n\t\t};\n\t\tthis.sequenceMap.set(minimumPossibleSequenceId, this.trunkBase);\n\t\tthis.trunk = new SharedTreeBranch(this.trunkBase, changeFamily, mintRevisionTag);\n\t\tthis.localBranch = new SharedTreeBranch(\n\t\t\tthis.trunk.getHead(),\n\t\t\tchangeFamily,\n\t\t\tmintRevisionTag,\n\t\t);\n\n\t\tthis.localBranch.on(\"afterChange\", (event) => {\n\t\t\tif (event.type === \"append\") {\n\t\t\t\tfor (const commit of event.newCommits) {\n\t\t\t\t\tthis.localCommits.push(commit);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.localCommits.length = 0;\n\t\t\t\tfindCommonAncestor(\n\t\t\t\t\t[this.localBranch.getHead(), this.localCommits],\n\t\t\t\t\tthis.trunk.getHead(),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\tthis.localBranch.on(\"revertibleDisposed\", this.onRevertibleDisposed.bind(this));\n\n\t\t// Track all forks of the local branch for purposes of trunk eviction. Unlike the local branch, they have\n\t\t// an unknown lifetime and rebase frequency, so we can not make any assumptions about which trunk commits\n\t\t// they require and therefore we monitor them explicitly.\n\t\tonForkTransitive(this.localBranch, (fork) => this.registerBranch(fork));\n\t}\n\n\t/**\n\t * Make the given branch known to the `EditManager`. The `EditManager` will ensure that all registered\n\t * branches remain usable even as the minimum sequence number advances.\n\t *\n\t * TODO#AB6926: Refactor local branch management into a separate class that encapsulates `trunkBranches` and everything\n\t * that touches it.\n\t * TODO#AB6925: Maintain the divergence point between each branch and the trunk so that we don't have to recompute\n\t * it so often.\n\t */\n\tprivate registerBranch(branch: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tthis.trackBranch(branch);\n\t\t// Whenever the branch is rebased, update our record of its base trunk commit\n\t\tconst offBeforeRebase = branch.on(\"beforeChange\", (args) => {\n\t\t\tif (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n\t\t\t\tthis.untrackBranch(branch);\n\t\t\t}\n\t\t});\n\t\tconst offAfterRebase = branch.on(\"afterChange\", (args) => {\n\t\t\tif (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n\t\t\t\tthis.trackBranch(branch);\n\t\t\t\tthis.trimTrunk();\n\t\t\t}\n\t\t});\n\t\t// When the branch is disposed, update our branch set and trim the trunk\n\t\tconst offDispose = branch.on(\"dispose\", () => {\n\t\t\tthis.untrackBranch(branch);\n\t\t\tthis.trimTrunk();\n\t\t\toffBeforeRebase();\n\t\t\toffAfterRebase();\n\t\t\toffDispose();\n\t\t});\n\t}\n\n\tprivate trackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tconst trunkCommit =\n\t\t\tfindCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n\t\t\tfail(\"Expected branch to be related to trunk\");\n\t\tconst sequenceId = this.getCommitSequenceId(trunkCommit);\n\t\tconst branches = getOrCreate(this.trunkBranches, sequenceId, () => new Set());\n\n\t\tassert(!branches.has(b), 0x670 /* Branch was registered more than once */);\n\t\tbranches.add(b);\n\t}\n\n\tprivate untrackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tconst trunkCommit =\n\t\t\tfindCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n\t\t\tfail(\"Expected branch to be related to trunk\");\n\t\tconst sequenceId = this.getCommitSequenceId(trunkCommit);\n\t\tconst branches =\n\t\t\tthis.trunkBranches.get(sequenceId) ?? fail(\"Expected branch to be tracked\");\n\n\t\tassert(branches.delete(b), 0x671 /* Expected branch to be tracked */);\n\t\tif (branches.size === 0) {\n\t\t\tthis.trunkBranches.delete(sequenceId);\n\t\t}\n\t}\n\n\t/**\n\t * Updates the `trunkBranches` map to reflect the fact that a new local commit was fast-forwarded to the trunk.\n\t * @param priorTrunkCommit - The trunk head prior to the fast-forward.\n\t * @param newId - The ID of the new trunk head.\n\t */\n\tprivate fastForwardBranches(\n\t\tpriorTrunkCommit: GraphCommit<TChangeset>,\n\t\tnewId: SequenceId,\n\t): void {\n\t\tconst currentId = this.getCommitSequenceId(priorTrunkCommit);\n\t\tconst currentBranches = this.trunkBranches.get(currentId);\n\t\tif (currentBranches !== undefined) {\n\t\t\tconst newBranches = getOrCreate(this.trunkBranches, newId, () => new Set());\n\t\t\tfor (const branch of currentBranches) {\n\t\t\t\tif (branch.getHead() !== priorTrunkCommit) {\n\t\t\t\t\tnewBranches.add(branch);\n\t\t\t\t\tcurrentBranches.delete(branch);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentBranches.size === 0) {\n\t\t\t\tthis.trunkBranches.delete(currentId);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the sequence id of the oldest sequenced revertible commit on the local branch.\n\t *\n\t * TODO: may be more performant to maintain the oldest revertible on the branches themselves\n\t * this should be tested and revisited once branches are supported\n\t */\n\tprivate getOldestRevertibleSequenceId(): SequenceId | undefined {\n\t\tif (this._oldestRevertibleSequenceId === undefined) {\n\t\t\tlet oldest: SequenceId | undefined;\n\t\t\tfor (const revision of this.localBranch.revertibleCommits()) {\n\t\t\t\tif (oldest === undefined) {\n\t\t\t\t\toldest = this.trunkMetadata.get(revision)?.sequenceId;\n\t\t\t\t} else {\n\t\t\t\t\tconst current = this.trunkMetadata.get(revision)?.sequenceId;\n\t\t\t\t\tif (current !== undefined) {\n\t\t\t\t\t\toldest = minSequenceId(oldest, current);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._oldestRevertibleSequenceId = oldest;\n\t\t}\n\n\t\treturn this._oldestRevertibleSequenceId;\n\t}\n\n\tprivate onRevertibleDisposed(revertible: Revertible, revision: RevisionTag): void {\n\t\tconst metadata = this.trunkMetadata.get(revision);\n\n\t\t// if this revision hasn't been sequenced, it won't be evicted\n\t\tif (metadata !== undefined) {\n\t\t\tconst { sequenceId: id } = metadata;\n\t\t\t// if this revision corresponds with the current oldest revertible sequence id, replace it with the new oldest\n\t\t\tif (id === this._oldestRevertibleSequenceId) {\n\t\t\t\tthis._oldestRevertibleSequenceId = undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Advances the minimum sequence number, and removes all commits from the trunk which lie outside the collaboration window,\n\t * if they are not retained by revertibles or local branches.\n\t * @param minimumSequenceNumber - the sequence number of the newest commit that all peers (including this one) have received and applied to their trunks.\n\t *\n\t * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n\t */\n\tpublic advanceMinimumSequenceNumber(minimumSequenceNumber: SeqNumber): void {\n\t\tif (minimumSequenceNumber === this.minimumSequenceNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tassert(\n\t\t\tminimumSequenceNumber > this.minimumSequenceNumber,\n\t\t\t0x476 /* number must be larger or equal to current minimumSequenceNumber. */,\n\t\t);\n\n\t\tthis.minimumSequenceNumber = minimumSequenceNumber;\n\t\tthis.trimTrunk();\n\t}\n\n\t/**\n\t * Examines the latest known minimum sequence number and the trunk bases of any registered branches to determine\n\t * if any commits on the trunk are unreferenced and unneeded for future computation; those found are evicted from the trunk.\n\t * @returns the number of commits that were removed from the trunk\n\t */\n\tprivate trimTrunk(): void {\n\t\t/** The sequence id of the oldest commit on the trunk that will be retained */\n\t\tlet trunkTailSequenceId: SequenceId = {\n\t\t\tsequenceNumber: this.minimumSequenceNumber,\n\t\t\tindexInBatch: Number.POSITIVE_INFINITY,\n\t\t};\n\t\t// If there are any outstanding registered branches, get the one that is the oldest (has the \"most behind\" trunk base)\n\t\tconst minimumBranchBaseSequenceId = this.trunkBranches.minKey();\n\t\tif (minimumBranchBaseSequenceId !== undefined) {\n\t\t\t// If that branch is behind the minimum sequence id, we only want to evict commits older than it,\n\t\t\t// even if those commits are behind the minimum sequence id\n\t\t\tconst sequenceIdBeforeMinimumBranchBase = decrementSequenceId(\n\t\t\t\tminimumBranchBaseSequenceId,\n\t\t\t);\n\t\t\ttrunkTailSequenceId = minSequenceId(\n\t\t\t\ttrunkTailSequenceId,\n\t\t\t\tsequenceIdBeforeMinimumBranchBase,\n\t\t\t);\n\t\t}\n\n\t\t// TODO get the oldest revertible sequence id from all registered branches, not just the local branch\n\t\tconst oldestRevertibleSequenceId = this.getOldestRevertibleSequenceId();\n\t\tif (oldestRevertibleSequenceId !== undefined) {\n\t\t\t// use a smaller sequence number so that the oldest revertible is not trimmed\n\t\t\tconst sequenceIdBeforeOldestRevertible = decrementSequenceId(\n\t\t\t\toldestRevertibleSequenceId,\n\t\t\t);\n\t\t\ttrunkTailSequenceId = minSequenceId(\n\t\t\t\ttrunkTailSequenceId,\n\t\t\t\tsequenceIdBeforeOldestRevertible,\n\t\t\t);\n\t\t}\n\n\t\tconst [sequenceId, latestEvicted] = this.getClosestTrunkCommit(\n\t\t\tmaxSequenceId(\n\t\t\t\ttrunkTailSequenceId,\n\t\t\t\tthis.sequenceMap.minKey() ?? minimumPossibleSequenceId,\n\t\t\t),\n\t\t);\n\n\t\t// Don't do any work if the commit found by the search is already the tail of the trunk\n\t\tif (latestEvicted !== this.trunkBase) {\n\t\t\t// The minimum sequence number informs us that all peer branches are at least caught up to the tail commit,\n\t\t\t// so rebase them accordingly. This is necessary to prevent peer branches from referencing any evicted commits.\n\t\t\tfor (const [, branch] of this.peerLocalBranches) {\n\t\t\t\tbranch.rebaseOnto(this.trunk, latestEvicted);\n\t\t\t}\n\n\t\t\t// This mutation is a performance hack. If commits are truly immutable, then changing the trunk's tail requires\n\t\t\t// regenerating the entire commit graph. Instead, we can simply chop off the tail like this if we're certain\n\t\t\t// that there are no outstanding references to any of the commits being removed (other than the references via\n\t\t\t// the trunk). The peer branches have been rebased to the head of the trunk, the local branch is already rebased\n\t\t\t// to the head of the trunk, and all other branches are tracked by `trunkBranches` and known to be ahead of or at\n\t\t\t// `newTrunkBase`. Therefore, no branches should have unique references to any of the commits being evicted here.\n\t\t\t// We mutate the most recent of the evicted commits to become the new trunk base. That way, any other commits that\n\t\t\t// have parent pointers to the latest evicted commit will stay linked, even though that it is no longer part of the trunk.\n\t\t\tconst newTrunkBase = latestEvicted as Mutable<typeof latestEvicted>;\n\t\t\t// The metadata for new trunk base revision needs to be deleted before modifying it.\n\t\t\tthis.trunkMetadata.delete(newTrunkBase.revision);\n\t\t\t// Copying the revision of the old trunk base into the new trunk base means we don't need to write out the original\n\t\t\t// revision to summaries. All clients agree that the trunk base always has the same hardcoded revision.\n\t\t\tnewTrunkBase.revision = this.trunkBase.revision;\n\t\t\t// Overwriting the change is not strictly necessary, but done here for consistency (so all trunk bases are deeply equal).\n\t\t\tnewTrunkBase.change = this.trunkBase.change;\n\t\t\t// Dropping the parent field removes (transitively) all references to the evicted commits so they can be garbage collected.\n\t\t\tdelete newTrunkBase.parent;\n\t\t\tthis.trunkBase = newTrunkBase;\n\n\t\t\t// Update any state that is derived from trunk commits\n\t\t\tthis.sequenceMap.editRange(\n\t\t\t\tminimumPossibleSequenceId,\n\t\t\t\tsequenceId,\n\t\t\t\ttrue,\n\t\t\t\t(s, { revision }) => {\n\t\t\t\t\t// Cleanup look-aside data for each evicted commit\n\t\t\t\t\tthis.trunkMetadata.delete(revision);\n\t\t\t\t\t// Delete all evicted commits from `sequenceMap` except for the latest one, which is the new `trunkBase`\n\t\t\t\t\tif (equalSequenceIds(s, sequenceId)) {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\trevision === newTrunkBase.revision,\n\t\t\t\t\t\t\t0x729 /* Expected last evicted commit to be new trunk base */,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn { delete: true };\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst trunkSize = getPathFromBase(this.trunk.getHead(), this.trunkBase).length;\n\t\t\tassert(\n\t\t\t\tthis.sequenceMap.size === trunkSize + 1,\n\t\t\t\t0x744 /* The size of the sequenceMap must have one element more than the trunk */,\n\t\t\t);\n\t\t\tassert(\n\t\t\t\tthis.trunkMetadata.size === trunkSize,\n\t\t\t\t0x745 /* The size of the trunkMetadata must be the same as the trunk */,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn (\n\t\t\tthis.trunk.getHead() === this.trunkBase &&\n\t\t\tthis.peerLocalBranches.size === 0 &&\n\t\t\tthis.localBranch.getHead() === this.trunk.getHead() &&\n\t\t\tthis.minimumSequenceNumber === minimumPossibleSequenceNumber\n\t\t);\n\t}\n\n\tpublic getSummaryData(): SummaryData<TChangeset> {\n\t\t// The assert below is acceptable at present because summarization only ever occurs on a client with no\n\t\t// local/in-flight changes.\n\t\t// In the future we may wish to relax this constraint. For that to work, the current implementation of\n\t\t// `EditManager` would have to be amended in one of two ways:\n\t\t// A) Changes made by the local session should be represented by a branch in `EditManager.branches`.\n\t\t// B) The contents of such a branch should be computed on demand based on the trunk.\n\t\t// Note that option (A) would be a simple change to `addSequencedChange` whereas (B) would likely require\n\t\t// rebasing trunk changes over the inverse of trunk changes.\n\t\tassert(\n\t\t\tthis.localBranch.getHead() === this.trunk.getHead(),\n\t\t\t0x428 /* Clients with local changes cannot be used to generate summaries */,\n\t\t);\n\n\t\tlet oldestCommitInCollabWindow = this.getClosestTrunkCommit(this.minimumSequenceNumber)[1];\n\t\tassert(\n\t\t\toldestCommitInCollabWindow.parent !== undefined ||\n\t\t\t\toldestCommitInCollabWindow === this.trunkBase,\n\t\t\t0x8c7 /* Expected oldest commit in collab window to have a parent or be the trunk base */,\n\t\t);\n\n\t\t// Path construction is exclusive, so we need to use the parent of the oldest commit in the window if it exists\n\t\toldestCommitInCollabWindow =\n\t\t\toldestCommitInCollabWindow.parent ?? oldestCommitInCollabWindow;\n\n\t\tconst trunk = getPathFromBase(this.trunk.getHead(), oldestCommitInCollabWindow).map((c) => {\n\t\t\tconst metadata =\n\t\t\t\tthis.trunkMetadata.get(c.revision) ?? fail(\"Expected metadata for trunk commit\");\n\t\t\tconst commit: SequencedCommit<TChangeset> = {\n\t\t\t\tchange: c.change,\n\t\t\t\trevision: c.revision,\n\t\t\t\tsequenceNumber: metadata.sequenceId.sequenceNumber,\n\t\t\t\tsessionId: metadata.sessionId,\n\t\t\t};\n\t\t\tif (metadata.sequenceId.indexInBatch !== undefined) {\n\t\t\t\tcommit.indexInBatch = metadata.sequenceId.indexInBatch;\n\t\t\t}\n\t\t\treturn commit;\n\t\t});\n\n\t\tconst peerLocalBranches = new Map<SessionId, SummarySessionBranch<TChangeset>>(\n\t\t\tmapIterable(this.peerLocalBranches.entries(), ([sessionId, branch]) => {\n\t\t\t\tconst branchPath: GraphCommit<TChangeset>[] = [];\n\t\t\t\tconst ancestor =\n\t\t\t\t\tfindCommonAncestor([branch.getHead(), branchPath], this.trunk.getHead()) ??\n\t\t\t\t\tfail(\"Expected branch to be based on trunk\");\n\n\t\t\t\treturn [\n\t\t\t\t\tsessionId,\n\t\t\t\t\t{\n\t\t\t\t\t\tbase: ancestor.revision,\n\t\t\t\t\t\tcommits: branchPath.map((c) => {\n\t\t\t\t\t\t\tconst commit: Commit<TChangeset> = {\n\t\t\t\t\t\t\t\tchange: c.change,\n\t\t\t\t\t\t\t\trevision: c.revision,\n\t\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn commit;\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}),\n\t\t);\n\n\t\treturn { trunk, peerLocalBranches };\n\t}\n\n\tpublic loadSummaryData(data: SummaryData<TChangeset>): void {\n\t\tassert(\n\t\t\tthis.isEmpty(),\n\t\t\t0x68a /* Attempted to load from summary after edit manager was already mutated */,\n\t\t);\n\t\t// Record the tags of each trunk commit as we generate the trunk so they can be looked up quickly\n\t\t// when hydrating the peer branches below\n\t\tconst trunkRevisionCache = new Map<RevisionTag, GraphCommit<TChangeset>>();\n\t\ttrunkRevisionCache.set(this.trunkBase.revision, this.trunkBase);\n\t\tthis.trunk.setHead(\n\t\t\tdata.trunk.reduce((base, c) => {\n\t\t\t\tconst sequenceId: SequenceId =\n\t\t\t\t\tc.indexInBatch === undefined\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tsequenceNumber: c.sequenceNumber,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tsequenceNumber: c.sequenceNumber,\n\t\t\t\t\t\t\t\tindexInBatch: c.indexInBatch,\n\t\t\t\t\t\t };\n\t\t\t\tconst commit = mintCommit(base, c);\n\t\t\t\tthis.sequenceMap.set(sequenceId, commit);\n\t\t\t\tthis.trunkMetadata.set(c.revision, {\n\t\t\t\t\tsequenceId,\n\t\t\t\t\tsessionId: c.sessionId,\n\t\t\t\t});\n\t\t\t\ttrunkRevisionCache.set(c.revision, commit);\n\t\t\t\treturn commit;\n\t\t\t}, this.trunkBase),\n\t\t);\n\n\t\tthis.localBranch.setHead(this.trunk.getHead());\n\n\t\tfor (const [sessionId, branch] of data.peerLocalBranches) {\n\t\t\tconst commit =\n\t\t\t\ttrunkRevisionCache.get(branch.base) ??\n\t\t\t\tfail(\"Expected summary branch to be based off of a revision in the trunk\");\n\n\t\t\tthis.peerLocalBranches.set(\n\t\t\t\tsessionId,\n\t\t\t\tnew SharedTreeBranch(\n\t\t\t\t\tbranch.commits.reduce(mintCommit, commit),\n\t\t\t\t\tthis.changeFamily,\n\t\t\t\t\tthis.mintRevisionTag,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate getCommitSequenceId(commit: GraphCommit<TChangeset>): SequenceId {\n\t\treturn this.trunkMetadata.get(commit.revision)?.sequenceId ?? minimumPossibleSequenceId;\n\t}\n\n\tpublic getTrunkChanges(): readonly RecursiveReadonly<TChangeset>[] {\n\t\treturn this.getTrunkCommits().map((c) => c.change);\n\t}\n\n\tpublic getTrunkCommits(): readonly RecursiveReadonly<GraphCommit<TChangeset>>[] {\n\t\treturn getPathFromBase(this.trunk.getHead(), this.trunkBase);\n\t}\n\n\tpublic getTrunkHead(): GraphCommit<TChangeset> {\n\t\treturn this.trunk.getHead();\n\t}\n\n\tpublic getLocalChanges(): readonly RecursiveReadonly<TChangeset>[] {\n\t\treturn this.getLocalCommits().map((c) => c.change);\n\t}\n\n\tpublic getLocalCommits(): readonly RecursiveReadonly<GraphCommit<TChangeset>>[] {\n\t\treturn this.localCommits;\n\t}\n\n\t/**\n\t * @returns The length of the longest branch maintained by this EditManager.\n\t * This may be the length of a peer branch or the local branch.\n\t * The length is counted from the lowest common ancestor with the trunk such that a fully sequenced branch would\n\t * have length zero.\n\t */\n\tpublic getLongestBranchLength(): number {\n\t\tlet max = 0;\n\t\tconst trunkHead = this.trunk.getHead();\n\t\tfor (const branch of this.peerLocalBranches.values()) {\n\t\t\tconst branchPath = getPathFromBase(branch.getHead(), trunkHead);\n\t\t\tif (branchPath.length > max) {\n\t\t\t\tmax = branchPath.length;\n\t\t\t}\n\t\t}\n\t\tconst localPath = getPathFromBase(this.localBranch.getHead(), trunkHead);\n\t\treturn Math.max(max, localPath.length);\n\t}\n\n\tpublic addSequencedChange(\n\t\tnewCommit: Commit<TChangeset>,\n\t\tsequenceNumber: SeqNumber,\n\t\treferenceSequenceNumber: SeqNumber,\n\t): void {\n\t\tassert(\n\t\t\tsequenceNumber > this.minimumSequenceNumber,\n\t\t\t0x713 /* Expected change sequence number to exceed the last known minimum sequence number */,\n\t\t);\n\n\t\tconst commitsSequenceNumber = this.getBatch(sequenceNumber);\n\t\tconst sequenceId: SequenceId =\n\t\t\tcommitsSequenceNumber.length === 0\n\t\t\t\t? {\n\t\t\t\t\t\tsequenceNumber,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tsequenceNumber,\n\t\t\t\t\t\tindexInBatch: commitsSequenceNumber.length,\n\t\t\t\t };\n\n\t\tif (newCommit.sessionId === this.localSessionId) {\n\t\t\tconst headTrunkCommit = this.trunk.getHead();\n\t\t\tconst firstLocalCommit = this.localCommits.shift();\n\t\t\tassert(\n\t\t\t\tfirstLocalCommit !== undefined,\n\t\t\t\t0x6b5 /* Received a sequenced change from the local session despite having no local changes */,\n\t\t\t);\n\n\t\t\t// The first local branch commit is already rebased over the trunk, so we can push it directly to the trunk.\n\t\t\tthis.pushGraphCommitToTrunk(sequenceId, firstLocalCommit, this.localSessionId);\n\t\t\tthis.fastForwardBranches(headTrunkCommit, sequenceId);\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the revision that the remote change is based on\n\t\tconst [, baseRevisionInTrunk] = this.getClosestTrunkCommit(referenceSequenceNumber);\n\t\t// Rebase that branch over the part of the trunk up to the base revision\n\t\t// This will be a no-op if the sending client has not advanced since the last time we received an edit from it\n\t\tconst peerLocalBranch = getOrCreate(\n\t\t\tthis.peerLocalBranches,\n\t\t\tnewCommit.sessionId,\n\t\t\t() =>\n\t\t\t\tnew SharedTreeBranch(baseRevisionInTrunk, this.changeFamily, this.mintRevisionTag),\n\t\t);\n\t\tpeerLocalBranch.rebaseOnto(this.trunk, baseRevisionInTrunk);\n\n\t\tif (peerLocalBranch.getHead() === this.trunk.getHead()) {\n\t\t\t// If the branch is fully caught up and empty after being rebased, then push to the trunk directly\n\t\t\tthis.pushCommitToTrunk(sequenceId, newCommit);\n\t\t\tpeerLocalBranch.setHead(this.trunk.getHead());\n\t\t} else {\n\t\t\t// Otherwise, rebase the change over the trunk and append it, and append the original change to the peer branch.\n\t\t\tconst newChangeFullyRebased = rebaseChange(\n\t\t\t\tthis.changeFamily.rebaser,\n\t\t\t\tnewCommit.change,\n\t\t\t\tpeerLocalBranch.getHead(),\n\t\t\t\tthis.trunk.getHead(),\n\t\t\t\tthis.mintRevisionTag,\n\t\t\t);\n\n\t\t\tpeerLocalBranch.apply(newCommit.change, newCommit.revision);\n\t\t\tthis.pushCommitToTrunk(sequenceId, {\n\t\t\t\t...newCommit,\n\t\t\t\tchange: newChangeFullyRebased,\n\t\t\t});\n\t\t}\n\n\t\tthis.localBranch.rebaseOnto(this.trunk);\n\t}\n\n\tpublic findLocalCommit(\n\t\trevision: RevisionTag,\n\t): [commit: GraphCommit<TChangeset>, commitsAfter: GraphCommit<TChangeset>[]] {\n\t\tconst commits: GraphCommit<TChangeset>[] = [];\n\t\tconst commit = findAncestor(\n\t\t\t[this.localBranch.getHead(), commits],\n\t\t\t(c) => c.revision === revision,\n\t\t);\n\t\tassert(commit !== undefined, 0x599 /* Expected local branch to contain revision */);\n\t\treturn [commit, commits];\n\t}\n\n\tprivate pushCommitToTrunk(\n\t\tsequenceId: SequenceId,\n\t\tcommit: Commit<TChangeset>,\n\t\tlocal = false,\n\t): void {\n\t\tconst mintedCommit = mintCommit(this.trunk.getHead(), commit);\n\t\tthis.pushGraphCommitToTrunk(sequenceId, mintedCommit, commit.sessionId);\n\t}\n\n\tprivate pushGraphCommitToTrunk(\n\t\tsequenceId: SequenceId,\n\t\tgraphCommit: GraphCommit<TChangeset>,\n\t\tsessionId: SessionId,\n\t): void {\n\t\tthis.trunk.setHead(graphCommit);\n\t\tthis.localBranch.updateRevertibleCommit(graphCommit);\n\t\tconst trunkHead = this.trunk.getHead();\n\t\tthis.sequenceMap.set(sequenceId, trunkHead);\n\t\tthis.trunkMetadata.set(trunkHead.revision, { sequenceId, sessionId });\n\t}\n\n\t/**\n\t * Finds the most recent trunk commit that was sequenced at or before the given point.\n\t * @param searchBy - the sequence number or the sequence id to search for\n\t * @remarks Fails if there is no eligible commit.\n\t * @returns the closest commit and its sequence id\n\t */\n\tprivate getClosestTrunkCommit(searchBy: SeqNumber): [SequenceId, GraphCommit<TChangeset>];\n\tprivate getClosestTrunkCommit(searchBy: SequenceId): [SequenceId, GraphCommit<TChangeset>];\n\tprivate getClosestTrunkCommit(\n\t\tsearchBy: SeqNumber | SequenceId,\n\t): [SequenceId, GraphCommit<TChangeset>] {\n\t\tconst sequenceId: SequenceId =\n\t\t\ttypeof searchBy === \"number\"\n\t\t\t\t? {\n\t\t\t\t\t\t// This is to make sure that the correct commit is selected in this 2 scenarios:\n\t\t\t\t\t\t// 1) The commit is unique for that sequence number\n\t\t\t\t\t\t// 2) There are more than one commit for the same sequence number, in this case we need to select the last one.\n\t\t\t\t\t\tsequenceNumber: searchBy,\n\t\t\t\t\t\tindexInBatch: Number.POSITIVE_INFINITY,\n\t\t\t\t }\n\t\t\t\t: searchBy;\n\n\t\tconst commit = this.sequenceMap.getPairOrNextLower(sequenceId);\n\t\tassert(commit !== undefined, 0x746 /* sequence id has been evicted */);\n\t\treturn commit;\n\t}\n\n\tprivate getBatch(sequenceNumber: SeqNumber): [SequenceId, GraphCommit<TChangeset>][] {\n\t\tconst startSequenceId: SequenceId = {\n\t\t\tsequenceNumber,\n\t\t};\n\t\tconst endSequenceId: SequenceId = {\n\t\t\tsequenceNumber: brand((sequenceNumber as number) + 1),\n\t\t};\n\n\t\treturn this.sequenceMap.getRange(startSequenceId, endSequenceId, false);\n\t}\n}\n\n/**\n * The in-memory data that summaries contain\n */\nexport interface SummaryData<TChangeset> {\n\treadonly trunk: readonly SequencedCommit<TChangeset>[];\n\treadonly peerLocalBranches: ReadonlyMap<SessionId, SummarySessionBranch<TChangeset>>;\n}\n\n/**\n * @returns the path from the base of a branch to its head\n */\nfunction getPathFromBase<TCommit extends { parent?: TCommit }>(\n\tbranchHead: TCommit,\n\tbaseBranchHead: TCommit,\n): TCommit[] {\n\tconst path: TCommit[] = [];\n\tassert(\n\t\tfindCommonAncestor([branchHead, path], baseBranchHead) !== undefined,\n\t\t0x573 /* Expected branches to be related */,\n\t);\n\treturn path;\n}\n"]}
1
+ {"version":3,"file":"editManager.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManager.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 { assert } from \"@fluidframework/core-utils/internal\";\nimport { SessionId } from \"@fluidframework/id-compressor\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\n\nimport {\n\tChangeFamily,\n\tChangeFamilyEditor,\n\tGraphCommit,\n\tRevisionTag,\n\tfindAncestor,\n\tfindCommonAncestor,\n\tmintCommit,\n\trebaseChange,\n} from \"../core/index.js\";\nimport {\n\tMutable,\n\tRecursiveReadonly,\n\tbrand,\n\tfail,\n\tgetOrCreate,\n\tmapIterable,\n} from \"../util/index.js\";\n\nimport { SharedTreeBranch, getChangeReplaceType, onForkTransitive } from \"./branch.js\";\nimport {\n\tCommit,\n\tSeqNumber,\n\tSequenceId,\n\tSequencedCommit,\n\tSummarySessionBranch,\n} from \"./editManagerFormat.js\";\nimport {\n\tdecrementSequenceId,\n\tequalSequenceIds,\n\tmaxSequenceId,\n\tminSequenceId,\n\tsequenceIdComparator,\n} from \"./sequenceIdUtils.js\";\n\nexport const minimumPossibleSequenceNumber: SeqNumber = brand(Number.MIN_SAFE_INTEGER);\nconst minimumPossibleSequenceId: SequenceId = {\n\tsequenceNumber: minimumPossibleSequenceNumber,\n};\n\n/**\n * Represents a local branch of a document and interprets the effect on the document of adding sequenced changes,\n * which were based on a given session's branch, to the document history\n */\n// TODO: Try to reduce this to a single type parameter\nexport class EditManager<\n\tTEditor extends ChangeFamilyEditor,\n\tTChangeset,\n\tTChangeFamily extends ChangeFamily<TEditor, TChangeset>,\n> {\n\t/** The \"trunk\" branch. The trunk represents the list of received sequenced changes. */\n\tprivate readonly trunk: SharedTreeBranch<TEditor, TChangeset>;\n\n\t/**\n\t * Records extra data associated with commits in the {@link trunk}.\n\t * This does not include an entry for the {@link trunkBase}.\n\t */\n\tprivate readonly trunkMetadata = new Map<\n\t\tRevisionTag,\n\t\t{ sequenceId: SequenceId; sessionId: SessionId }\n\t>();\n\t/**\n\t * A map from a sequence id to the commit in the {@link trunk} which has that sequence id.\n\t * This also includes an entry for the {@link trunkBase} which always has the lowest key in the map.\n\t */\n\tprivate readonly sequenceMap = new BTree<SequenceId, GraphCommit<TChangeset>>(\n\t\tundefined,\n\t\tsequenceIdComparator,\n\t);\n\n\t/**\n\t * Branches are maintained to represent the local change list that the issuing client had\n\t * at the time of submitting the latest known edit on the branch.\n\t * This means the head commit of each branch is always in its original (non-rebased) form.\n\t */\n\t// TODO:#4593: Add test to ensure that peer branches are never initialized with a repairDataStoreProvider\n\tprivate readonly peerLocalBranches: Map<SessionId, SharedTreeBranch<TEditor, TChangeset>> =\n\t\tnew Map();\n\n\t/**\n\t * This branch holds the changes made by this client which have not yet been confirmed as sequenced changes.\n\t */\n\tpublic readonly localBranch: SharedTreeBranch<TEditor, TChangeset>;\n\n\t/**\n\t * Tracks where on the trunk all registered branches are based. Each key is the sequence id of a commit on\n\t * the trunk, and the value is the set of all branches who have that commit as their common ancestor with the trunk.\n\t */\n\tprivate readonly trunkBranches = new BTree<\n\t\tSequenceId,\n\t\tSet<SharedTreeBranch<TEditor, TChangeset>>\n\t>(undefined, sequenceIdComparator);\n\n\t/**\n\t * The sequence number of the newest commit on the trunk that has been received by all peers.\n\t * Defaults to {@link minimumPossibleSequenceNumber} if no commits have been received.\n\t *\n\t * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n\t */\n\tprivate minimumSequenceNumber = minimumPossibleSequenceNumber;\n\n\t/**\n\t * A special commit that is a \"base\" (tail) of the trunk, though not part of the trunk itself.\n\t * This makes it possible to model the trunk in the same way as any other branch (it branches off of a base commit)\n\t * which allows it to use branching APIs to interact with the other branches.\n\t * Each time trunk eviction occurs, the most recent evicted commit becomes the new `trunkBase`.\n\t */\n\tprivate trunkBase: GraphCommit<TChangeset>;\n\n\t/**\n\t * The list of commits (from oldest to most recent) that are on the local branch but not on the trunk.\n\t * When a local commit is sequenced, the first commit in this list shifted onto the tip of the trunk.\n\t */\n\tprivate readonly localCommits: GraphCommit<TChangeset>[] = [];\n\n\t/**\n\t * @param changeFamily - the change family of changes on the trunk and local branch\n\t * @param localSessionId - the id of the local session that will be used for local commits\n\t */\n\tpublic constructor(\n\t\tpublic readonly changeFamily: TChangeFamily,\n\t\tpublic readonly localSessionId: SessionId,\n\t\tprivate readonly mintRevisionTag: () => RevisionTag,\n\t) {\n\t\tthis.trunkBase = {\n\t\t\trevision: \"root\",\n\t\t\tchange: changeFamily.rebaser.compose([]),\n\t\t};\n\t\tthis.sequenceMap.set(minimumPossibleSequenceId, this.trunkBase);\n\t\tthis.trunk = new SharedTreeBranch(this.trunkBase, changeFamily, mintRevisionTag);\n\t\tthis.localBranch = new SharedTreeBranch(\n\t\t\tthis.trunk.getHead(),\n\t\t\tchangeFamily,\n\t\t\tmintRevisionTag,\n\t\t);\n\n\t\tthis.localBranch.on(\"afterChange\", (event) => {\n\t\t\tif (event.type === \"append\") {\n\t\t\t\tfor (const commit of event.newCommits) {\n\t\t\t\t\tthis.localCommits.push(commit);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.localCommits.length = 0;\n\t\t\t\tfindCommonAncestor(\n\t\t\t\t\t[this.localBranch.getHead(), this.localCommits],\n\t\t\t\t\tthis.trunk.getHead(),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// Track all forks of the local branch for purposes of trunk eviction. Unlike the local branch, they have\n\t\t// an unknown lifetime and rebase frequency, so we can not make any assumptions about which trunk commits\n\t\t// they require and therefore we monitor them explicitly.\n\t\tonForkTransitive(this.localBranch, (fork) => this.registerBranch(fork));\n\t}\n\n\t/**\n\t * Make the given branch known to the `EditManager`. The `EditManager` will ensure that all registered\n\t * branches remain usable even as the minimum sequence number advances.\n\t *\n\t * TODO#AB6926: Refactor local branch management into a separate class that encapsulates `trunkBranches` and everything\n\t * that touches it.\n\t * TODO#AB6925: Maintain the divergence point between each branch and the trunk so that we don't have to recompute\n\t * it so often.\n\t */\n\tprivate registerBranch(branch: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tthis.trackBranch(branch);\n\t\t// Whenever the branch is rebased, update our record of its base trunk commit\n\t\tconst offBeforeRebase = branch.on(\"beforeChange\", (args) => {\n\t\t\tif (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n\t\t\t\tthis.untrackBranch(branch);\n\t\t\t}\n\t\t});\n\t\tconst offAfterRebase = branch.on(\"afterChange\", (args) => {\n\t\t\tif (args.type === \"replace\" && getChangeReplaceType(args) === \"rebase\") {\n\t\t\t\tthis.trackBranch(branch);\n\t\t\t\tthis.trimTrunk();\n\t\t\t}\n\t\t});\n\t\t// When the branch is disposed, update our branch set and trim the trunk\n\t\tconst offDispose = branch.on(\"dispose\", () => {\n\t\t\tthis.untrackBranch(branch);\n\t\t\tthis.trimTrunk();\n\t\t\toffBeforeRebase();\n\t\t\toffAfterRebase();\n\t\t\toffDispose();\n\t\t});\n\t}\n\n\tprivate trackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tconst trunkCommit =\n\t\t\tfindCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n\t\t\tfail(\"Expected branch to be related to trunk\");\n\t\tconst sequenceId = this.getCommitSequenceId(trunkCommit);\n\t\tconst branches = getOrCreate(this.trunkBranches, sequenceId, () => new Set());\n\n\t\tassert(!branches.has(b), 0x670 /* Branch was registered more than once */);\n\t\tbranches.add(b);\n\t}\n\n\tprivate untrackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {\n\t\tconst trunkCommit =\n\t\t\tfindCommonAncestor(this.trunk.getHead(), b.getHead()) ??\n\t\t\tfail(\"Expected branch to be related to trunk\");\n\t\tconst sequenceId = this.getCommitSequenceId(trunkCommit);\n\t\tconst branches =\n\t\t\tthis.trunkBranches.get(sequenceId) ?? fail(\"Expected branch to be tracked\");\n\n\t\tassert(branches.delete(b), 0x671 /* Expected branch to be tracked */);\n\t\tif (branches.size === 0) {\n\t\t\tthis.trunkBranches.delete(sequenceId);\n\t\t}\n\t}\n\n\t/**\n\t * Updates the `trunkBranches` map to reflect the fact that a new local commit was fast-forwarded to the trunk.\n\t * @param priorTrunkCommit - The trunk head prior to the fast-forward.\n\t * @param newId - The ID of the new trunk head.\n\t */\n\tprivate fastForwardBranches(\n\t\tpriorTrunkCommit: GraphCommit<TChangeset>,\n\t\tnewId: SequenceId,\n\t): void {\n\t\tconst currentId = this.getCommitSequenceId(priorTrunkCommit);\n\t\tconst currentBranches = this.trunkBranches.get(currentId);\n\t\tif (currentBranches !== undefined) {\n\t\t\tconst newBranches = getOrCreate(this.trunkBranches, newId, () => new Set());\n\t\t\tfor (const branch of currentBranches) {\n\t\t\t\tif (branch.getHead() !== priorTrunkCommit) {\n\t\t\t\t\tnewBranches.add(branch);\n\t\t\t\t\tcurrentBranches.delete(branch);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentBranches.size === 0) {\n\t\t\t\tthis.trunkBranches.delete(currentId);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Advances the minimum sequence number, and removes all commits from the trunk which lie outside the collaboration window,\n\t * if they are not retained by revertibles or local branches.\n\t * @param minimumSequenceNumber - the sequence number of the newest commit that all peers (including this one) have received and applied to their trunks.\n\t *\n\t * @remarks If there are more than one commit with the same sequence number we assume this refers to the last commit in the batch.\n\t */\n\tpublic advanceMinimumSequenceNumber(minimumSequenceNumber: SeqNumber): void {\n\t\tif (minimumSequenceNumber === this.minimumSequenceNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tassert(\n\t\t\tminimumSequenceNumber > this.minimumSequenceNumber,\n\t\t\t0x476 /* number must be larger or equal to current minimumSequenceNumber. */,\n\t\t);\n\n\t\tthis.minimumSequenceNumber = minimumSequenceNumber;\n\t\tthis.trimTrunk();\n\t}\n\n\t/**\n\t * Examines the latest known minimum sequence number and the trunk bases of any registered branches to determine\n\t * if any commits on the trunk are unreferenced and unneeded for future computation; those found are evicted from the trunk.\n\t * @returns the number of commits that were removed from the trunk\n\t */\n\tprivate trimTrunk(): void {\n\t\t/** The sequence id of the oldest commit on the trunk that will be retained */\n\t\tlet trunkTailSequenceId: SequenceId = {\n\t\t\tsequenceNumber: this.minimumSequenceNumber,\n\t\t\tindexInBatch: Number.POSITIVE_INFINITY,\n\t\t};\n\t\t// If there are any outstanding registered branches, get the one that is the oldest (has the \"most behind\" trunk base)\n\t\tconst minimumBranchBaseSequenceId = this.trunkBranches.minKey();\n\t\tif (minimumBranchBaseSequenceId !== undefined) {\n\t\t\t// If that branch is behind the minimum sequence id, we only want to evict commits older than it,\n\t\t\t// even if those commits are behind the minimum sequence id\n\t\t\tconst sequenceIdBeforeMinimumBranchBase = decrementSequenceId(\n\t\t\t\tminimumBranchBaseSequenceId,\n\t\t\t);\n\t\t\ttrunkTailSequenceId = minSequenceId(\n\t\t\t\ttrunkTailSequenceId,\n\t\t\t\tsequenceIdBeforeMinimumBranchBase,\n\t\t\t);\n\t\t}\n\n\t\tconst [sequenceId, latestEvicted] = this.getClosestTrunkCommit(\n\t\t\tmaxSequenceId(\n\t\t\t\ttrunkTailSequenceId,\n\t\t\t\tthis.sequenceMap.minKey() ?? minimumPossibleSequenceId,\n\t\t\t),\n\t\t);\n\n\t\t// Don't do any work if the commit found by the search is already the tail of the trunk\n\t\tif (latestEvicted !== this.trunkBase) {\n\t\t\t// The minimum sequence number informs us that all peer branches are at least caught up to the tail commit,\n\t\t\t// so rebase them accordingly. This is necessary to prevent peer branches from referencing any evicted commits.\n\t\t\tfor (const [, branch] of this.peerLocalBranches) {\n\t\t\t\tbranch.rebaseOnto(this.trunk, latestEvicted);\n\t\t\t}\n\n\t\t\t// This mutation is a performance hack. If commits are truly immutable, then changing the trunk's tail requires\n\t\t\t// regenerating the entire commit graph. Instead, we can simply chop off the tail like this if we're certain\n\t\t\t// that there are no outstanding references to any of the commits being removed (other than the references via\n\t\t\t// the trunk). The peer branches have been rebased to the head of the trunk, the local branch is already rebased\n\t\t\t// to the head of the trunk, and all other branches are tracked by `trunkBranches` and known to be ahead of or at\n\t\t\t// `newTrunkBase`. Therefore, no branches should have unique references to any of the commits being evicted here.\n\t\t\t// We mutate the most recent of the evicted commits to become the new trunk base. That way, any other commits that\n\t\t\t// have parent pointers to the latest evicted commit will stay linked, even though that it is no longer part of the trunk.\n\t\t\tconst newTrunkBase = latestEvicted as Mutable<typeof latestEvicted>;\n\t\t\t// The metadata for new trunk base revision needs to be deleted before modifying it.\n\t\t\tthis.trunkMetadata.delete(newTrunkBase.revision);\n\t\t\t// Copying the revision of the old trunk base into the new trunk base means we don't need to write out the original\n\t\t\t// revision to summaries. All clients agree that the trunk base always has the same hardcoded revision.\n\t\t\tnewTrunkBase.revision = this.trunkBase.revision;\n\t\t\t// Overwriting the change is not strictly necessary, but done here for consistency (so all trunk bases are deeply equal).\n\t\t\tnewTrunkBase.change = this.trunkBase.change;\n\t\t\t// Dropping the parent field removes (transitively) all references to the evicted commits so they can be garbage collected.\n\t\t\tdelete newTrunkBase.parent;\n\t\t\tthis.trunkBase = newTrunkBase;\n\n\t\t\t// Update any state that is derived from trunk commits\n\t\t\tthis.sequenceMap.editRange(\n\t\t\t\tminimumPossibleSequenceId,\n\t\t\t\tsequenceId,\n\t\t\t\ttrue,\n\t\t\t\t(s, { revision }) => {\n\t\t\t\t\t// Cleanup look-aside data for each evicted commit\n\t\t\t\t\tthis.trunkMetadata.delete(revision);\n\t\t\t\t\t// Delete all evicted commits from `sequenceMap` except for the latest one, which is the new `trunkBase`\n\t\t\t\t\tif (equalSequenceIds(s, sequenceId)) {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\trevision === newTrunkBase.revision,\n\t\t\t\t\t\t\t0x729 /* Expected last evicted commit to be new trunk base */,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn { delete: true };\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst trunkSize = getPathFromBase(this.trunk.getHead(), this.trunkBase).length;\n\t\t\tassert(\n\t\t\t\tthis.sequenceMap.size === trunkSize + 1,\n\t\t\t\t0x744 /* The size of the sequenceMap must have one element more than the trunk */,\n\t\t\t);\n\t\t\tassert(\n\t\t\t\tthis.trunkMetadata.size === trunkSize,\n\t\t\t\t0x745 /* The size of the trunkMetadata must be the same as the trunk */,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn (\n\t\t\tthis.trunk.getHead() === this.trunkBase &&\n\t\t\tthis.peerLocalBranches.size === 0 &&\n\t\t\tthis.localBranch.getHead() === this.trunk.getHead() &&\n\t\t\tthis.minimumSequenceNumber === minimumPossibleSequenceNumber\n\t\t);\n\t}\n\n\tpublic getSummaryData(): SummaryData<TChangeset> {\n\t\t// The assert below is acceptable at present because summarization only ever occurs on a client with no\n\t\t// local/in-flight changes.\n\t\t// In the future we may wish to relax this constraint. For that to work, the current implementation of\n\t\t// `EditManager` would have to be amended in one of two ways:\n\t\t// A) Changes made by the local session should be represented by a branch in `EditManager.branches`.\n\t\t// B) The contents of such a branch should be computed on demand based on the trunk.\n\t\t// Note that option (A) would be a simple change to `addSequencedChange` whereas (B) would likely require\n\t\t// rebasing trunk changes over the inverse of trunk changes.\n\t\tassert(\n\t\t\tthis.localBranch.getHead() === this.trunk.getHead(),\n\t\t\t0x428 /* Clients with local changes cannot be used to generate summaries */,\n\t\t);\n\n\t\tlet oldestCommitInCollabWindow = this.getClosestTrunkCommit(this.minimumSequenceNumber)[1];\n\t\tassert(\n\t\t\toldestCommitInCollabWindow.parent !== undefined ||\n\t\t\t\toldestCommitInCollabWindow === this.trunkBase,\n\t\t\t0x8c7 /* Expected oldest commit in collab window to have a parent or be the trunk base */,\n\t\t);\n\n\t\t// Path construction is exclusive, so we need to use the parent of the oldest commit in the window if it exists\n\t\toldestCommitInCollabWindow =\n\t\t\toldestCommitInCollabWindow.parent ?? oldestCommitInCollabWindow;\n\n\t\tconst trunk = getPathFromBase(this.trunk.getHead(), oldestCommitInCollabWindow).map((c) => {\n\t\t\tconst metadata =\n\t\t\t\tthis.trunkMetadata.get(c.revision) ?? fail(\"Expected metadata for trunk commit\");\n\t\t\tconst commit: SequencedCommit<TChangeset> = {\n\t\t\t\tchange: c.change,\n\t\t\t\trevision: c.revision,\n\t\t\t\tsequenceNumber: metadata.sequenceId.sequenceNumber,\n\t\t\t\tsessionId: metadata.sessionId,\n\t\t\t};\n\t\t\tif (metadata.sequenceId.indexInBatch !== undefined) {\n\t\t\t\tcommit.indexInBatch = metadata.sequenceId.indexInBatch;\n\t\t\t}\n\t\t\treturn commit;\n\t\t});\n\n\t\tconst peerLocalBranches = new Map<SessionId, SummarySessionBranch<TChangeset>>(\n\t\t\tmapIterable(this.peerLocalBranches.entries(), ([sessionId, branch]) => {\n\t\t\t\tconst branchPath: GraphCommit<TChangeset>[] = [];\n\t\t\t\tconst ancestor =\n\t\t\t\t\tfindCommonAncestor([branch.getHead(), branchPath], this.trunk.getHead()) ??\n\t\t\t\t\tfail(\"Expected branch to be based on trunk\");\n\n\t\t\t\treturn [\n\t\t\t\t\tsessionId,\n\t\t\t\t\t{\n\t\t\t\t\t\tbase: ancestor.revision,\n\t\t\t\t\t\tcommits: branchPath.map((c) => {\n\t\t\t\t\t\t\tconst commit: Commit<TChangeset> = {\n\t\t\t\t\t\t\t\tchange: c.change,\n\t\t\t\t\t\t\t\trevision: c.revision,\n\t\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn commit;\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}),\n\t\t);\n\n\t\treturn { trunk, peerLocalBranches };\n\t}\n\n\tpublic loadSummaryData(data: SummaryData<TChangeset>): void {\n\t\tassert(\n\t\t\tthis.isEmpty(),\n\t\t\t0x68a /* Attempted to load from summary after edit manager was already mutated */,\n\t\t);\n\t\t// Record the tags of each trunk commit as we generate the trunk so they can be looked up quickly\n\t\t// when hydrating the peer branches below\n\t\tconst trunkRevisionCache = new Map<RevisionTag, GraphCommit<TChangeset>>();\n\t\ttrunkRevisionCache.set(this.trunkBase.revision, this.trunkBase);\n\t\tthis.trunk.setHead(\n\t\t\tdata.trunk.reduce((base, c) => {\n\t\t\t\tconst sequenceId: SequenceId =\n\t\t\t\t\tc.indexInBatch === undefined\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tsequenceNumber: c.sequenceNumber,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tsequenceNumber: c.sequenceNumber,\n\t\t\t\t\t\t\t\tindexInBatch: c.indexInBatch,\n\t\t\t\t\t\t };\n\t\t\t\tconst commit = mintCommit(base, c);\n\t\t\t\tthis.sequenceMap.set(sequenceId, commit);\n\t\t\t\tthis.trunkMetadata.set(c.revision, {\n\t\t\t\t\tsequenceId,\n\t\t\t\t\tsessionId: c.sessionId,\n\t\t\t\t});\n\t\t\t\ttrunkRevisionCache.set(c.revision, commit);\n\t\t\t\treturn commit;\n\t\t\t}, this.trunkBase),\n\t\t);\n\n\t\tthis.localBranch.setHead(this.trunk.getHead());\n\n\t\tfor (const [sessionId, branch] of data.peerLocalBranches) {\n\t\t\tconst commit =\n\t\t\t\ttrunkRevisionCache.get(branch.base) ??\n\t\t\t\tfail(\"Expected summary branch to be based off of a revision in the trunk\");\n\n\t\t\tthis.peerLocalBranches.set(\n\t\t\t\tsessionId,\n\t\t\t\tnew SharedTreeBranch(\n\t\t\t\t\tbranch.commits.reduce(mintCommit, commit),\n\t\t\t\t\tthis.changeFamily,\n\t\t\t\t\tthis.mintRevisionTag,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate getCommitSequenceId(commit: GraphCommit<TChangeset>): SequenceId {\n\t\treturn this.trunkMetadata.get(commit.revision)?.sequenceId ?? minimumPossibleSequenceId;\n\t}\n\n\tpublic getTrunkChanges(): readonly RecursiveReadonly<TChangeset>[] {\n\t\treturn this.getTrunkCommits().map((c) => c.change);\n\t}\n\n\tpublic getTrunkCommits(): readonly RecursiveReadonly<GraphCommit<TChangeset>>[] {\n\t\treturn getPathFromBase(this.trunk.getHead(), this.trunkBase);\n\t}\n\n\tpublic getTrunkHead(): GraphCommit<TChangeset> {\n\t\treturn this.trunk.getHead();\n\t}\n\n\tpublic getLocalChanges(): readonly RecursiveReadonly<TChangeset>[] {\n\t\treturn this.getLocalCommits().map((c) => c.change);\n\t}\n\n\tpublic getLocalCommits(): readonly RecursiveReadonly<GraphCommit<TChangeset>>[] {\n\t\treturn this.localCommits;\n\t}\n\n\t/**\n\t * @returns The length of the longest branch maintained by this EditManager.\n\t * This may be the length of a peer branch or the local branch.\n\t * The length is counted from the lowest common ancestor with the trunk such that a fully sequenced branch would\n\t * have length zero.\n\t */\n\tpublic getLongestBranchLength(): number {\n\t\tlet max = 0;\n\t\tconst trunkHead = this.trunk.getHead();\n\t\tfor (const branch of this.peerLocalBranches.values()) {\n\t\t\tconst branchPath = getPathFromBase(branch.getHead(), trunkHead);\n\t\t\tif (branchPath.length > max) {\n\t\t\t\tmax = branchPath.length;\n\t\t\t}\n\t\t}\n\t\tconst localPath = getPathFromBase(this.localBranch.getHead(), trunkHead);\n\t\treturn Math.max(max, localPath.length);\n\t}\n\n\tpublic addSequencedChange(\n\t\tnewCommit: Commit<TChangeset>,\n\t\tsequenceNumber: SeqNumber,\n\t\treferenceSequenceNumber: SeqNumber,\n\t): void {\n\t\tassert(\n\t\t\tsequenceNumber > this.minimumSequenceNumber,\n\t\t\t0x713 /* Expected change sequence number to exceed the last known minimum sequence number */,\n\t\t);\n\n\t\tconst commitsSequenceNumber = this.getBatch(sequenceNumber);\n\t\tconst sequenceId: SequenceId =\n\t\t\tcommitsSequenceNumber.length === 0\n\t\t\t\t? {\n\t\t\t\t\t\tsequenceNumber,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tsequenceNumber,\n\t\t\t\t\t\tindexInBatch: commitsSequenceNumber.length,\n\t\t\t\t };\n\n\t\tif (newCommit.sessionId === this.localSessionId) {\n\t\t\tconst headTrunkCommit = this.trunk.getHead();\n\t\t\tconst firstLocalCommit = this.localCommits.shift();\n\t\t\tassert(\n\t\t\t\tfirstLocalCommit !== undefined,\n\t\t\t\t0x6b5 /* Received a sequenced change from the local session despite having no local changes */,\n\t\t\t);\n\n\t\t\t// The first local branch commit is already rebased over the trunk, so we can push it directly to the trunk.\n\t\t\tthis.pushGraphCommitToTrunk(sequenceId, firstLocalCommit, this.localSessionId);\n\t\t\tthis.fastForwardBranches(headTrunkCommit, sequenceId);\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the revision that the remote change is based on\n\t\tconst [, baseRevisionInTrunk] = this.getClosestTrunkCommit(referenceSequenceNumber);\n\t\t// Rebase that branch over the part of the trunk up to the base revision\n\t\t// This will be a no-op if the sending client has not advanced since the last time we received an edit from it\n\t\tconst peerLocalBranch = getOrCreate(\n\t\t\tthis.peerLocalBranches,\n\t\t\tnewCommit.sessionId,\n\t\t\t() =>\n\t\t\t\tnew SharedTreeBranch(baseRevisionInTrunk, this.changeFamily, this.mintRevisionTag),\n\t\t);\n\t\tpeerLocalBranch.rebaseOnto(this.trunk, baseRevisionInTrunk);\n\n\t\tif (peerLocalBranch.getHead() === this.trunk.getHead()) {\n\t\t\t// If the branch is fully caught up and empty after being rebased, then push to the trunk directly\n\t\t\tthis.pushCommitToTrunk(sequenceId, newCommit);\n\t\t\tpeerLocalBranch.setHead(this.trunk.getHead());\n\t\t} else {\n\t\t\t// Otherwise, rebase the change over the trunk and append it, and append the original change to the peer branch.\n\t\t\tconst newChangeFullyRebased = rebaseChange(\n\t\t\t\tthis.changeFamily.rebaser,\n\t\t\t\tnewCommit.change,\n\t\t\t\tpeerLocalBranch.getHead(),\n\t\t\t\tthis.trunk.getHead(),\n\t\t\t\tthis.mintRevisionTag,\n\t\t\t);\n\n\t\t\tpeerLocalBranch.apply(newCommit.change, newCommit.revision);\n\t\t\tthis.pushCommitToTrunk(sequenceId, {\n\t\t\t\t...newCommit,\n\t\t\t\tchange: newChangeFullyRebased,\n\t\t\t});\n\t\t}\n\n\t\tthis.localBranch.rebaseOnto(this.trunk);\n\t}\n\n\tpublic findLocalCommit(\n\t\trevision: RevisionTag,\n\t): [commit: GraphCommit<TChangeset>, commitsAfter: GraphCommit<TChangeset>[]] {\n\t\tconst commits: GraphCommit<TChangeset>[] = [];\n\t\tconst commit = findAncestor(\n\t\t\t[this.localBranch.getHead(), commits],\n\t\t\t(c) => c.revision === revision,\n\t\t);\n\t\tassert(commit !== undefined, 0x599 /* Expected local branch to contain revision */);\n\t\treturn [commit, commits];\n\t}\n\n\tprivate pushCommitToTrunk(\n\t\tsequenceId: SequenceId,\n\t\tcommit: Commit<TChangeset>,\n\t\tlocal = false,\n\t): void {\n\t\tconst mintedCommit = mintCommit(this.trunk.getHead(), commit);\n\t\tthis.pushGraphCommitToTrunk(sequenceId, mintedCommit, commit.sessionId);\n\t}\n\n\tprivate pushGraphCommitToTrunk(\n\t\tsequenceId: SequenceId,\n\t\tgraphCommit: GraphCommit<TChangeset>,\n\t\tsessionId: SessionId,\n\t): void {\n\t\tthis.trunk.setHead(graphCommit);\n\t\tconst trunkHead = this.trunk.getHead();\n\t\tthis.sequenceMap.set(sequenceId, trunkHead);\n\t\tthis.trunkMetadata.set(trunkHead.revision, { sequenceId, sessionId });\n\t}\n\n\t/**\n\t * Finds the most recent trunk commit that was sequenced at or before the given point.\n\t * @param searchBy - the sequence number or the sequence id to search for\n\t * @remarks Fails if there is no eligible commit.\n\t * @returns the closest commit and its sequence id\n\t */\n\tprivate getClosestTrunkCommit(searchBy: SeqNumber): [SequenceId, GraphCommit<TChangeset>];\n\tprivate getClosestTrunkCommit(searchBy: SequenceId): [SequenceId, GraphCommit<TChangeset>];\n\tprivate getClosestTrunkCommit(\n\t\tsearchBy: SeqNumber | SequenceId,\n\t): [SequenceId, GraphCommit<TChangeset>] {\n\t\tconst sequenceId: SequenceId =\n\t\t\ttypeof searchBy === \"number\"\n\t\t\t\t? {\n\t\t\t\t\t\t// This is to make sure that the correct commit is selected in this 2 scenarios:\n\t\t\t\t\t\t// 1) The commit is unique for that sequence number\n\t\t\t\t\t\t// 2) There are more than one commit for the same sequence number, in this case we need to select the last one.\n\t\t\t\t\t\tsequenceNumber: searchBy,\n\t\t\t\t\t\tindexInBatch: Number.POSITIVE_INFINITY,\n\t\t\t\t }\n\t\t\t\t: searchBy;\n\n\t\tconst commit = this.sequenceMap.getPairOrNextLower(sequenceId);\n\t\tassert(commit !== undefined, 0x746 /* sequence id has been evicted */);\n\t\treturn commit;\n\t}\n\n\tprivate getBatch(sequenceNumber: SeqNumber): [SequenceId, GraphCommit<TChangeset>][] {\n\t\tconst startSequenceId: SequenceId = {\n\t\t\tsequenceNumber,\n\t\t};\n\t\tconst endSequenceId: SequenceId = {\n\t\t\tsequenceNumber: brand((sequenceNumber as number) + 1),\n\t\t};\n\n\t\treturn this.sequenceMap.getRange(startSequenceId, endSequenceId, false);\n\t}\n}\n\n/**\n * The in-memory data that summaries contain\n */\nexport interface SummaryData<TChangeset> {\n\treadonly trunk: readonly SequencedCommit<TChangeset>[];\n\treadonly peerLocalBranches: ReadonlyMap<SessionId, SummarySessionBranch<TChangeset>>;\n}\n\n/**\n * @returns the path from the base of a branch to its head\n */\nfunction getPathFromBase<TCommit extends { parent?: TCommit }>(\n\tbranchHead: TCommit,\n\tbaseBranchHead: TCommit,\n): TCommit[] {\n\tconst path: TCommit[] = [];\n\tassert(\n\t\tfindCommonAncestor([branchHead, path], baseBranchHead) !== undefined,\n\t\t0x573 /* Expected branches to be related */,\n\t);\n\treturn path;\n}\n"]}
@@ -2,13 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ICodecOptions, IJsonCodec, IMultiFormatCodec } from "../codec/index.js";
6
- import { ChangeEncodingContext, EncodedRevisionTag, RevisionTag } from "../core/index.js";
7
- import { SchemaAndPolicy } from "../feature-libraries/index.js";
5
+ import { type ICodecFamily, ICodecOptions, IJsonCodec } from "../codec/index.js";
6
+ import { ChangeEncodingContext, EncodedRevisionTag, RevisionTag, SchemaAndPolicy } from "../core/index.js";
8
7
  import { JsonCompatibleReadOnly } from "../util/index.js";
9
8
  import { SummaryData } from "./editManager.js";
10
9
  export interface EditManagerEncodingContext {
11
10
  readonly schema?: SchemaAndPolicy;
12
11
  }
13
- export declare function makeEditManagerCodec<TChangeset>(changeCodec: IMultiFormatCodec<TChangeset, JsonCompatibleReadOnly, JsonCompatibleReadOnly, ChangeEncodingContext>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions): IJsonCodec<SummaryData<TChangeset>, JsonCompatibleReadOnly, JsonCompatibleReadOnly, ChangeEncodingContext>;
12
+ export declare function makeEditManagerCodec<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions, writeVersion: number): IJsonCodec<SummaryData<TChangeset>, JsonCompatibleReadOnly, JsonCompatibleReadOnly, EditManagerEncodingContext>;
13
+ export declare function makeEditManagerCodecs<TChangeset>(changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions): ICodecFamily<SummaryData<TChangeset>, EditManagerEncodingContext>;
14
14
  //# sourceMappingURL=editManagerCodecs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editManagerCodecs.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,aAAa,EACb,UAAU,EACV,iBAAiB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACN,sBAAsB,EAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAC9C,WAAW,EAAE,iBAAiB,CAC7B,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,CACrB,EACD,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,OAAO,EAAE,aAAa,GACpB,UAAU,CACZ,WAAW,CAAC,UAAU,CAAC,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,CACrB,CA6FA"}
1
+ {"version":3,"file":"editManagerCodecs.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,KAAK,YAAY,EACjB,aAAa,EACb,UAAU,EAIV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,sBAAsB,EAGtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAC9C,YAAY,EAAE,YAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAC7D,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,GAClB,UAAU,CACZ,WAAW,CAAC,UAAU,CAAC,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,CAC1B,CAGA;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAC/C,YAAY,EAAE,YAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAC7D,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,OAAO,EAAE,aAAa,GACpB,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC,CAKnE"}
@@ -2,10 +2,21 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { makeVersionedValidatedCodec, } from "../codec/index.js";
5
+ import { makeCodecFamily, withSchemaValidation, } from "../codec/index.js";
6
+ import { makeVersionDispatchingCodec } from "../codec/index.js";
6
7
  import { JsonCompatibleReadOnlySchema, mapIterable, } from "../util/index.js";
7
- import { EncodedEditManager, version, } from "./editManagerFormat.js";
8
- export function makeEditManagerCodec(changeCodec, revisionTagCodec, options) {
8
+ import { EncodedEditManager } from "./editManagerFormat.js";
9
+ export function makeEditManagerCodec(changeCodecs, revisionTagCodec, options, writeVersion) {
10
+ const family = makeEditManagerCodecs(changeCodecs, revisionTagCodec, options);
11
+ return makeVersionDispatchingCodec(family, { ...options, writeVersion });
12
+ }
13
+ export function makeEditManagerCodecs(changeCodecs, revisionTagCodec, options) {
14
+ return makeCodecFamily([
15
+ [1, makeV1CodecWithVersion(changeCodecs.resolve(1), revisionTagCodec, options, 1)],
16
+ [2, makeV1CodecWithVersion(changeCodecs.resolve(2), revisionTagCodec, options, 2)],
17
+ ]);
18
+ }
19
+ function makeV1CodecWithVersion(changeCodec, revisionTagCodec, options, version) {
9
20
  const format = EncodedEditManager(changeCodec.json.encodedSchema ?? JsonCompatibleReadOnlySchema);
10
21
  const encodeCommit = (commit, context) => ({
11
22
  ...commit,
@@ -17,7 +28,7 @@ export function makeEditManagerCodec(changeCodec, revisionTagCodec, options) {
17
28
  revision: revisionTagCodec.decode(commit.revision, { originatorId: commit.sessionId }),
18
29
  change: changeCodec.json.decode(commit.change, context),
19
30
  });
20
- const codec = makeVersionedValidatedCodec(options, new Set([version]), format, {
31
+ const codec = withSchemaValidation(format, {
21
32
  encode: (data, context) => {
22
33
  const json = {
23
34
  trunk: data.trunk.map((commit) => encodeCommit(commit, {
@@ -53,7 +64,9 @@ export function makeEditManagerCodec(changeCodec, revisionTagCodec, options) {
53
64
  peerLocalBranches: new Map(mapIterable(json.branches, ([sessionId, branch]) => [
54
65
  sessionId,
55
66
  {
56
- base: revisionTagCodec.decode(branch.base, { originatorId: sessionId }),
67
+ base: revisionTagCodec.decode(branch.base, {
68
+ originatorId: sessionId,
69
+ }),
57
70
  commits: branch.commits.map((commit) =>
58
71
  // TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.
59
72
  decodeCommit(commit, {
@@ -63,7 +76,7 @@ export function makeEditManagerCodec(changeCodec, revisionTagCodec, options) {
63
76
  ])),
64
77
  };
65
78
  },
66
- });
79
+ }, options.jsonValidator);
67
80
  // TODO: makeVersionedValidatedCodec and withSchemaValidation should allow the codec to decode JsonCompatibleReadOnly, or Versioned or something like that,
68
81
  // and not leak the internal encoded format in the API surface.
69
82
  // Fixing that would remove the need for this cast.
@@ -1 +1 @@
1
- {"version":3,"file":"editManagerCodecs.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerCodecs.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\tICodecOptions,\n\tIJsonCodec,\n\tIMultiFormatCodec,\n\tmakeVersionedValidatedCodec,\n} from \"../codec/index.js\";\nimport { ChangeEncodingContext, EncodedRevisionTag, RevisionTag } from \"../core/index.js\";\nimport { SchemaAndPolicy } from \"../feature-libraries/index.js\";\nimport {\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnlySchema,\n\tmapIterable,\n} from \"../util/index.js\";\nimport { SummaryData } from \"./editManager.js\";\nimport {\n\tCommit,\n\tEncodedCommit,\n\tEncodedEditManager,\n\tSequencedCommit,\n\tversion,\n} from \"./editManagerFormat.js\";\n\nexport interface EditManagerEncodingContext {\n\treadonly schema?: SchemaAndPolicy;\n}\n\nexport function makeEditManagerCodec<TChangeset>(\n\tchangeCodec: IMultiFormatCodec<\n\t\tTChangeset,\n\t\tJsonCompatibleReadOnly,\n\t\tJsonCompatibleReadOnly,\n\t\tChangeEncodingContext\n\t>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\toptions: ICodecOptions,\n): IJsonCodec<\n\tSummaryData<TChangeset>,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tChangeEncodingContext\n> {\n\tconst format = EncodedEditManager(\n\t\tchangeCodec.json.encodedSchema ?? JsonCompatibleReadOnlySchema,\n\t);\n\n\tconst encodeCommit = <T extends Commit<TChangeset>>(\n\t\tcommit: T,\n\t\tcontext: ChangeEncodingContext,\n\t) => ({\n\t\t...commit,\n\t\trevision: revisionTagCodec.encode(commit.revision, { originatorId: commit.sessionId }),\n\t\tchange: changeCodec.json.encode(commit.change, context),\n\t});\n\n\tconst decodeCommit = <T extends EncodedCommit<JsonCompatibleReadOnly>>(\n\t\tcommit: T,\n\t\tcontext: ChangeEncodingContext,\n\t) => ({\n\t\t...commit,\n\t\trevision: revisionTagCodec.decode(commit.revision, { originatorId: commit.sessionId }),\n\t\tchange: changeCodec.json.decode(commit.change, context),\n\t});\n\n\tconst codec: IJsonCodec<\n\t\tSummaryData<TChangeset>,\n\t\tEncodedEditManager<TChangeset>,\n\t\tEncodedEditManager<TChangeset>,\n\t\tEditManagerEncodingContext\n\t> = makeVersionedValidatedCodec(options, new Set([version]), format, {\n\t\tencode: (data, context: EditManagerEncodingContext) => {\n\t\t\tconst json: EncodedEditManager<TChangeset> = {\n\t\t\t\ttrunk: data.trunk.map((commit) =>\n\t\t\t\t\tencodeCommit(commit, {\n\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tbranches: Array.from(data.peerLocalBranches.entries(), ([sessionId, branch]) => [\n\t\t\t\t\tsessionId,\n\t\t\t\t\t{\n\t\t\t\t\t\tbase: revisionTagCodec.encode(branch.base, {\n\t\t\t\t\t\t\toriginatorId: sessionId,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tcommits: branch.commits.map((commit) =>\n\t\t\t\t\t\t\tencodeCommit(commit, {\n\t\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t\tversion,\n\t\t\t};\n\t\t\treturn json;\n\t\t},\n\t\tdecode: (json: EncodedEditManager<TChangeset>): SummaryData<TChangeset> => {\n\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `any`.\n\t\t\tconst trunk: readonly any[] = json.trunk;\n\t\t\treturn {\n\t\t\t\ttrunk: trunk.map(\n\t\t\t\t\t(commit): SequencedCommit<TChangeset> =>\n\t\t\t\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\t\t\t\t\tdecodeCommit(commit, {\n\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tpeerLocalBranches: new Map(\n\t\t\t\t\tmapIterable(json.branches, ([sessionId, branch]) => [\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbase: revisionTagCodec.decode(branch.base, { originatorId: sessionId }),\n\t\t\t\t\t\t\tcommits: branch.commits.map((commit) =>\n\t\t\t\t\t\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n\t\t\t\t\t\t\t\tdecodeCommit(commit as EncodedCommit<JsonCompatibleReadOnly>, {\n\t\t\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t});\n\t// TODO: makeVersionedValidatedCodec and withSchemaValidation should allow the codec to decode JsonCompatibleReadOnly, or Versioned or something like that,\n\t// and not leak the internal encoded format in the API surface.\n\t// Fixing that would remove the need for this cast.\n\treturn codec as unknown as IJsonCodec<\n\t\tSummaryData<TChangeset>,\n\t\tJsonCompatibleReadOnly,\n\t\tJsonCompatibleReadOnly,\n\t\tChangeEncodingContext\n\t>;\n}\n"]}
1
+ {"version":3,"file":"editManagerCodecs.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAKN,eAAe,EACf,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAOhE,OAAO,EAEN,4BAA4B,EAC5B,WAAW,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAyB,kBAAkB,EAAmB,MAAM,wBAAwB,CAAC;AAMpG,MAAM,UAAU,oBAAoB,CACnC,YAA6D,EAC7D,gBAKC,EACD,OAAsB,EACtB,YAAoB;IAOpB,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,2BAA2B,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,YAA6D,EAC7D,gBAKC,EACD,OAAsB;IAEtB,OAAO,eAAe,CAAC;QACtB,CAAC,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KAClF,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC9B,WAKC,EACD,gBAKC,EACD,OAAsB,EACtB,OAAkD;IAOlD,MAAM,MAAM,GAAG,kBAAkB,CAChC,WAAW,CAAC,IAAI,CAAC,aAAa,IAAI,4BAA4B,CAC9D,CAAC;IAEF,MAAM,YAAY,GAAG,CACpB,MAAS,EACT,OAA8B,EAC7B,EAAE,CAAC,CAAC;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACtF,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CACpB,MAAS,EACT,OAA8B,EAC7B,EAAE,CAAC,CAAC;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACtF,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,KAAK,GAKP,oBAAoB,CACvB,MAAM,EACN;QACC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAmC,EAAE,EAAE;YACrD,MAAM,IAAI,GAAmC;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAChC,YAAY,CAAC,MAAM,EAAE;oBACpB,YAAY,EAAE,MAAM,CAAC,SAAS;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACtB,CAAC,CACF;gBACD,QAAQ,EAAE,KAAK,CAAC,IAAI,CACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAChC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;oBACxB,SAAS;oBACT;wBACC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;4BAC1C,YAAY,EAAE,SAAS;yBACvB,CAAC;wBACF,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtC,YAAY,CAAC,MAAM,EAAE;4BACpB,YAAY,EAAE,MAAM,CAAC,SAAS;4BAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;yBACtB,CAAC,CACF;qBACD;iBACD,CACD;gBACD,OAAO;aACP,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,EAAE,CAAC,IAAoC,EAA2B,EAAE;YACzE,kFAAkF;YAClF,MAAM,KAAK,GAAmB,IAAI,CAAC,KAAK,CAAC;YACzC,OAAO;gBACN,KAAK,EAAE,KAAK,CAAC,GAAG,CACf,CAAC,MAAM,EAA+B,EAAE;gBACvC,iFAAiF;gBACjF,+DAA+D;gBAC/D,YAAY,CAAC,MAAM,EAAE;oBACpB,YAAY,EAAE,MAAM,CAAC,SAAS;iBAC9B,CAAC,CACH;gBACD,iBAAiB,EAAE,IAAI,GAAG,CACzB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;oBACnD,SAAS;oBACT;wBACC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;4BAC1C,YAAY,EAAE,SAAS;yBACvB,CAAC;wBACF,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACtC,iFAAiF;wBACjF,YAAY,CAAC,MAA+C,EAAE;4BAC7D,YAAY,EAAE,MAAM,CAAC,SAAS;yBAC9B,CAAC,CACF;qBACD;iBACD,CAAC,CACF;aACD,CAAC;QACH,CAAC;KACD,EACD,OAAO,CAAC,aAAa,CACrB,CAAC;IACF,2JAA2J;IAC3J,+DAA+D;IAC/D,mDAAmD;IACnD,OAAO,KAKN,CAAC;AACH,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype ICodecFamily,\n\tICodecOptions,\n\tIJsonCodec,\n\tIMultiFormatCodec,\n\tmakeCodecFamily,\n\twithSchemaValidation,\n} from \"../codec/index.js\";\nimport { makeVersionDispatchingCodec } from \"../codec/index.js\";\nimport {\n\tChangeEncodingContext,\n\tEncodedRevisionTag,\n\tRevisionTag,\n\tSchemaAndPolicy,\n} from \"../core/index.js\";\nimport {\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnlySchema,\n\tmapIterable,\n} from \"../util/index.js\";\n\nimport { SummaryData } from \"./editManager.js\";\nimport { Commit, EncodedCommit, EncodedEditManager, SequencedCommit } from \"./editManagerFormat.js\";\n\nexport interface EditManagerEncodingContext {\n\treadonly schema?: SchemaAndPolicy;\n}\n\nexport function makeEditManagerCodec<TChangeset>(\n\tchangeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\toptions: ICodecOptions,\n\twriteVersion: number,\n): IJsonCodec<\n\tSummaryData<TChangeset>,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tEditManagerEncodingContext\n> {\n\tconst family = makeEditManagerCodecs(changeCodecs, revisionTagCodec, options);\n\treturn makeVersionDispatchingCodec(family, { ...options, writeVersion });\n}\n\nexport function makeEditManagerCodecs<TChangeset>(\n\tchangeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\toptions: ICodecOptions,\n): ICodecFamily<SummaryData<TChangeset>, EditManagerEncodingContext> {\n\treturn makeCodecFamily([\n\t\t[1, makeV1CodecWithVersion(changeCodecs.resolve(1), revisionTagCodec, options, 1)],\n\t\t[2, makeV1CodecWithVersion(changeCodecs.resolve(2), revisionTagCodec, options, 2)],\n\t]);\n}\n\nfunction makeV1CodecWithVersion<TChangeset>(\n\tchangeCodec: IMultiFormatCodec<\n\t\tTChangeset,\n\t\tJsonCompatibleReadOnly,\n\t\tJsonCompatibleReadOnly,\n\t\tChangeEncodingContext\n\t>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\toptions: ICodecOptions,\n\tversion: EncodedEditManager<TChangeset>[\"version\"],\n): IJsonCodec<\n\tSummaryData<TChangeset>,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tEditManagerEncodingContext\n> {\n\tconst format = EncodedEditManager(\n\t\tchangeCodec.json.encodedSchema ?? JsonCompatibleReadOnlySchema,\n\t);\n\n\tconst encodeCommit = <T extends Commit<TChangeset>>(\n\t\tcommit: T,\n\t\tcontext: ChangeEncodingContext,\n\t) => ({\n\t\t...commit,\n\t\trevision: revisionTagCodec.encode(commit.revision, { originatorId: commit.sessionId }),\n\t\tchange: changeCodec.json.encode(commit.change, context),\n\t});\n\n\tconst decodeCommit = <T extends EncodedCommit<JsonCompatibleReadOnly>>(\n\t\tcommit: T,\n\t\tcontext: ChangeEncodingContext,\n\t) => ({\n\t\t...commit,\n\t\trevision: revisionTagCodec.decode(commit.revision, { originatorId: commit.sessionId }),\n\t\tchange: changeCodec.json.decode(commit.change, context),\n\t});\n\n\tconst codec: IJsonCodec<\n\t\tSummaryData<TChangeset>,\n\t\tEncodedEditManager<TChangeset>,\n\t\tEncodedEditManager<TChangeset>,\n\t\tEditManagerEncodingContext\n\t> = withSchemaValidation(\n\t\tformat,\n\t\t{\n\t\t\tencode: (data, context: EditManagerEncodingContext) => {\n\t\t\t\tconst json: EncodedEditManager<TChangeset> = {\n\t\t\t\t\ttrunk: data.trunk.map((commit) =>\n\t\t\t\t\t\tencodeCommit(commit, {\n\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\tbranches: Array.from(\n\t\t\t\t\t\tdata.peerLocalBranches.entries(),\n\t\t\t\t\t\t([sessionId, branch]) => [\n\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbase: revisionTagCodec.encode(branch.base, {\n\t\t\t\t\t\t\t\t\toriginatorId: sessionId,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tcommits: branch.commits.map((commit) =>\n\t\t\t\t\t\t\t\t\tencodeCommit(commit, {\n\t\t\t\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t),\n\t\t\t\t\tversion,\n\t\t\t\t};\n\t\t\t\treturn json;\n\t\t\t},\n\t\t\tdecode: (json: EncodedEditManager<TChangeset>): SummaryData<TChangeset> => {\n\t\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `any`.\n\t\t\t\tconst trunk: readonly any[] = json.trunk;\n\t\t\t\treturn {\n\t\t\t\t\ttrunk: trunk.map(\n\t\t\t\t\t\t(commit): SequencedCommit<TChangeset> =>\n\t\t\t\t\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\t\t\t\t\t\tdecodeCommit(commit, {\n\t\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\tpeerLocalBranches: new Map(\n\t\t\t\t\t\tmapIterable(json.branches, ([sessionId, branch]) => [\n\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbase: revisionTagCodec.decode(branch.base, {\n\t\t\t\t\t\t\t\t\toriginatorId: sessionId,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tcommits: branch.commits.map((commit) =>\n\t\t\t\t\t\t\t\t\t// TODO: sort out EncodedCommit vs Commit, and make this type check without `as`.\n\t\t\t\t\t\t\t\t\tdecodeCommit(commit as EncodedCommit<JsonCompatibleReadOnly>, {\n\t\t\t\t\t\t\t\t\t\toriginatorId: commit.sessionId,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t\toptions.jsonValidator,\n\t);\n\t// TODO: makeVersionedValidatedCodec and withSchemaValidation should allow the codec to decode JsonCompatibleReadOnly, or Versioned or something like that,\n\t// and not leak the internal encoded format in the API surface.\n\t// Fixing that would remove the need for this cast.\n\treturn codec as unknown as IJsonCodec<\n\t\tSummaryData<TChangeset>,\n\t\tJsonCompatibleReadOnly,\n\t\tJsonCompatibleReadOnly,\n\t\tEditManagerEncodingContext\n\t>;\n}\n"]}
@@ -2,10 +2,10 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { TSchema, Static } from "@sinclair/typebox";
6
5
  import { SessionId } from "@fluidframework/id-compressor";
6
+ import { Static, TSchema } from "@sinclair/typebox";
7
+ import { EncodedRevisionTag, RevisionTag } from "../core/index.js";
7
8
  import { Brand } from "../util/index.js";
8
- import { RevisionTag, EncodedRevisionTag } from "../core/index.js";
9
9
  /**
10
10
  * Contains a single change to the `SharedTree` and associated metadata.
11
11
  *
@@ -51,11 +51,10 @@ export interface EncodedSummarySessionBranch<TChangeset> {
51
51
  export interface EncodedEditManager<TChangeset> {
52
52
  readonly trunk: readonly Readonly<SequencedCommit<TChangeset>>[];
53
53
  readonly branches: readonly [SessionId, Readonly<EncodedSummarySessionBranch<TChangeset>>][];
54
- readonly version: typeof version;
54
+ readonly version: 1 | 2;
55
55
  }
56
- export declare const version = 1;
57
56
  export declare const EncodedEditManager: <ChangeSchema extends TSchema>(tChange: ChangeSchema) => import("@sinclair/typebox").TObject<{
58
- version: import("@sinclair/typebox").TLiteral<1>;
57
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<1>, import("@sinclair/typebox").TLiteral<2>]>;
59
58
  trunk: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<import("@sinclair/typebox").TCompositeReduce<[import("@sinclair/typebox").TObject<{
60
59
  revision: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>;
61
60
  change: ChangeSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"editManagerFormat.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAuB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAEN,WAAW,EAEX,kBAAkB,EAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,WAAW,MAAM,CAAC,UAAU;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC9B;AAGD,MAAM,MAAM,aAAa,CAAC,UAAU,IAAI;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC9B,CAAC;AAiBF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAGhE,QAAA,MAAM,UAAU;;;EAGd,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,UAAU,CAAE,SAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,UAAU;CAAG;AAKtF;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU;IAC/C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B,CAAC,UAAU;IACtD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;CACvC;AAUD,MAAM,WAAW,kBAAkB,CAAC,UAAU;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,OAAO,IAAM,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAQ7B,CAAC"}
1
+ {"version":3,"file":"editManagerFormat.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAiB,MAAM,EAAE,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EACN,kBAAkB,EAClB,WAAW,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,MAAM,CAAC,UAAU;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC9B;AAGD,MAAM,MAAM,aAAa,CAAC,UAAU,IAAI;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC9B,CAAC;AAiBF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAGhE,QAAA,MAAM,UAAU;;;EAGd,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,UAAU,CAAE,SAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,UAAU;CAAG;AAKtF;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU;IAC/C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B,CAAC,UAAU;IACtD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;CACvC;AAUD,MAAM,WAAW,kBAAkB,CAAC,UAAU;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAQ7B,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { Type } from "@sinclair/typebox";
6
+ import { RevisionTagSchema, SessionIdSchema, } from "../core/index.js";
6
7
  import { brandedNumberType } from "../util/index.js";
7
- import { SessionIdSchema, RevisionTagSchema, } from "../core/index.js";
8
8
  const noAdditionalProps = { additionalProperties: false };
9
9
  const CommitBase = (tChange) => Type.Object({
10
10
  revision: RevisionTagSchema,
@@ -26,9 +26,8 @@ const SummarySessionBranch = (tChange) => Type.Object({
26
26
  base: RevisionTagSchema,
27
27
  commits: Type.Array(Commit(tChange)),
28
28
  }, noAdditionalProps);
29
- export const version = 1.0;
30
29
  export const EncodedEditManager = (tChange) => Type.Object({
31
- version: Type.Literal(version),
30
+ version: Type.Union([Type.Literal(1), Type.Literal(2)]),
32
31
  trunk: Type.Array(SequencedCommit(tChange)),
33
32
  branches: Type.Array(Type.Tuple([SessionIdSchema, SummarySessionBranch(tChange)])),
34
33
  }, noAdditionalProps);
@@ -1 +1 @@
1
- {"version":3,"file":"editManagerFormat.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAW,IAAI,EAAyB,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAS,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACN,eAAe,EAEf,iBAAiB,GAEjB,MAAM,kBAAkB,CAAC;AAsB1B,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAEzE,MAAM,UAAU,GAAG,CAA+B,OAAqB,EAAE,EAAE,CAC1E,IAAI,CAAC,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,eAAe;CAC1B,CAAC,CAAC;AACJ;;;GAGG;AACH,MAAM,MAAM,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACtE,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAG1D,MAAM,SAAS,GAAG,iBAAiB,CAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAElE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CACvE,CAAC,CAAC;AASH,MAAM,eAAe,GAAG,CAA+B,OAAqB,EAAE,EAAE,CAC/E,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAiBtE,MAAM,oBAAoB,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACpF,IAAI,CAAC,MAAM,CACV;IACC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACpC,EACD,iBAAiB,CACjB,CAAC;AAQH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAE3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACzF,IAAI,CAAC,MAAM,CACV;IACC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAClF,EACD,iBAAiB,CACjB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TSchema, Type, ObjectOptions, Static } from \"@sinclair/typebox\";\nimport { SessionId } from \"@fluidframework/id-compressor\";\nimport { Brand, brandedNumberType } from \"../util/index.js\";\nimport {\n\tSessionIdSchema,\n\tRevisionTag,\n\tRevisionTagSchema,\n\tEncodedRevisionTag,\n} from \"../core/index.js\";\n\n/**\n * Contains a single change to the `SharedTree` and associated metadata.\n *\n * TODO: if this type is not used in the encoded format, move it out of this file, and stop using it in EncodedEditManager.\n * If this is an encoded format, clarify the difference between it and EncodedCommit.\n */\nexport interface Commit<TChangeset> {\n\treadonly revision: RevisionTag;\n\treadonly change: TChangeset;\n\t/** An identifier representing the session/user/client that made this commit */\n\treadonly sessionId: SessionId;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport type EncodedCommit<TChangeset> = {\n\treadonly revision: EncodedRevisionTag;\n\treadonly change: TChangeset;\n\treadonly sessionId: SessionId;\n};\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CommitBase = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object({\n\t\trevision: RevisionTagSchema,\n\t\tchange: tChange,\n\t\tsessionId: SessionIdSchema,\n\t});\n/**\n * @privateRemarks Commits are generally encoded from `GraphCommit`s, which often contain extra data.\n * This `noAdditionalProps` is especially important in that light.\n */\nconst Commit = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Composite([CommitBase(tChange)], noAdditionalProps);\n\nexport type SeqNumber = Brand<number, \"edit-manager.SeqNumber\">;\nconst SeqNumber = brandedNumberType<SeqNumber>({ multipleOf: 1 });\n\nconst SequenceId = Type.Object({\n\tsequenceNumber: SeqNumber,\n\tindexInBatch: Type.Optional(Type.Number({ multipleOf: 1, minimum: 0 })),\n});\n\nexport type SequenceId = Static<typeof SequenceId>;\n\n/**\n * A commit with a sequence number but no parentage; used for serializing the `EditManager` into a summary\n */\nexport interface SequencedCommit<TChangeset> extends Commit<TChangeset>, SequenceId {}\n\nconst SequencedCommit = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Composite([CommitBase(tChange), SequenceId], noAdditionalProps);\n\n/**\n * A branch off of the trunk for use in summaries.\n *\n * TODO: if this type is not used in the encoded format, move it out of this file, and stop using it in EncodedEditManager.\n * If this is an encoded format, use EncodedCommit instead of Commit or clarify that Commit is also an encoded format.\n */\nexport interface SummarySessionBranch<TChangeset> {\n\treadonly base: RevisionTag;\n\treadonly commits: Commit<TChangeset>[];\n}\n\nexport interface EncodedSummarySessionBranch<TChangeset> {\n\treadonly base: EncodedRevisionTag;\n\treadonly commits: Commit<TChangeset>[];\n}\nconst SummarySessionBranch = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object(\n\t\t{\n\t\t\tbase: RevisionTagSchema,\n\t\t\tcommits: Type.Array(Commit(tChange)),\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\nexport interface EncodedEditManager<TChangeset> {\n\treadonly trunk: readonly Readonly<SequencedCommit<TChangeset>>[];\n\treadonly branches: readonly [SessionId, Readonly<EncodedSummarySessionBranch<TChangeset>>][];\n\treadonly version: typeof version;\n}\n\nexport const version = 1.0;\n\nexport const EncodedEditManager = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object(\n\t\t{\n\t\t\tversion: Type.Literal(version),\n\t\t\ttrunk: Type.Array(SequencedCommit(tChange)),\n\t\t\tbranches: Type.Array(Type.Tuple([SessionIdSchema, SummarySessionBranch(tChange)])),\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n"]}
1
+ {"version":3,"file":"editManagerFormat.js","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAkC,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAGN,iBAAiB,EACjB,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAS,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAsB5D,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAEzE,MAAM,UAAU,GAAG,CAA+B,OAAqB,EAAE,EAAE,CAC1E,IAAI,CAAC,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,eAAe;CAC1B,CAAC,CAAC;AACJ;;;GAGG;AACH,MAAM,MAAM,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACtE,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAG1D,MAAM,SAAS,GAAG,iBAAiB,CAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAElE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CACvE,CAAC,CAAC;AASH,MAAM,eAAe,GAAG,CAA+B,OAAqB,EAAE,EAAE,CAC/E,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAiBtE,MAAM,oBAAoB,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACpF,IAAI,CAAC,MAAM,CACV;IACC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACpC,EACD,iBAAiB,CACjB,CAAC;AAQH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA+B,OAAqB,EAAE,EAAE,CACzF,IAAI,CAAC,MAAM,CACV;IACC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAClF,EACD,iBAAiB,CACjB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SessionId } from \"@fluidframework/id-compressor\";\nimport { ObjectOptions, Static, TSchema, Type } from \"@sinclair/typebox\";\n\nimport {\n\tEncodedRevisionTag,\n\tRevisionTag,\n\tRevisionTagSchema,\n\tSessionIdSchema,\n} from \"../core/index.js\";\nimport { Brand, brandedNumberType } from \"../util/index.js\";\n\n/**\n * Contains a single change to the `SharedTree` and associated metadata.\n *\n * TODO: if this type is not used in the encoded format, move it out of this file, and stop using it in EncodedEditManager.\n * If this is an encoded format, clarify the difference between it and EncodedCommit.\n */\nexport interface Commit<TChangeset> {\n\treadonly revision: RevisionTag;\n\treadonly change: TChangeset;\n\t/** An identifier representing the session/user/client that made this commit */\n\treadonly sessionId: SessionId;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport type EncodedCommit<TChangeset> = {\n\treadonly revision: EncodedRevisionTag;\n\treadonly change: TChangeset;\n\treadonly sessionId: SessionId;\n};\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nconst CommitBase = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object({\n\t\trevision: RevisionTagSchema,\n\t\tchange: tChange,\n\t\tsessionId: SessionIdSchema,\n\t});\n/**\n * @privateRemarks Commits are generally encoded from `GraphCommit`s, which often contain extra data.\n * This `noAdditionalProps` is especially important in that light.\n */\nconst Commit = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Composite([CommitBase(tChange)], noAdditionalProps);\n\nexport type SeqNumber = Brand<number, \"edit-manager.SeqNumber\">;\nconst SeqNumber = brandedNumberType<SeqNumber>({ multipleOf: 1 });\n\nconst SequenceId = Type.Object({\n\tsequenceNumber: SeqNumber,\n\tindexInBatch: Type.Optional(Type.Number({ multipleOf: 1, minimum: 0 })),\n});\n\nexport type SequenceId = Static<typeof SequenceId>;\n\n/**\n * A commit with a sequence number but no parentage; used for serializing the `EditManager` into a summary\n */\nexport interface SequencedCommit<TChangeset> extends Commit<TChangeset>, SequenceId {}\n\nconst SequencedCommit = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Composite([CommitBase(tChange), SequenceId], noAdditionalProps);\n\n/**\n * A branch off of the trunk for use in summaries.\n *\n * TODO: if this type is not used in the encoded format, move it out of this file, and stop using it in EncodedEditManager.\n * If this is an encoded format, use EncodedCommit instead of Commit or clarify that Commit is also an encoded format.\n */\nexport interface SummarySessionBranch<TChangeset> {\n\treadonly base: RevisionTag;\n\treadonly commits: Commit<TChangeset>[];\n}\n\nexport interface EncodedSummarySessionBranch<TChangeset> {\n\treadonly base: EncodedRevisionTag;\n\treadonly commits: Commit<TChangeset>[];\n}\nconst SummarySessionBranch = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object(\n\t\t{\n\t\t\tbase: RevisionTagSchema,\n\t\t\tcommits: Type.Array(Commit(tChange)),\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n\nexport interface EncodedEditManager<TChangeset> {\n\treadonly trunk: readonly Readonly<SequencedCommit<TChangeset>>[];\n\treadonly branches: readonly [SessionId, Readonly<EncodedSummarySessionBranch<TChangeset>>][];\n\treadonly version: 1 | 2;\n}\n\nexport const EncodedEditManager = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>\n\tType.Object(\n\t\t{\n\t\t\tversion: Type.Union([Type.Literal(1), Type.Literal(2)]),\n\t\t\ttrunk: Type.Array(SequencedCommit(tChange)),\n\t\t\tbranches: Type.Array(Type.Tuple([SessionIdSchema, SummarySessionBranch(tChange)])),\n\t\t},\n\t\tnoAdditionalProps,\n\t);\n"]}
@@ -4,20 +4,21 @@
4
4
  */
5
5
  import { IChannelStorageService } from "@fluidframework/datastore-definitions";
6
6
  import { IGarbageCollectionData, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
7
- import { ICodecOptions, IJsonCodec } from "../codec/index.js";
8
- import { ChangeEncodingContext, ChangeFamily, ChangeFamilyEditor, EncodedRevisionTag, RevisionTag } from "../core/index.js";
9
- import { SchemaAndPolicy } from "../feature-libraries/index.js";
7
+ import { IJsonCodec } from "../codec/index.js";
8
+ import { ChangeFamily, ChangeFamilyEditor, SchemaAndPolicy } from "../core/index.js";
9
+ import { JsonCompatibleReadOnly } from "../util/index.js";
10
+ import { EditManager, SummaryData } from "./editManager.js";
11
+ import { EditManagerEncodingContext } from "./editManagerCodecs.js";
10
12
  import { Summarizable, SummaryElementParser, SummaryElementStringifier } from "./sharedTreeCore.js";
11
- import { EditManager } from "./editManager.js";
12
13
  /**
13
14
  * Provides methods for summarizing and loading an `EditManager`
14
15
  */
15
16
  export declare class EditManagerSummarizer<TChangeset> implements Summarizable {
16
17
  private readonly editManager;
18
+ private readonly codec;
17
19
  private readonly schemaAndPolicy?;
18
20
  readonly key = "EditManager";
19
- private readonly codec;
20
- constructor(editManager: EditManager<ChangeFamilyEditor, TChangeset, ChangeFamily<ChangeFamilyEditor, TChangeset>>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, options: ICodecOptions, schemaAndPolicy?: SchemaAndPolicy | undefined);
21
+ constructor(editManager: EditManager<ChangeFamilyEditor, TChangeset, ChangeFamily<ChangeFamilyEditor, TChangeset>>, codec: IJsonCodec<SummaryData<TChangeset>, JsonCompatibleReadOnly, JsonCompatibleReadOnly, EditManagerEncodingContext>, schemaAndPolicy?: SchemaAndPolicy | undefined);
21
22
  getAttachSummary(stringify: SummaryElementStringifier, fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
22
23
  summarize(stringify: SummaryElementStringifier, fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
23
24
  private summarizeCore;
@@ -1 +1 @@
1
- {"version":3,"file":"editManagerSummarizer.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerSummarizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAO5D;;GAEG;AACH,qBAAa,qBAAqB,CAAC,UAAU,CAAE,YAAW,YAAY;IAepE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAY5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IA1BlC,SAAgB,GAAG,iBAAiB;IAOpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAKpB;gBAEgB,WAAW,EAAE,WAAW,CACxC,kBAAkB,EAClB,UAAU,EACV,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAC5C,EACD,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,OAAO,EAAE,aAAa,EACL,eAAe,CAAC,6BAAiB;IAM5C,gBAAgB,CACtB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB;IAIX,SAAS,CACrB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAIjC,OAAO,CAAC,aAAa;IAQd,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sBAAsB;IAU7C,IAAI,CAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;CAehB"}
1
+ {"version":3,"file":"editManagerSummarizer.d.ts","sourceRoot":"","sources":["../../src/shared-tree-core/editManagerSummarizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIpG;;GAEG;AACH,qBAAa,qBAAqB,CAAC,UAAU,CAAE,YAAW,YAAY;IAIpE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAK5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAMtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAdlC,SAAgB,GAAG,iBAAiB;gBAGlB,WAAW,EAAE,WAAW,CACxC,kBAAkB,EAClB,UAAU,EACV,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAC5C,EACgB,KAAK,EAAE,UAAU,CACjC,WAAW,CAAC,UAAU,CAAC,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,CAC1B,EACgB,eAAe,CAAC,6BAAiB;IAG5C,gBAAgB,CACtB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,qBAAqB;IAIX,SAAS,CACrB,SAAS,EAAE,yBAAyB,EACpC,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAIjC,OAAO,CAAC,aAAa;IAQd,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,sBAAsB;IAU7C,IAAI,CAChB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;CAehB"}
@@ -3,21 +3,18 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { bufferToString } from "@fluid-internal/client-utils";
6
- import { assert } from "@fluidframework/core-utils";
7
- import { createSingleBlobSummary } from "@fluidframework/shared-object-base";
8
- import { makeEditManagerCodec } from "./editManagerCodecs.js";
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
+ import { createSingleBlobSummary } from "@fluidframework/shared-object-base/internal";
9
8
  const stringKey = "String";
10
- const formatVersion = 0;
11
9
  /**
12
10
  * Provides methods for summarizing and loading an `EditManager`
13
11
  */
14
12
  export class EditManagerSummarizer {
15
- constructor(editManager, revisionTagCodec, options, schemaAndPolicy) {
13
+ constructor(editManager, codec, schemaAndPolicy) {
16
14
  this.editManager = editManager;
15
+ this.codec = codec;
17
16
  this.schemaAndPolicy = schemaAndPolicy;
18
17
  this.key = "EditManager";
19
- const changesetCodec = this.editManager.changeFamily.codecs.resolve(formatVersion);
20
- this.codec = makeEditManagerCodec(changesetCodec, revisionTagCodec, options);
21
18
  }
22
19
  getAttachSummary(stringify, fullTree, trackState, telemetryContext) {
23
20
  return this.summarizeCore(stringify);