@fluidframework/tree 2.80.0 → 2.81.0-374083

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 (914) hide show
  1. package/api-report/tree.alpha.api.md +43 -7
  2. package/dist/alpha.d.ts +5 -0
  3. package/dist/core/change-family/changeFamily.d.ts +4 -1
  4. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  5. package/dist/core/change-family/changeFamily.js.map +1 -1
  6. package/dist/core/change-family/index.d.ts +1 -1
  7. package/dist/core/change-family/index.d.ts.map +1 -1
  8. package/dist/core/change-family/index.js.map +1 -1
  9. package/dist/core/index.d.ts +3 -3
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +6 -4
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/rebase/changeRebaser.d.ts +6 -1
  14. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  15. package/dist/core/rebase/changeRebaser.js.map +1 -1
  16. package/dist/core/rebase/index.d.ts +1 -1
  17. package/dist/core/rebase/index.d.ts.map +1 -1
  18. package/dist/core/rebase/index.js +2 -1
  19. package/dist/core/rebase/index.js.map +1 -1
  20. package/dist/core/rebase/types.d.ts +46 -8
  21. package/dist/core/rebase/types.d.ts.map +1 -1
  22. package/dist/core/rebase/types.js +5 -1
  23. package/dist/core/rebase/types.js.map +1 -1
  24. package/dist/core/rebase/utils.d.ts.map +1 -1
  25. package/dist/core/rebase/utils.js +30 -8
  26. package/dist/core/rebase/utils.js.map +1 -1
  27. package/dist/core/tree/anchorSet.js +1 -0
  28. package/dist/core/tree/anchorSet.js.map +1 -1
  29. package/dist/core/tree/detachedFieldIndex.d.ts +6 -0
  30. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  31. package/dist/core/tree/detachedFieldIndex.js +9 -0
  32. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  33. package/dist/core/tree/index.d.ts +1 -1
  34. package/dist/core/tree/index.d.ts.map +1 -1
  35. package/dist/core/tree/index.js +4 -3
  36. package/dist/core/tree/index.js.map +1 -1
  37. package/dist/core/tree/pathTree.d.ts +11 -3
  38. package/dist/core/tree/pathTree.d.ts.map +1 -1
  39. package/dist/core/tree/pathTree.js +14 -2
  40. package/dist/core/tree/pathTree.js.map +1 -1
  41. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  42. package/dist/core/tree/visitDelta.js +3 -2
  43. package/dist/core/tree/visitDelta.js.map +1 -1
  44. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  45. package/dist/core/tree/visitorUtils.js +58 -18
  46. package/dist/core/tree/visitorUtils.js.map +1 -1
  47. package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -4
  48. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  49. package/dist/feature-libraries/changeAtomIdBTree.js +16 -2
  50. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  52. package/dist/feature-libraries/chunked-forest/basicChunk.js +7 -0
  53. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  54. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/chunkTree.js +4 -1
  56. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -1
  59. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  60. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
  61. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  62. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
  63. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  64. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +238 -69
  65. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  66. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  67. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  68. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -2
  69. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  70. package/dist/feature-libraries/default-schema/index.d.ts +2 -1
  71. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  72. package/dist/feature-libraries/default-schema/index.js +5 -2
  73. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  74. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +38 -0
  75. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  76. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +132 -0
  77. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  78. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  79. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  80. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  81. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  82. package/dist/feature-libraries/deltaUtils.d.ts +1 -0
  83. package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
  84. package/dist/feature-libraries/deltaUtils.js +6 -1
  85. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  86. package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
  87. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  88. package/dist/feature-libraries/flex-tree/context.js +6 -0
  89. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  90. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  91. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  92. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  93. package/dist/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  94. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  95. package/dist/feature-libraries/flex-tree/lazyField.js +40 -9
  96. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  97. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  98. package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -1
  99. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  100. package/dist/feature-libraries/index.d.ts +3 -3
  101. package/dist/feature-libraries/index.d.ts.map +1 -1
  102. package/dist/feature-libraries/index.js +8 -3
  103. package/dist/feature-libraries/index.js.map +1 -1
  104. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  105. package/dist/feature-libraries/mapTreeCursor.js +1 -0
  106. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  107. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  108. package/dist/feature-libraries/mitigatedChangeFamily.js +2 -2
  109. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  110. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  111. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  112. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +4 -7
  113. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  114. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -51
  115. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  116. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  117. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  118. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -9
  119. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  120. package/dist/feature-libraries/modular-schema/index.d.ts +4 -4
  121. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  122. package/dist/feature-libraries/modular-schema/index.js +2 -2
  123. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  124. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
  125. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  126. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +255 -161
  127. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  128. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  129. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  130. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js +393 -0
  131. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  132. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  133. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
  134. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  135. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
  136. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  137. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1350 -476
  138. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  139. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  140. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  141. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +146 -0
  142. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  143. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
  144. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  145. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
  146. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  147. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +3 -3
  148. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  149. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  150. package/dist/feature-libraries/object-forest/objectForest.js +3 -1
  151. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  152. package/dist/feature-libraries/optional-field/index.d.ts +2 -2
  153. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  154. package/dist/feature-libraries/optional-field/index.js +1 -2
  155. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  156. package/dist/feature-libraries/optional-field/optionalField.d.ts +5 -26
  157. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  158. package/dist/feature-libraries/optional-field/optionalField.js +221 -443
  159. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  160. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  161. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  162. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +31 -0
  163. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  164. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  165. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  166. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  167. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  168. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  169. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
  170. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  171. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  172. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  173. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js +57 -0
  174. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  175. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  176. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  177. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  178. package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
  179. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  180. package/dist/feature-libraries/sequence-field/compose.js +83 -259
  181. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  182. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  183. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  184. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  185. package/dist/feature-libraries/sequence-field/index.d.ts +2 -3
  186. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  187. package/dist/feature-libraries/sequence-field/index.js +1 -3
  188. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  189. package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
  190. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  191. package/dist/feature-libraries/sequence-field/invert.js +65 -167
  192. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  193. package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  194. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  195. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  196. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  197. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  198. package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -90
  199. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  200. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
  201. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  202. package/dist/feature-libraries/sequence-field/rebase.js +107 -114
  203. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  204. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  205. package/dist/feature-libraries/sequence-field/replaceRevisions.js +18 -31
  206. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  207. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  208. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  209. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  210. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  211. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  212. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +365 -187
  213. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  214. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  215. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -62
  216. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  217. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  218. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  219. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  220. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  221. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  222. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  223. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  224. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  225. package/dist/feature-libraries/sequence-field/types.d.ts +30 -59
  226. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  227. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  228. package/dist/feature-libraries/sequence-field/utils.d.ts +15 -24
  229. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  230. package/dist/feature-libraries/sequence-field/utils.js +116 -305
  231. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  232. package/dist/index.d.ts +3 -2
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +4 -1
  235. package/dist/index.js.map +1 -1
  236. package/dist/packageVersion.d.ts +1 -1
  237. package/dist/packageVersion.d.ts.map +1 -1
  238. package/dist/packageVersion.js +1 -1
  239. package/dist/packageVersion.js.map +1 -1
  240. package/dist/shared-tree/index.d.ts +1 -1
  241. package/dist/shared-tree/index.d.ts.map +1 -1
  242. package/dist/shared-tree/index.js.map +1 -1
  243. package/dist/shared-tree/schematizeTree.d.ts +4 -4
  244. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  245. package/dist/shared-tree/schematizeTree.js +2 -1
  246. package/dist/shared-tree/schematizeTree.js.map +1 -1
  247. package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
  248. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  249. package/dist/shared-tree/schematizingTreeView.js +38 -35
  250. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  251. package/dist/shared-tree/sharedTree.d.ts +9 -3
  252. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  253. package/dist/shared-tree/sharedTree.js +11 -0
  254. package/dist/shared-tree/sharedTree.js.map +1 -1
  255. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  256. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  257. package/dist/shared-tree/sharedTreeChangeCodecs.js +1 -0
  258. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  259. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  260. package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
  261. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  262. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
  263. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  264. package/dist/shared-tree/sharedTreeChangeFamily.js +10 -4
  265. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  266. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  267. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  268. package/dist/shared-tree/sharedTreeEditBuilder.js +14 -7
  269. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  270. package/dist/shared-tree/treeCheckout.d.ts +9 -10
  271. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  272. package/dist/shared-tree/treeCheckout.js +63 -8
  273. package/dist/shared-tree/treeCheckout.js.map +1 -1
  274. package/dist/shared-tree-core/branch.d.ts +3 -2
  275. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  276. package/dist/shared-tree-core/branch.js +9 -4
  277. package/dist/shared-tree-core/branch.js.map +1 -1
  278. package/dist/shared-tree-core/editManager.d.ts +2 -2
  279. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  280. package/dist/shared-tree-core/editManager.js +20 -14
  281. package/dist/shared-tree-core/editManager.js.map +1 -1
  282. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
  283. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  284. package/dist/shared-tree-core/editManagerCodecs.js +10 -2
  285. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  286. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  287. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  288. package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
  289. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  290. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  291. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  292. package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  293. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  294. package/dist/shared-tree-core/index.d.ts +2 -2
  295. package/dist/shared-tree-core/index.d.ts.map +1 -1
  296. package/dist/shared-tree-core/index.js +3 -1
  297. package/dist/shared-tree-core/index.js.map +1 -1
  298. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  299. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  300. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  301. package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
  302. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  303. package/dist/shared-tree-core/messageCodecs.js +10 -2
  304. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  305. package/dist/shared-tree-core/messageFormat.d.ts +1 -0
  306. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  307. package/dist/shared-tree-core/messageFormat.js +6 -0
  308. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  309. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  310. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  311. package/dist/shared-tree-core/messageFormatV1ToV4.js +1 -0
  312. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  313. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
  314. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  315. package/dist/shared-tree-core/sharedTreeCore.js +1 -1
  316. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  317. package/dist/simple-tree/api/index.d.ts +1 -1
  318. package/dist/simple-tree/api/index.d.ts.map +1 -1
  319. package/dist/simple-tree/api/index.js +2 -1
  320. package/dist/simple-tree/api/index.js.map +1 -1
  321. package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -1
  322. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  323. package/dist/simple-tree/api/schemaFactoryBeta.js +1 -1
  324. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  325. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
  326. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  327. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
  328. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  329. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +297 -1
  330. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  331. package/dist/simple-tree/api/tree.d.ts +3 -1
  332. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  333. package/dist/simple-tree/api/tree.js.map +1 -1
  334. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  335. package/dist/simple-tree/core/treeNodeKernel.js +6 -2
  336. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  337. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  338. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  339. package/dist/simple-tree/core/unhydratedFlexTree.js +59 -8
  340. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  341. package/dist/simple-tree/fieldSchema.d.ts +4 -4
  342. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  343. package/dist/simple-tree/fieldSchema.js.map +1 -1
  344. package/dist/simple-tree/index.d.ts +3 -3
  345. package/dist/simple-tree/index.d.ts.map +1 -1
  346. package/dist/simple-tree/index.js +4 -3
  347. package/dist/simple-tree/index.js.map +1 -1
  348. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  349. package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -5
  350. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  351. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  352. package/dist/simple-tree/node-kinds/common.js +1 -1
  353. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  354. package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
  355. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  356. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  357. package/dist/simple-tree/node-kinds/object/objectNode.js +19 -19
  358. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  359. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  360. package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
  361. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  362. package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
  363. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  364. package/dist/simple-tree/prepareForInsertion.js +184 -126
  365. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  366. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  367. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  368. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +31 -13
  369. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  370. package/dist/text/index.d.ts +6 -0
  371. package/dist/text/index.d.ts.map +1 -0
  372. package/dist/text/index.js +10 -0
  373. package/dist/text/index.js.map +1 -0
  374. package/dist/text/textDomain.d.ts +138 -0
  375. package/dist/text/textDomain.d.ts.map +1 -0
  376. package/dist/text/textDomain.js +121 -0
  377. package/dist/text/textDomain.js.map +1 -0
  378. package/dist/treeFactory.d.ts.map +1 -1
  379. package/dist/treeFactory.js +12 -2
  380. package/dist/treeFactory.js.map +1 -1
  381. package/dist/util/bTreeUtils.d.ts +12 -4
  382. package/dist/util/bTreeUtils.d.ts.map +1 -1
  383. package/dist/util/bTreeUtils.js +14 -18
  384. package/dist/util/bTreeUtils.js.map +1 -1
  385. package/dist/util/index.d.ts +1 -1
  386. package/dist/util/index.d.ts.map +1 -1
  387. package/dist/util/index.js +2 -1
  388. package/dist/util/index.js.map +1 -1
  389. package/dist/util/nestedMap.js +12 -12
  390. package/dist/util/nestedMap.js.map +1 -1
  391. package/dist/util/rangeMap.d.ts +24 -12
  392. package/dist/util/rangeMap.d.ts.map +1 -1
  393. package/dist/util/rangeMap.js +46 -6
  394. package/dist/util/rangeMap.js.map +1 -1
  395. package/docs/user-facing/merge-semantics.md +3 -2
  396. package/eslint.config.mts +4 -32
  397. package/lib/alpha.d.ts +5 -0
  398. package/lib/core/change-family/changeFamily.d.ts +4 -1
  399. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  400. package/lib/core/change-family/changeFamily.js.map +1 -1
  401. package/lib/core/change-family/index.d.ts +1 -1
  402. package/lib/core/change-family/index.d.ts.map +1 -1
  403. package/lib/core/change-family/index.js.map +1 -1
  404. package/lib/core/index.d.ts +3 -3
  405. package/lib/core/index.d.ts.map +1 -1
  406. package/lib/core/index.js +2 -2
  407. package/lib/core/index.js.map +1 -1
  408. package/lib/core/rebase/changeRebaser.d.ts +6 -1
  409. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  410. package/lib/core/rebase/changeRebaser.js.map +1 -1
  411. package/lib/core/rebase/index.d.ts +1 -1
  412. package/lib/core/rebase/index.d.ts.map +1 -1
  413. package/lib/core/rebase/index.js +1 -1
  414. package/lib/core/rebase/index.js.map +1 -1
  415. package/lib/core/rebase/types.d.ts +46 -8
  416. package/lib/core/rebase/types.d.ts.map +1 -1
  417. package/lib/core/rebase/types.js +3 -0
  418. package/lib/core/rebase/types.js.map +1 -1
  419. package/lib/core/rebase/utils.d.ts.map +1 -1
  420. package/lib/core/rebase/utils.js +30 -8
  421. package/lib/core/rebase/utils.js.map +1 -1
  422. package/lib/core/tree/anchorSet.js +1 -0
  423. package/lib/core/tree/anchorSet.js.map +1 -1
  424. package/lib/core/tree/detachedFieldIndex.d.ts +6 -0
  425. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  426. package/lib/core/tree/detachedFieldIndex.js +10 -1
  427. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  428. package/lib/core/tree/index.d.ts +1 -1
  429. package/lib/core/tree/index.d.ts.map +1 -1
  430. package/lib/core/tree/index.js +1 -1
  431. package/lib/core/tree/index.js.map +1 -1
  432. package/lib/core/tree/pathTree.d.ts +11 -3
  433. package/lib/core/tree/pathTree.d.ts.map +1 -1
  434. package/lib/core/tree/pathTree.js +12 -1
  435. package/lib/core/tree/pathTree.js.map +1 -1
  436. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  437. package/lib/core/tree/visitDelta.js +3 -2
  438. package/lib/core/tree/visitDelta.js.map +1 -1
  439. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  440. package/lib/core/tree/visitorUtils.js +58 -18
  441. package/lib/core/tree/visitorUtils.js.map +1 -1
  442. package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -4
  443. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  444. package/lib/feature-libraries/changeAtomIdBTree.js +14 -1
  445. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
  446. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  447. package/lib/feature-libraries/chunked-forest/basicChunk.js +8 -1
  448. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  449. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  450. package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -1
  451. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  452. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  453. package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -1
  454. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  455. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
  456. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  457. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
  458. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  459. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +236 -70
  460. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  461. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  462. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  463. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -2
  464. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  465. package/lib/feature-libraries/default-schema/index.d.ts +2 -1
  466. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  467. package/lib/feature-libraries/default-schema/index.js +2 -1
  468. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  469. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +38 -0
  470. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  471. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +128 -0
  472. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  473. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  474. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  475. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  476. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  477. package/lib/feature-libraries/deltaUtils.d.ts +1 -0
  478. package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
  479. package/lib/feature-libraries/deltaUtils.js +5 -1
  480. package/lib/feature-libraries/deltaUtils.js.map +1 -1
  481. package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
  482. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  483. package/lib/feature-libraries/flex-tree/context.js +6 -0
  484. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  485. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  486. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  487. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  488. package/lib/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  489. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  490. package/lib/feature-libraries/flex-tree/lazyField.js +41 -10
  491. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  492. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  493. package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -1
  494. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  495. package/lib/feature-libraries/index.d.ts +3 -3
  496. package/lib/feature-libraries/index.d.ts.map +1 -1
  497. package/lib/feature-libraries/index.js +2 -2
  498. package/lib/feature-libraries/index.js.map +1 -1
  499. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  500. package/lib/feature-libraries/mapTreeCursor.js +2 -1
  501. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  502. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  503. package/lib/feature-libraries/mitigatedChangeFamily.js +2 -2
  504. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  505. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  506. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  507. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +3 -5
  508. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  509. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -51
  510. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  511. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  512. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  513. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -9
  514. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  515. package/lib/feature-libraries/modular-schema/index.d.ts +4 -4
  516. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  517. package/lib/feature-libraries/modular-schema/index.js +2 -2
  518. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  519. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
  520. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  521. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +247 -143
  522. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  523. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  524. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  525. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js +389 -0
  526. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  527. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  528. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
  529. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  530. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
  531. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  532. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1344 -479
  533. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  534. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  535. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  536. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +146 -0
  537. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  538. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +29 -0
  539. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  540. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
  541. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  542. package/lib/feature-libraries/modular-schema/modularChangeTypes.js +1 -1
  543. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  544. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  545. package/lib/feature-libraries/object-forest/objectForest.js +3 -1
  546. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  547. package/lib/feature-libraries/optional-field/index.d.ts +2 -2
  548. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  549. package/lib/feature-libraries/optional-field/index.js +1 -1
  550. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  551. package/lib/feature-libraries/optional-field/optionalField.d.ts +5 -26
  552. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  553. package/lib/feature-libraries/optional-field/optionalField.js +221 -441
  554. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  555. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  556. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  557. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +27 -0
  558. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  559. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  560. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  561. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  562. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  563. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  564. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
  565. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  566. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  567. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  568. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js +53 -0
  569. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  570. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  571. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  572. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  573. package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
  574. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  575. package/lib/feature-libraries/sequence-field/compose.js +85 -261
  576. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  577. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  578. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  579. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  580. package/lib/feature-libraries/sequence-field/index.d.ts +2 -3
  581. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  582. package/lib/feature-libraries/sequence-field/index.js +0 -1
  583. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  584. package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
  585. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  586. package/lib/feature-libraries/sequence-field/invert.js +67 -169
  587. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  588. package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  589. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  590. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  591. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  592. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  593. package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -84
  594. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  595. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
  596. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  597. package/lib/feature-libraries/sequence-field/rebase.js +109 -116
  598. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  599. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  600. package/lib/feature-libraries/sequence-field/replaceRevisions.js +18 -31
  601. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  602. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  603. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  604. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  605. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  606. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  607. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +356 -182
  608. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  609. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  610. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -63
  611. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  612. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  613. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  614. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  615. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  616. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  617. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  618. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  619. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  620. package/lib/feature-libraries/sequence-field/types.d.ts +30 -59
  621. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  622. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  623. package/lib/feature-libraries/sequence-field/utils.d.ts +15 -24
  624. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  625. package/lib/feature-libraries/sequence-field/utils.js +112 -298
  626. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  627. package/lib/index.d.ts +3 -2
  628. package/lib/index.d.ts.map +1 -1
  629. package/lib/index.js +2 -1
  630. package/lib/index.js.map +1 -1
  631. package/lib/packageVersion.d.ts +1 -1
  632. package/lib/packageVersion.d.ts.map +1 -1
  633. package/lib/packageVersion.js +1 -1
  634. package/lib/packageVersion.js.map +1 -1
  635. package/lib/shared-tree/index.d.ts +1 -1
  636. package/lib/shared-tree/index.d.ts.map +1 -1
  637. package/lib/shared-tree/index.js.map +1 -1
  638. package/lib/shared-tree/schematizeTree.d.ts +4 -4
  639. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  640. package/lib/shared-tree/schematizeTree.js +3 -2
  641. package/lib/shared-tree/schematizeTree.js.map +1 -1
  642. package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
  643. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  644. package/lib/shared-tree/schematizingTreeView.js +41 -38
  645. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  646. package/lib/shared-tree/sharedTree.d.ts +9 -3
  647. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  648. package/lib/shared-tree/sharedTree.js +11 -0
  649. package/lib/shared-tree/sharedTree.js.map +1 -1
  650. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  651. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  652. package/lib/shared-tree/sharedTreeChangeCodecs.js +1 -0
  653. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  654. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  655. package/lib/shared-tree/sharedTreeChangeEnricher.js +2 -2
  656. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  657. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
  658. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  659. package/lib/shared-tree/sharedTreeChangeFamily.js +11 -5
  660. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  661. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  662. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  663. package/lib/shared-tree/sharedTreeEditBuilder.js +12 -6
  664. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  665. package/lib/shared-tree/treeCheckout.d.ts +9 -10
  666. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  667. package/lib/shared-tree/treeCheckout.js +66 -11
  668. package/lib/shared-tree/treeCheckout.js.map +1 -1
  669. package/lib/shared-tree-core/branch.d.ts +3 -2
  670. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  671. package/lib/shared-tree-core/branch.js +9 -4
  672. package/lib/shared-tree-core/branch.js.map +1 -1
  673. package/lib/shared-tree-core/editManager.d.ts +2 -2
  674. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  675. package/lib/shared-tree-core/editManager.js +20 -14
  676. package/lib/shared-tree-core/editManager.js.map +1 -1
  677. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
  678. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  679. package/lib/shared-tree-core/editManagerCodecs.js +8 -1
  680. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  681. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  682. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  683. package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
  684. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  685. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  686. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  687. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  688. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  689. package/lib/shared-tree-core/index.d.ts +2 -2
  690. package/lib/shared-tree-core/index.d.ts.map +1 -1
  691. package/lib/shared-tree-core/index.js +2 -2
  692. package/lib/shared-tree-core/index.js.map +1 -1
  693. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  694. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  695. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  696. package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
  697. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  698. package/lib/shared-tree-core/messageCodecs.js +8 -1
  699. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  700. package/lib/shared-tree-core/messageFormat.d.ts +1 -0
  701. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  702. package/lib/shared-tree-core/messageFormat.js +6 -0
  703. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  704. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  705. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  706. package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -0
  707. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  708. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
  709. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  710. package/lib/shared-tree-core/sharedTreeCore.js +1 -1
  711. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  712. package/lib/simple-tree/api/index.d.ts +1 -1
  713. package/lib/simple-tree/api/index.d.ts.map +1 -1
  714. package/lib/simple-tree/api/index.js +1 -1
  715. package/lib/simple-tree/api/index.js.map +1 -1
  716. package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -1
  717. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  718. package/lib/simple-tree/api/schemaFactoryBeta.js +1 -1
  719. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  720. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
  721. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  722. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
  723. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  724. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +270 -0
  725. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  726. package/lib/simple-tree/api/tree.d.ts +3 -1
  727. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  728. package/lib/simple-tree/api/tree.js.map +1 -1
  729. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  730. package/lib/simple-tree/core/treeNodeKernel.js +6 -2
  731. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  732. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  733. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  734. package/lib/simple-tree/core/unhydratedFlexTree.js +58 -8
  735. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  736. package/lib/simple-tree/fieldSchema.d.ts +4 -4
  737. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  738. package/lib/simple-tree/fieldSchema.js.map +1 -1
  739. package/lib/simple-tree/index.d.ts +3 -3
  740. package/lib/simple-tree/index.d.ts.map +1 -1
  741. package/lib/simple-tree/index.js +2 -2
  742. package/lib/simple-tree/index.js.map +1 -1
  743. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  744. package/lib/simple-tree/node-kinds/array/arrayNode.js +8 -6
  745. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  746. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  747. package/lib/simple-tree/node-kinds/common.js +2 -2
  748. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  749. package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
  750. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  751. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  752. package/lib/simple-tree/node-kinds/object/objectNode.js +20 -20
  753. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  754. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  755. package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
  756. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  757. package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
  758. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  759. package/lib/simple-tree/prepareForInsertion.js +184 -125
  760. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  761. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  762. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  763. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +28 -11
  764. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  765. package/lib/text/index.d.ts +6 -0
  766. package/lib/text/index.d.ts.map +1 -0
  767. package/lib/text/index.js +6 -0
  768. package/lib/text/index.js.map +1 -0
  769. package/lib/text/textDomain.d.ts +138 -0
  770. package/lib/text/textDomain.d.ts.map +1 -0
  771. package/lib/text/textDomain.js +118 -0
  772. package/lib/text/textDomain.js.map +1 -0
  773. package/lib/treeFactory.d.ts.map +1 -1
  774. package/lib/treeFactory.js +13 -3
  775. package/lib/treeFactory.js.map +1 -1
  776. package/lib/util/bTreeUtils.d.ts +12 -4
  777. package/lib/util/bTreeUtils.d.ts.map +1 -1
  778. package/lib/util/bTreeUtils.js +15 -19
  779. package/lib/util/bTreeUtils.js.map +1 -1
  780. package/lib/util/index.d.ts +1 -1
  781. package/lib/util/index.d.ts.map +1 -1
  782. package/lib/util/index.js +1 -1
  783. package/lib/util/index.js.map +1 -1
  784. package/lib/util/nestedMap.js +12 -12
  785. package/lib/util/nestedMap.js.map +1 -1
  786. package/lib/util/rangeMap.d.ts +24 -12
  787. package/lib/util/rangeMap.d.ts.map +1 -1
  788. package/lib/util/rangeMap.js +44 -5
  789. package/lib/util/rangeMap.js.map +1 -1
  790. package/package.json +25 -25
  791. package/src/core/change-family/changeFamily.ts +5 -0
  792. package/src/core/change-family/index.ts +1 -0
  793. package/src/core/index.ts +6 -1
  794. package/src/core/rebase/changeRebaser.ts +6 -1
  795. package/src/core/rebase/index.ts +3 -0
  796. package/src/core/rebase/types.ts +65 -21
  797. package/src/core/rebase/utils.ts +39 -11
  798. package/src/core/tree/anchorSet.ts +1 -0
  799. package/src/core/tree/detachedFieldIndex.ts +17 -1
  800. package/src/core/tree/index.ts +2 -1
  801. package/src/core/tree/pathTree.ts +16 -4
  802. package/src/core/tree/visitDelta.ts +6 -2
  803. package/src/core/tree/visitorUtils.ts +55 -19
  804. package/src/feature-libraries/changeAtomIdBTree.ts +37 -5
  805. package/src/feature-libraries/chunked-forest/basicChunk.ts +7 -1
  806. package/src/feature-libraries/chunked-forest/chunkTree.ts +6 -1
  807. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -1
  808. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -0
  809. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +399 -127
  810. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -5
  811. package/src/feature-libraries/default-schema/index.ts +17 -5
  812. package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +188 -0
  813. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
  814. package/src/feature-libraries/deltaUtils.ts +6 -1
  815. package/src/feature-libraries/flex-tree/context.ts +17 -0
  816. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
  817. package/src/feature-libraries/flex-tree/lazyField.ts +68 -25
  818. package/src/feature-libraries/forest-summary/forestSummarizer.ts +3 -1
  819. package/src/feature-libraries/index.ts +22 -8
  820. package/src/feature-libraries/mapTreeCursor.ts +2 -1
  821. package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
  822. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +142 -44
  823. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +32 -58
  824. package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -18
  825. package/src/feature-libraries/modular-schema/index.ts +16 -15
  826. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +560 -351
  827. package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +760 -0
  828. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -1
  829. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2620 -782
  830. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
  831. package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +62 -0
  832. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +58 -11
  833. package/src/feature-libraries/object-forest/objectForest.ts +3 -1
  834. package/src/feature-libraries/optional-field/index.ts +1 -3
  835. package/src/feature-libraries/optional-field/optionalField.ts +318 -562
  836. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
  837. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +24 -38
  838. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
  839. package/src/feature-libraries/optional-field/optionalFieldCodecV3.ts +94 -0
  840. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -1
  841. package/src/feature-libraries/sequence-field/compose.ts +139 -522
  842. package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
  843. package/src/feature-libraries/sequence-field/index.ts +0 -9
  844. package/src/feature-libraries/sequence-field/invert.ts +103 -228
  845. package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
  846. package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -195
  847. package/src/feature-libraries/sequence-field/rebase.ts +169 -205
  848. package/src/feature-libraries/sequence-field/replaceRevisions.ts +25 -47
  849. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +0 -2
  850. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +648 -228
  851. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
  852. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +25 -27
  853. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +19 -129
  854. package/src/feature-libraries/sequence-field/types.ts +34 -64
  855. package/src/feature-libraries/sequence-field/utils.ts +139 -353
  856. package/src/index.ts +7 -0
  857. package/src/packageVersion.ts +1 -1
  858. package/src/shared-tree/index.ts +3 -2
  859. package/src/shared-tree/schematizeTree.ts +21 -8
  860. package/src/shared-tree/schematizingTreeView.ts +56 -70
  861. package/src/shared-tree/sharedTree.ts +20 -3
  862. package/src/shared-tree/sharedTreeChangeCodecs.ts +5 -1
  863. package/src/shared-tree/sharedTreeChangeEnricher.ts +2 -0
  864. package/src/shared-tree/sharedTreeChangeFamily.ts +15 -5
  865. package/src/shared-tree/sharedTreeEditBuilder.ts +39 -8
  866. package/src/shared-tree/treeCheckout.ts +95 -24
  867. package/src/shared-tree-core/branch.ts +13 -3
  868. package/src/shared-tree-core/editManager.ts +42 -28
  869. package/src/shared-tree-core/editManagerCodecs.ts +11 -1
  870. package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
  871. package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
  872. package/src/shared-tree-core/index.ts +2 -0
  873. package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
  874. package/src/shared-tree-core/messageCodecs.ts +11 -1
  875. package/src/shared-tree-core/messageFormat.ts +6 -0
  876. package/src/shared-tree-core/messageFormatV1ToV4.ts +3 -1
  877. package/src/shared-tree-core/sharedTreeCore.ts +4 -1
  878. package/src/simple-tree/api/index.ts +3 -0
  879. package/src/simple-tree/api/schemaFactoryAlpha.ts +1 -1
  880. package/src/simple-tree/api/schemaFactoryBeta.ts +1 -1
  881. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +4 -4
  882. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +501 -0
  883. package/src/simple-tree/api/tree.ts +3 -1
  884. package/src/simple-tree/core/treeNodeKernel.ts +6 -2
  885. package/src/simple-tree/core/unhydratedFlexTree.ts +87 -36
  886. package/src/simple-tree/fieldSchema.ts +6 -4
  887. package/src/simple-tree/index.ts +5 -1
  888. package/src/simple-tree/node-kinds/array/arrayNode.ts +9 -7
  889. package/src/simple-tree/node-kinds/common.ts +2 -5
  890. package/src/simple-tree/node-kinds/map/mapNode.ts +4 -4
  891. package/src/simple-tree/node-kinds/object/objectNode.ts +26 -26
  892. package/src/simple-tree/node-kinds/record/recordNode.ts +10 -9
  893. package/src/simple-tree/prepareForInsertion.ts +343 -201
  894. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +43 -15
  895. package/src/text/README.md +8 -0
  896. package/src/text/index.ts +6 -0
  897. package/src/text/textDomain.ts +199 -0
  898. package/src/treeFactory.ts +14 -4
  899. package/src/util/bTreeUtils.ts +33 -22
  900. package/src/util/index.ts +3 -0
  901. package/src/util/nestedMap.ts +12 -12
  902. package/src/util/rangeMap.ts +72 -18
  903. package/.eslintrc.cjs +0 -125
  904. package/assertTagging.config.mjs +0 -14
  905. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  906. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  907. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
  908. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  909. package/docs/main/sequence-field/move-composition.md +0 -46
  910. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  911. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  912. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
  913. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  914. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
@@ -50,21 +50,29 @@ import {
50
50
  type TreeNodeSchemaIdentifier,
51
51
  type TreeNodeStoredSchema,
52
52
  LeafNodeStoredSchema,
53
+ type ChangeAtomId,
54
+ offsetChangeAtomId,
53
55
  diffHistories,
54
56
  type ChangeMetadata,
55
57
  type ChangeEncodingContext,
56
58
  type ReadOnlyDetachedFieldIndex,
57
59
  } from "../core/index.js";
58
60
  import {
61
+ type DetachedRootIds,
62
+ type DetachedRootLocation,
63
+ type DetachedRootsLocation,
59
64
  type FieldBatchCodec,
65
+ type Locator,
60
66
  type TreeCompressionStrategy,
61
67
  allowsRepoSuperset,
62
68
  buildForest,
69
+ changeAtomFromDetachedNodeId,
63
70
  createNodeIdentifierManager,
64
71
  defaultSchemaPolicy,
65
72
  intoDelta,
66
73
  jsonableTreeFromCursor,
67
74
  makeFieldBatchCodec,
75
+ nodeIdFromChangeAtom,
68
76
  } from "../feature-libraries/index.js";
69
77
  import {
70
78
  SquashingTransactionStack,
@@ -78,13 +86,19 @@ import {
78
86
  Breakable,
79
87
  disposeSymbol,
80
88
  getOrCreate,
89
+ makeArray,
81
90
  type JsonCompatibleReadOnly,
82
91
  type WithBreakable,
83
92
  } from "../util/index.js";
84
93
 
85
94
  import { SharedTreeChangeFamily, hasSchemaChange } from "./sharedTreeChangeFamily.js";
86
95
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
87
- import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
96
+ import {
97
+ type IdBasedSharedTreeEditBuilder,
98
+ type ILocationBasedSharedTreeEditor,
99
+ type IIdBasedSharedTreeEditor,
100
+ LocationBasedSharedTreeEditBuilder,
101
+ } from "./sharedTreeEditBuilder.js";
88
102
  import type { IDisposable } from "@fluidframework/core-interfaces";
89
103
  import {
90
104
  type ImplicitFieldSchema,
@@ -132,8 +146,6 @@ export interface CheckoutEvents {
132
146
  * can use to filter on changes they care about e.g. local vs remote changes.
133
147
  *
134
148
  * @param data - information about the change
135
- * @param getRevertible - a function provided that allows users to get a revertible for the change. If not provided,
136
- * this change is not revertible.
137
149
  */
138
150
  changed(data: ChangeMetadata, getRevertible?: RevertibleAlphaFactory): void;
139
151
 
@@ -236,7 +248,7 @@ export interface ITreeCheckout extends AnchorLocator, ViewableTree, WithBreakabl
236
248
  * Used to edit the state of the tree. Edits will be immediately applied locally to the tree.
237
249
  * If there is no transaction currently ongoing, then the edits will be submitted to Fluid immediately as well.
238
250
  */
239
- readonly editor: ISharedTreeEditor;
251
+ readonly editor: ILocationBasedSharedTreeEditor;
240
252
 
241
253
  /**
242
254
  * A collection of functions for managing transactions.
@@ -294,8 +306,8 @@ export function createTreeCheckout(
294
306
  mintRevisionTag: () => RevisionTag,
295
307
  revisionTagCodec: RevisionTagCodec,
296
308
  args?: {
297
- branch?: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>;
298
- changeFamily?: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>;
309
+ branch?: SharedTreeBranch<IdBasedSharedTreeEditBuilder, SharedTreeChange>;
310
+ changeFamily?: ChangeFamily<IdBasedSharedTreeEditBuilder, SharedTreeChange>;
299
311
  schema?: TreeStoredSchemaRepository;
300
312
  forest?: IEditableForest;
301
313
  fieldBatchCodec?: FieldBatchCodec;
@@ -384,6 +396,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
384
396
  public disposed = false;
385
397
 
386
398
  private editLock: EditLock;
399
+ private readonly locator: Locator;
387
400
 
388
401
  private readonly views = new Set<TreeView<ImplicitFieldSchema>>();
389
402
 
@@ -399,7 +412,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
399
412
  */
400
413
  private readonly revertibleCommitBranches = new Map<
401
414
  RevisionTag,
402
- SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>
415
+ SharedTreeBranch<IdBasedSharedTreeEditBuilder, SharedTreeChange>
403
416
  >();
404
417
 
405
418
  /**
@@ -412,10 +425,13 @@ export class TreeCheckout implements ITreeCheckoutFork {
412
425
  public events: Listenable<CheckoutEvents> = this.#events;
413
426
 
414
427
  public constructor(
415
- branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
428
+ branch: SharedTreeBranch<IdBasedSharedTreeEditBuilder, SharedTreeChange>,
416
429
  /** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
417
430
  public readonly isSharedBranch: boolean,
418
- private readonly changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>,
431
+ private readonly changeFamily: ChangeFamily<
432
+ IdBasedSharedTreeEditBuilder,
433
+ SharedTreeChange
434
+ >,
419
435
  public readonly storedSchema: TreeStoredSchemaRepository,
420
436
  public readonly forest: IEditableForest,
421
437
  private readonly mintRevisionTag: () => RevisionTag,
@@ -433,6 +449,31 @@ export class TreeCheckout implements ITreeCheckoutFork {
433
449
  ) {
434
450
  this.#transaction = this.createTransactionStack(branch);
435
451
  this.editLock = new EditLock(this.#transaction.activeBranchEditor);
452
+ this.locator = {
453
+ locationFromId: (id: ChangeAtomId): DetachedRootLocation => {
454
+ const rootId = this.removedRoots.getEntry(nodeIdFromChangeAtom(id));
455
+ return this.removedRoots.toFieldKey(rootId);
456
+ },
457
+ idFromLocation: (location: DetachedRootLocation): ChangeAtomId => {
458
+ const nodeId = this.removedRoots.fromFieldKey(location);
459
+ return changeAtomFromDetachedNodeId(nodeId);
460
+ },
461
+ locationsFromIdRanges: (ids: DetachedRootIds): DetachedRootsLocation => {
462
+ return ids.flatMap((id) => {
463
+ return makeArray(id.count, (offset) => {
464
+ const field = this.locator.locationFromId(offsetChangeAtomId(id.first, offset));
465
+ return { field, count: 1 };
466
+ });
467
+ });
468
+ },
469
+ idRangesFromLocations: (ids: DetachedRootsLocation): DetachedRootIds => {
470
+ return ids.map((id) => {
471
+ assert(id.count === 1, "Expected count of 1");
472
+ const first = this.locator.idFromLocation(id.field);
473
+ return { first, count: id.count };
474
+ });
475
+ },
476
+ };
436
477
  this.registerForBranchEvents();
437
478
  }
438
479
 
@@ -453,8 +494,8 @@ export class TreeCheckout implements ITreeCheckoutFork {
453
494
  }
454
495
 
455
496
  private createTransactionStack(
456
- branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
457
- ): SquashingTransactionStack<SharedTreeEditBuilder, SharedTreeChange> {
497
+ branch: SharedTreeBranch<IdBasedSharedTreeEditBuilder, SharedTreeChange>,
498
+ ): SquashingTransactionStack<IdBasedSharedTreeEditBuilder, SharedTreeChange> {
458
499
  return new SquashingTransactionStack(branch, this.mintRevisionTag, () => {
459
500
  const disposeForks = this.disposeForksAfterTransaction
460
501
  ? trackForksForDisposal(this)
@@ -566,6 +607,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
566
607
  change: encodedChange,
567
608
  } satisfies SerializedChange;
568
609
  },
610
+ getRevertible: (onDisposed) => getRevertible?.(onDisposed),
569
611
  };
570
612
 
571
613
  this.#events.emit("changed", metadata, getRevertible);
@@ -591,7 +633,9 @@ export class TreeCheckout implements ITreeCheckoutFork {
591
633
  this.#events.emit("afterBatch");
592
634
  this.editLock.unlock();
593
635
  if (event.type === "append") {
594
- event.newCommits.forEach((commit) => this.validateCommit(commit));
636
+ for (const commit of event.newCommits) {
637
+ this.validateCommit(commit);
638
+ }
595
639
  }
596
640
  };
597
641
 
@@ -653,7 +697,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
653
697
  // When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the
654
698
  // trimmed revisions.
655
699
  this.withCombinedVisitor((visitor) => {
656
- revisions.forEach((revision) => {
700
+ for (const revision of revisions) {
657
701
  // get all the roots last created or used by the revision
658
702
  const roots = this._removedRoots.getRootsLastTouchedByRevision(revision);
659
703
 
@@ -663,7 +707,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
663
707
  }
664
708
 
665
709
  this._removedRoots.deleteRootsLastTouchedByRevision(revision);
666
- });
710
+ }
667
711
  });
668
712
  };
669
713
 
@@ -789,9 +833,9 @@ export class TreeCheckout implements ITreeCheckoutFork {
789
833
  return this.forest.anchors.events;
790
834
  }
791
835
 
792
- public get editor(): ISharedTreeEditor {
836
+ public get editor(): ILocationBasedSharedTreeEditor {
793
837
  this.checkNotDisposed();
794
- return this.editLock.editor;
838
+ return new LocationBasedSharedTreeEditBuilder(this.editLock.editor, this.locator);
795
839
  }
796
840
 
797
841
  public locate(anchor: Anchor): AnchorNode | undefined {
@@ -812,18 +856,19 @@ export class TreeCheckout implements ITreeCheckoutFork {
812
856
  * To avoid updating observers of the view state with intermediate results during a transaction,
813
857
  * use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
814
858
  */
815
- #transaction: SquashingTransactionStack<SharedTreeEditBuilder, SharedTreeChange>;
859
+ #transaction: SquashingTransactionStack<IdBasedSharedTreeEditBuilder, SharedTreeChange>;
816
860
 
817
861
  public branch(): TreeCheckout {
818
862
  this.checkNotDisposed(
819
863
  "The parent branch has already been disposed and can no longer create new branches.",
820
864
  );
865
+ this.editLock.checkUnlocked("Branching");
866
+
821
867
  // Branching after an unfinished transaction would expose the application to a state where its invariants may be violated.
822
868
  if (this.transaction.isInProgress()) {
823
869
  throw new UsageError("A view cannot be forked while it has a pending transaction.");
824
870
  }
825
871
 
826
- this.editLock.checkUnlocked("Branching");
827
872
  const anchors = new AnchorSet();
828
873
  const branch = this.#transaction.activeBranch.fork();
829
874
  const storedSchema = this.storedSchema.clone();
@@ -847,7 +892,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
847
892
  }
848
893
 
849
894
  public switchBranch(
850
- branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
895
+ branch: SharedTreeBranch<IdBasedSharedTreeEditBuilder, SharedTreeChange>,
851
896
  ): void {
852
897
  // TODO: Dispose old branch, if necessary
853
898
  assert(
@@ -1126,7 +1171,9 @@ export class TreeCheckout implements ITreeCheckoutFork {
1126
1171
  private validateCommit(commit: GraphCommit<SharedTreeChange>): void {
1127
1172
  const validated = getOrCreate(this.#validatedCommits, commit, () => []);
1128
1173
  if (validated !== true) {
1129
- validated.forEach((fn) => fn(commit));
1174
+ for (const fn of validated) {
1175
+ fn(commit);
1176
+ }
1130
1177
  this.#validatedCommits.set(commit, true);
1131
1178
  }
1132
1179
  }
@@ -1142,19 +1189,23 @@ class EditLock {
1142
1189
  * Edits the tree by calling the methods of the editor passed into the {@link EditLock} constructor.
1143
1190
  * @remarks Edits will throw an error if the lock is currently locked.
1144
1191
  */
1145
- public readonly editor: ISharedTreeEditor;
1192
+ public readonly editor: IIdBasedSharedTreeEditor;
1146
1193
  private locked = false;
1147
1194
 
1148
1195
  /**
1149
1196
  * @param editor - an editor which will be used to create a new editor that is monitored to determine if any changes are happening to the tree.
1150
1197
  * Use {@link EditLock.editor} in place of the original editor to ensure that changes are monitored.
1151
1198
  */
1152
- public constructor(editor: ISharedTreeEditor) {
1199
+ public constructor(editor: IIdBasedSharedTreeEditor) {
1153
1200
  const checkLock = (): void => this.checkUnlocked("Editing the tree");
1154
1201
  this.editor = {
1155
1202
  get schema() {
1156
1203
  return editor.schema;
1157
1204
  },
1205
+ buildRoots(unhydrated) {
1206
+ checkLock();
1207
+ return editor.buildRoots(unhydrated);
1208
+ },
1158
1209
  valueField(...fieldArgs) {
1159
1210
  const valueField = editor.valueField(...fieldArgs);
1160
1211
  return {
@@ -1162,6 +1213,10 @@ class EditLock {
1162
1213
  checkLock();
1163
1214
  valueField.set(...editArgs);
1164
1215
  },
1216
+ attach(...editArgs) {
1217
+ checkLock();
1218
+ valueField.attach(...editArgs);
1219
+ },
1165
1220
  };
1166
1221
  },
1167
1222
  optionalField(...fieldArgs) {
@@ -1171,6 +1226,14 @@ class EditLock {
1171
1226
  checkLock();
1172
1227
  optionalField.set(...editArgs);
1173
1228
  },
1229
+ attach(...editArgs) {
1230
+ checkLock();
1231
+ optionalField.attach(...editArgs);
1232
+ },
1233
+ clear(...editArgs) {
1234
+ checkLock();
1235
+ optionalField.clear(...editArgs);
1236
+ },
1174
1237
  };
1175
1238
  },
1176
1239
  sequenceField(...fieldArgs) {
@@ -1180,6 +1243,10 @@ class EditLock {
1180
1243
  checkLock();
1181
1244
  sequenceField.insert(...editArgs);
1182
1245
  },
1246
+ attach(...editArgs) {
1247
+ checkLock();
1248
+ sequenceField.attach(...editArgs);
1249
+ },
1183
1250
  remove(...editArgs) {
1184
1251
  checkLock();
1185
1252
  sequenceField.remove(...editArgs);
@@ -1260,8 +1327,12 @@ function trackForksForDisposal(checkout: TreeCheckout): () => void {
1260
1327
  let disposed = false;
1261
1328
  return () => {
1262
1329
  assert(!disposed, 0xaa9 /* Forks may only be disposed once */);
1263
- forks.forEach((fork) => fork.dispose());
1264
- onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());
1330
+ for (const fork of forks) {
1331
+ fork.dispose();
1332
+ }
1333
+ for (const unsubscribe of onDisposeUnSubscribes) {
1334
+ unsubscribe();
1335
+ }
1265
1336
  onForkUnSubscribe();
1266
1337
  disposed = true;
1267
1338
  };
@@ -22,6 +22,7 @@ import {
22
22
  rebaseBranch,
23
23
  tagRollbackInverse,
24
24
  type RebaseStatsWithDuration,
25
+ type EditorOptions,
25
26
  } from "../core/index.js";
26
27
  import { hasSome, defineLazyCachedProperty } from "../util/index.js";
27
28
  import type {
@@ -129,9 +130,12 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
129
130
  private readonly telemetryEventBatcher?: TelemetryEventBatcher<
130
131
  keyof RebaseStatsWithDuration
131
132
  >,
133
+ private readonly editorOptions?: EditorOptions,
132
134
  ) {
133
- this.editor = this.changeFamily.buildEditor(mintRevisionTag, (change) =>
134
- this.apply(change),
135
+ this.editor = this.changeFamily.buildEditor(
136
+ mintRevisionTag,
137
+ (change) => this.apply(change),
138
+ this.editorOptions,
135
139
  );
136
140
  this.unsubscribeBranchTrimmer = branchTrimmer?.on("ancestryTrimmed", (commit) => {
137
141
  this.#events.emit("ancestryTrimmed", commit);
@@ -201,6 +205,8 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
201
205
  this.changeFamily,
202
206
  mintRevisionTag,
203
207
  this.branchTrimmer,
208
+ undefined,
209
+ this.editorOptions,
204
210
  );
205
211
  this.#events.emit("fork", fork);
206
212
  return fork;
@@ -400,5 +406,9 @@ export function onForkTransitive<T extends { events: Listenable<{ fork(t: T): vo
400
406
  onFork(fork);
401
407
  }),
402
408
  );
403
- return () => offs.forEach((off) => off());
409
+ return () => {
410
+ for (const off of offs) {
411
+ off();
412
+ }
413
+ };
404
414
  }
@@ -18,6 +18,7 @@ import {
18
18
  mintCommit,
19
19
  type RebaseStatsWithDuration,
20
20
  tagChange,
21
+ type EditorOptions,
21
22
  } from "../core/index.js";
22
23
  import { type Mutable, brand, getOrCreate, mapIterable } from "../util/index.js";
23
24
 
@@ -123,6 +124,7 @@ export class EditManager<
123
124
  public readonly localSessionId: SessionId,
124
125
  private readonly mintRevisionTag: () => RevisionTag,
125
126
  private readonly onSharedBranchCreated?: (branchId: BranchId) => void,
127
+ editorOptions?: EditorOptions,
126
128
  logger?: ITelemetryLoggerExt,
127
129
  ) {
128
130
  this.trunkBase = {
@@ -147,9 +149,10 @@ export class EditManager<
147
149
  mintRevisionTag,
148
150
  this._events,
149
151
  this.telemetryEventBatcher,
152
+ editorOptions,
150
153
  );
151
154
 
152
- this.createAndAddSharedBranch("main", undefined, undefined, mainTrunk);
155
+ this.createAndAddSharedBranch("main", undefined, undefined, mainTrunk, editorOptions);
153
156
  }
154
157
 
155
158
  public getLocalBranch(branchId: BranchId): SharedTreeBranch<TEditor, TChangeset> {
@@ -480,8 +483,15 @@ export class EditManager<
480
483
  sessionId: SessionId | undefined,
481
484
  parent: SharedBranch<TEditor, TChangeset> | undefined,
482
485
  branch: SharedTreeBranch<TEditor, TChangeset>,
486
+ editorOptions?: EditorOptions,
483
487
  ): SharedBranch<TEditor, TChangeset> {
484
- const sharedBranch = this.createSharedBranch(branchId, sessionId, parent, branch);
488
+ const sharedBranch = this.createSharedBranch(
489
+ branchId,
490
+ sessionId,
491
+ parent,
492
+ branch,
493
+ editorOptions,
494
+ );
485
495
  this.addSharedBranch(branchId, sharedBranch);
486
496
  return sharedBranch;
487
497
  }
@@ -512,6 +522,7 @@ export class EditManager<
512
522
  sessionId: SessionId | undefined,
513
523
  parent: SharedBranch<TEditor, TChangeset> | undefined,
514
524
  branch: SharedTreeBranch<TEditor, TChangeset>,
525
+ editorOptions?: EditorOptions,
515
526
  ): SharedBranch<TEditor, TChangeset> {
516
527
  const sharedBranch = new SharedBranch(
517
528
  parent,
@@ -523,6 +534,7 @@ export class EditManager<
523
534
  this.mintRevisionTag,
524
535
  this._events,
525
536
  this.telemetryEventBatcher,
537
+ editorOptions,
526
538
  );
527
539
 
528
540
  return sharedBranch;
@@ -695,6 +707,7 @@ class SharedBranch<TEditor extends ChangeFamilyEditor, TChangeset> {
695
707
  private readonly mintRevisionTag: () => RevisionTag,
696
708
  branchTrimmer: Listenable<BranchTrimmingEvents>,
697
709
  telemetryEventBatcher: TelemetryEventBatcher<keyof RebaseStatsWithDuration> | undefined,
710
+ editorOptions?: EditorOptions,
698
711
  ) {
699
712
  this.localBranch = new SharedTreeBranch(
700
713
  this.trunk.getHead(),
@@ -702,6 +715,7 @@ class SharedBranch<TEditor extends ChangeFamilyEditor, TChangeset> {
702
715
  mintRevisionTag,
703
716
  branchTrimmer,
704
717
  telemetryEventBatcher,
718
+ editorOptions,
705
719
  );
706
720
 
707
721
  this.sequenceIdToCommit.set(baseCommitSequenceId, this.trunk.getHead());
@@ -1090,27 +1104,27 @@ class SharedBranch<TEditor extends ChangeFamilyEditor, TChangeset> {
1090
1104
  const parentTrunkBase =
1091
1105
  trunkRevisionCache.get(data.base ?? rootRevision) ??
1092
1106
  fail(0xc61 /* Expected base revision to be in trunk cache */);
1093
- this.trunk.setHead(
1094
- data.trunk.reduce((base, c) => {
1095
- const sequenceId: SequenceId =
1096
- c.indexInBatch === undefined
1097
- ? {
1098
- sequenceNumber: c.sequenceNumber,
1099
- }
1100
- : {
1101
- sequenceNumber: c.sequenceNumber,
1102
- indexInBatch: c.indexInBatch,
1103
- };
1104
- const commit = mintCommit(base, c);
1105
- this.sequenceIdToCommit.set(sequenceId, commit);
1106
- this.commitMetadata.set(c.revision, {
1107
- sequenceId,
1108
- sessionId: c.sessionId,
1109
- });
1110
- trunkRevisionCache.set(c.revision, commit);
1111
- return commit;
1112
- }, parentTrunkBase),
1113
- );
1107
+ let trunkHead = parentTrunkBase;
1108
+ for (const c of data.trunk) {
1109
+ const sequenceId: SequenceId =
1110
+ c.indexInBatch === undefined
1111
+ ? {
1112
+ sequenceNumber: c.sequenceNumber,
1113
+ }
1114
+ : {
1115
+ sequenceNumber: c.sequenceNumber,
1116
+ indexInBatch: c.indexInBatch,
1117
+ };
1118
+ const commit = mintCommit(trunkHead, c);
1119
+ this.sequenceIdToCommit.set(sequenceId, commit);
1120
+ this.commitMetadata.set(c.revision, {
1121
+ sequenceId,
1122
+ sessionId: c.sessionId,
1123
+ });
1124
+ trunkRevisionCache.set(c.revision, commit);
1125
+ trunkHead = commit;
1126
+ }
1127
+ this.trunk.setHead(trunkHead);
1114
1128
 
1115
1129
  this.localBranch.setHead(this.trunk.getHead());
1116
1130
 
@@ -1119,13 +1133,13 @@ class SharedBranch<TEditor extends ChangeFamilyEditor, TChangeset> {
1119
1133
  trunkRevisionCache.get(branch.base) ??
1120
1134
  fail(0xad7 /* Expected summary branch to be based off of a revision in the trunk */);
1121
1135
 
1136
+ let branchHead = commit;
1137
+ for (const c of branch.commits) {
1138
+ branchHead = mintCommit(branchHead, c);
1139
+ }
1122
1140
  this.peerLocalBranches.set(
1123
1141
  sessionId,
1124
- new SharedTreeBranch(
1125
- branch.commits.reduce(mintCommit, commit),
1126
- this.changeFamily,
1127
- this.mintRevisionTag,
1128
- ),
1142
+ new SharedTreeBranch(branchHead, this.changeFamily, this.mintRevisionTag),
1129
1143
  );
1130
1144
  }
1131
1145
  }
@@ -74,6 +74,15 @@ export function editManagerFormatVersionSelectorForSharedBranches(
74
74
  return brand(EditManagerFormatVersion.vSharedBranches);
75
75
  }
76
76
 
77
+ /**
78
+ * Returns the version that should be used for testing shared branches.
79
+ */
80
+ export function editManagerFormatVersionSelectorForDetachedRootEditing(
81
+ clientVersion: MinimumVersionForCollab,
82
+ ): EditManagerFormatVersion {
83
+ return brand(EditManagerFormatVersion.vDetachedRoots);
84
+ }
85
+
77
86
  export interface EditManagerCodecOptions {
78
87
  readonly editManagerFormatSelector?: (
79
88
  minVersionForCollab: MinimumVersionForCollab,
@@ -141,7 +150,8 @@ export function makeEditManagerCodecs<TChangeset>(
141
150
  }
142
151
  case unbrand(EditManagerFormatVersion.v3):
143
152
  case unbrand(EditManagerFormatVersion.v4):
144
- case unbrand(EditManagerFormatVersion.v6): {
153
+ case unbrand(EditManagerFormatVersion.v6):
154
+ case unbrand(EditManagerFormatVersion.vDetachedRoots): {
145
155
  const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
146
156
  return [
147
157
  version,
@@ -166,6 +166,11 @@ export const EditManagerFormatVersion = strictEnum("editManager.FormatVersion",
166
166
  * Only used for testing shared branches.
167
167
  */
168
168
  vSharedBranches: "shared-branches|v0.1",
169
+ /**
170
+ * Not yet released.
171
+ * Only used for testing detached roots.
172
+ */
173
+ vDetachedRoots: "detached-roots|v0.1",
169
174
  });
170
175
  export type EditManagerFormatVersion = Values<typeof EditManagerFormatVersion>;
171
176
  export const supportedEditManagerFormatVersions: ReadonlySet<EditManagerFormatVersion> =
@@ -174,6 +179,7 @@ export const supportedEditManagerFormatVersions: ReadonlySet<EditManagerFormatVe
174
179
  EditManagerFormatVersion.v4,
175
180
  EditManagerFormatVersion.v6,
176
181
  EditManagerFormatVersion.vSharedBranches,
182
+ EditManagerFormatVersion.vDetachedRoots,
177
183
  ]);
178
184
  export const editManagerFormatVersions: ReadonlySet<EditManagerFormatVersion> = new Set(
179
185
  Object.values(EditManagerFormatVersion),
@@ -27,7 +27,8 @@ export interface EncodedEditManager<TChangeset> {
27
27
  | typeof EditManagerFormatVersion.v2
28
28
  | typeof EditManagerFormatVersion.v3
29
29
  | typeof EditManagerFormatVersion.v4
30
- | typeof EditManagerFormatVersion.v6;
30
+ | typeof EditManagerFormatVersion.v6
31
+ | typeof EditManagerFormatVersion.vDetachedRoots;
31
32
  }
32
33
 
33
34
  export const EncodedEditManager = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>
@@ -39,6 +40,7 @@ export const EncodedEditManager = <ChangeSchema extends TSchema>(tChange: Change
39
40
  Type.Literal(EditManagerFormatVersion.v3),
40
41
  Type.Literal(EditManagerFormatVersion.v4),
41
42
  Type.Literal(EditManagerFormatVersion.v6),
43
+ Type.Literal(EditManagerFormatVersion.vDetachedRoots),
42
44
  ]),
43
45
  trunk: Type.Array(SequencedCommit(tChange)),
44
46
  branches: Type.Array(Type.Tuple([SessionIdSchema, SummarySessionBranch(tChange)])),
@@ -51,6 +51,7 @@ export {
51
51
  type EditManagerCodecOptions,
52
52
  clientVersionToEditManagerFormatVersion,
53
53
  editManagerFormatVersionSelectorForSharedBranches,
54
+ editManagerFormatVersionSelectorForDetachedRootEditing,
54
55
  } from "./editManagerCodecs.js";
55
56
  export {
56
57
  EditManagerFormatVersion,
@@ -76,6 +77,7 @@ export {
76
77
  getCodecTreeForMessageFormatWithChange,
77
78
  clientVersionToMessageFormatVersion,
78
79
  messageFormatVersionSelectorForSharedBranches,
80
+ messageFormatVersionSelectorForDetachedRootEditing,
79
81
  makeMessageCodec,
80
82
  type MessageEncodingContext,
81
83
  } from "./messageCodecs.js";
@@ -34,7 +34,8 @@ export function makeV1ToV4CodecWithVersion<TChangeset>(
34
34
  | typeof MessageFormatVersion.v2
35
35
  | typeof MessageFormatVersion.v3
36
36
  | typeof MessageFormatVersion.v4
37
- | typeof MessageFormatVersion.v6,
37
+ | typeof MessageFormatVersion.v6
38
+ | typeof MessageFormatVersion.vDetachedRoots,
38
39
  ): IJsonCodec<
39
40
  DecodedMessage<TChangeset>,
40
41
  JsonCompatibleReadOnly,
@@ -83,6 +83,15 @@ export function messageFormatVersionSelectorForSharedBranches(
83
83
  return brand(MessageFormatVersion.vSharedBranches);
84
84
  }
85
85
 
86
+ /**
87
+ * Returns the version that should be used for testing detached root editing.
88
+ */
89
+ export function messageFormatVersionSelectorForDetachedRootEditing(
90
+ clientVersion: MinimumVersionForCollab,
91
+ ): MessageFormatVersion {
92
+ return brand(MessageFormatVersion.vDetachedRoots);
93
+ }
94
+
86
95
  export function makeMessageCodec<TChangeset>(
87
96
  changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>,
88
97
  dependentChangeFormatVersion: DependentFormatVersion<MessageFormatVersion>,
@@ -145,7 +154,8 @@ export function makeMessageCodecs<TChangeset>(
145
154
  }
146
155
  case unbrand(MessageFormatVersion.v3):
147
156
  case unbrand(MessageFormatVersion.v4):
148
- case unbrand(MessageFormatVersion.v6): {
157
+ case unbrand(MessageFormatVersion.v6):
158
+ case unbrand(MessageFormatVersion.vDetachedRoots): {
149
159
  const changeCodec = changeCodecs.resolve(
150
160
  dependentChangeFormatVersion.lookup(version),
151
161
  ).json;
@@ -57,6 +57,11 @@ export const MessageFormatVersion = strictEnum("MessageFormatVersion", {
57
57
  * Only used for testing shared branches.
58
58
  */
59
59
  vSharedBranches: "shared-branches|v0.1",
60
+ /**
61
+ * Not yet released.
62
+ * Only used for testing detached roots.
63
+ */
64
+ vDetachedRoots: "detached-roots|v0.1",
60
65
  });
61
66
  export type MessageFormatVersion = Values<typeof MessageFormatVersion>;
62
67
  export const supportedMessageFormatVersions: ReadonlySet<MessageFormatVersion> = new Set([
@@ -64,6 +69,7 @@ export const supportedMessageFormatVersions: ReadonlySet<MessageFormatVersion> =
64
69
  MessageFormatVersion.v4,
65
70
  MessageFormatVersion.v6,
66
71
  MessageFormatVersion.vSharedBranches,
72
+ MessageFormatVersion.vDetachedRoots,
67
73
  ]);
68
74
  export const messageFormatVersions: ReadonlySet<MessageFormatVersion> = new Set(
69
75
  Object.values(MessageFormatVersion),
@@ -38,7 +38,8 @@ export interface Message {
38
38
  | typeof MessageFormatVersion.v2
39
39
  | typeof MessageFormatVersion.v3
40
40
  | typeof MessageFormatVersion.v4
41
- | typeof MessageFormatVersion.v6;
41
+ | typeof MessageFormatVersion.v6
42
+ | typeof MessageFormatVersion.vDetachedRoots;
42
43
  }
43
44
 
44
45
  // Return type is intentionally derived.
@@ -55,6 +56,7 @@ export const Message = <ChangeSchema extends TSchema>(tChange: ChangeSchema) =>
55
56
  Type.Literal(MessageFormatVersion.v3),
56
57
  Type.Literal(MessageFormatVersion.v4),
57
58
  Type.Literal(MessageFormatVersion.v6),
59
+ Type.Literal(MessageFormatVersion.vDetachedRoots),
58
60
  ]),
59
61
  ),
60
62
  });
@@ -80,7 +80,9 @@ export interface ClonableSchemaAndPolicy extends SchemaAndPolicy {
80
80
  export interface SharedTreeCoreOptionsInternal
81
81
  extends CodecWriteOptions,
82
82
  EditManagerCodecOptions,
83
- MessageCodecOptions {}
83
+ MessageCodecOptions {
84
+ canMakeDetachedRootEdits: boolean;
85
+ }
84
86
 
85
87
  /**
86
88
  * Generic shared tree, which needs to be configured with indexes, field kinds and other configuration.
@@ -176,6 +178,7 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
176
178
  localSessionId,
177
179
  this.mintRevisionTag,
178
180
  (branchId) => this.registerSharedBranch(branchId),
181
+ options,
179
182
  rebaseLogger,
180
183
  );
181
184