@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
@@ -3,540 +3,320 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { assert } from "@fluidframework/core-utils/internal";
6
- import { areEqualChangeAtomIds, makeChangeAtomId, taggedAtomId, } from "../../core/index.js";
7
- import { SizedNestedMap, deleteFromNestedMap, setInNestedMap, tryGetFromNestedMap, } from "../../util/index.js";
6
+ import { areEqualChangeAtomIdOpts, makeChangeAtomId, } from "../../core/index.js";
8
7
  import { nodeIdFromChangeAtom } from "../deltaUtils.js";
9
- import { NodeAttachState, } from "../modular-schema/index.js";
8
+ import { CrossFieldTarget, } from "../modular-schema/index.js";
10
9
  import { makeOptionalFieldCodecFamily } from "./optionalFieldCodecs.js";
11
- export class RegisterMap {
12
- constructor() {
13
- this.nestedMapData = new SizedNestedMap();
14
- }
15
- clone() {
16
- const clone = new RegisterMap();
17
- for (const [id, t] of this.entries()) {
18
- clone.set(id, t);
19
- }
20
- return clone;
21
- }
22
- set(id, childChange) {
23
- if (id === "self") {
24
- this.nestedMapData.set("self", undefined, childChange);
25
- }
26
- else {
27
- this.nestedMapData.set(id.localId, id.revision, childChange);
28
- }
29
- }
30
- get(id) {
31
- return id === "self"
32
- ? this.nestedMapData.tryGet(id, undefined)
33
- : this.nestedMapData.tryGet(id.localId, id.revision);
34
- }
35
- has(id) {
36
- return this.get(id) !== undefined;
37
- }
38
- delete(id) {
39
- return id === "self"
40
- ? this.nestedMapData.delete("self", undefined)
41
- : this.nestedMapData.delete(id.localId, id.revision);
42
- }
43
- keys() {
44
- const changeIds = [];
45
- for (const [localId, nestedMap] of this.nestedMapData) {
46
- if (localId === "self") {
47
- changeIds.push("self");
48
- }
49
- else {
50
- for (const [revisionTag, _] of nestedMap) {
51
- changeIds.push(revisionTag === undefined ? { localId } : { localId, revision: revisionTag });
52
- }
53
- }
54
- }
55
- return changeIds;
56
- }
57
- values() {
58
- return this.nestedMapData.values();
59
- }
60
- entries() {
61
- const entries = [];
62
- for (const changeId of this.keys()) {
63
- if (changeId === "self") {
64
- const entry = this.nestedMapData.tryGet("self", undefined);
65
- assert(entry !== undefined, 0x770 /* Entry should not be undefined when iterating keys. */);
66
- entries.push(["self", entry]);
67
- }
68
- else {
69
- const entry = this.nestedMapData.tryGet(changeId.localId, changeId.revision);
70
- assert(entry !== undefined, 0x771 /* Entry should not be undefined when iterating keys. */);
71
- entries.push([changeId, entry]);
72
- }
73
- }
74
- return entries;
75
- }
76
- get size() {
77
- return this.nestedMapData.size;
78
- }
79
- }
80
10
  export const optionalChangeRebaser = {
81
- compose: (change1, change2, composeChild) => {
82
- const { srcToDst, dstToSrc } = getBidirectionalMaps(change1.moves);
83
- const change1FieldSrc = change1.valueReplace?.src;
84
- const change1FieldDst = getEffectfulDst(change1.valueReplace);
85
- const change2FieldSrc = change2.valueReplace?.src;
86
- let composedFieldSrc;
87
- if (change2FieldSrc !== undefined) {
88
- if (change2FieldSrc === "self") {
89
- composedFieldSrc = change1FieldSrc ?? change2FieldSrc;
90
- }
91
- else if (change1FieldDst !== undefined &&
92
- areEqualRegisterIds(change1FieldDst, change2FieldSrc)) {
93
- composedFieldSrc = "self";
94
- }
95
- else {
96
- composedFieldSrc =
97
- tryGetFromNestedMap(dstToSrc, change2FieldSrc.revision, change2FieldSrc.localId) ??
98
- change2FieldSrc;
99
- }
100
- }
101
- else if (change1FieldSrc !== undefined && change2.valueReplace === undefined) {
102
- composedFieldSrc = change1FieldSrc;
103
- }
104
- const childChanges2ByOriginalId = new RegisterMap();
105
- for (const [id, change] of change2.childChanges) {
106
- if (id === "self") {
107
- if (change1FieldSrc === undefined) {
108
- childChanges2ByOriginalId.set("self", change);
109
- }
110
- else {
111
- childChanges2ByOriginalId.set(change1FieldSrc, change);
112
- }
113
- }
114
- else {
115
- if (change1FieldDst !== undefined && areEqualChangeAtomIds(change1FieldDst, id)) {
116
- childChanges2ByOriginalId.set("self", change);
117
- }
118
- else {
119
- const originalId = tryGetFromNestedMap(dstToSrc, id.revision, id.localId);
120
- childChanges2ByOriginalId.set(originalId ?? id, change);
121
- }
122
- }
123
- }
124
- const composedMoves = [];
125
- const composedChildChanges = [];
126
- const composed = {
127
- moves: composedMoves,
128
- childChanges: composedChildChanges,
129
- };
130
- for (const [id, childChange1] of change1.childChanges) {
131
- const childChange2 = childChanges2ByOriginalId.get(id);
132
- composedChildChanges.push([id, composeChild(childChange1, childChange2)]);
133
- childChanges2ByOriginalId.delete(id);
134
- }
135
- for (const [id, childChange2] of childChanges2ByOriginalId.entries()) {
136
- composedChildChanges.push([id, composeChild(undefined, childChange2)]);
11
+ compose,
12
+ invert: (change, isRollback, genId, revision, nodeManager) => {
13
+ const inverted = {};
14
+ const detachId = getEffectiveDetachId(change);
15
+ if (detachId !== undefined) {
16
+ const attachIdForInverse = isRollback
17
+ ? detachId
18
+ : makeChangeAtomId(detachId.localId, revision);
19
+ nodeManager.invertDetach(detachId, 1, change.childChange, attachIdForInverse);
20
+ inverted.valueReplace = {
21
+ isEmpty: change.valueReplace?.src === undefined,
22
+ dst: makeChangeAtomId(genId.allocate(), revision),
23
+ src: attachIdForInverse,
24
+ };
137
25
  }
138
- for (const [leg2Src, leg2Dst] of change2.moves) {
139
- const leg1Src = tryGetFromNestedMap(dstToSrc, leg2Src.revision, leg2Src.localId);
140
- if (leg1Src !== undefined) {
141
- composedMoves.push([leg1Src, leg2Dst]);
142
- deleteFromNestedMap(srcToDst, leg1Src.revision, leg1Src.localId);
143
- deleteFromNestedMap(dstToSrc, leg2Src.revision, leg2Src.localId);
144
- }
145
- else if (change1FieldDst === undefined ||
146
- !areEqualChangeAtomIds(change1FieldDst, leg2Src)) {
147
- composedMoves.push([leg2Src, leg2Dst]);
26
+ if (change.valueReplace?.src !== undefined) {
27
+ const attachEntry = nodeManager.invertAttach(change.valueReplace.src, 1);
28
+ const detachIdForInverse = invertAttachId(change.valueReplace.src, revision, isRollback, attachEntry.value?.detachId);
29
+ if (attachEntry.value?.nodeChange !== undefined) {
30
+ inverted.childChange = attachEntry.value.nodeChange;
148
31
  }
149
- }
150
- for (const [revision, innerMap] of srcToDst.entries()) {
151
- for (const [localId, dst] of innerMap.entries()) {
152
- const src = makeChangeAtomId(localId, revision);
153
- if (composedFieldSrc === undefined || !areEqualRegisterIds(src, composedFieldSrc)) {
154
- composedMoves.push([src, dst]);
155
- }
32
+ // TODO: Use nodeDetach instead of valueReplace if not supporting older client versions.
33
+ // inverted.nodeDetach = detachIdForInverse;
34
+ if (inverted.valueReplace === undefined) {
35
+ inverted.valueReplace = { isEmpty: false, dst: detachIdForInverse };
156
36
  }
157
- }
158
- if (change1FieldSrc !== undefined &&
159
- change1FieldSrc !== "self" &&
160
- change2.valueReplace !== undefined) {
161
- const change2FieldDst = change2.valueReplace.dst;
162
- if (isReplaceEffectful(change2.valueReplace) &&
163
- !areEqualChangeAtomIds(change1FieldSrc, change2FieldDst)) {
164
- composedMoves.push([change1FieldSrc, change2FieldDst]);
37
+ else {
38
+ inverted.valueReplace.dst = detachIdForInverse;
165
39
  }
166
40
  }
167
- const firstChange = change1.valueReplace ?? change2.valueReplace;
168
- if (firstChange === undefined) {
169
- return composed;
170
- }
171
- const replace = {
172
- isEmpty: firstChange.isEmpty,
173
- dst: getComposedReplaceDst(change1.valueReplace, change2),
174
- };
175
- if (composedFieldSrc !== undefined) {
176
- replace.src = composedFieldSrc;
41
+ else if (detachId === undefined && change.childChange !== undefined) {
42
+ // This change does not affect which node is in the field, so its child change should remain here.
43
+ inverted.childChange = change.childChange;
177
44
  }
178
- composed.valueReplace = replace;
179
- return composed;
45
+ return inverted;
180
46
  },
181
- invert: (change, isRollback, genId, revision) => {
182
- const { moves, childChanges, valueReplace } = change;
183
- const invertIdMap = new RegisterMap();
184
- const invertedMoves = [];
185
- for (const [src, dst] of moves) {
186
- invertIdMap.set(src, dst);
187
- invertedMoves.push([dst, src]);
188
- }
189
- if (valueReplace !== undefined) {
190
- const effectfulDst = getEffectfulDst(valueReplace);
191
- if (effectfulDst !== undefined) {
192
- invertIdMap.set("self", valueReplace.dst);
193
- }
194
- if (valueReplace.src !== undefined) {
195
- invertIdMap.set(valueReplace.src, "self");
47
+ rebase: (newChange, overChange, rebaseChild, _genId, nodeManager, _metadata, rebaseVersion) => {
48
+ const rebased = {};
49
+ const rebasedChild = rebaseChild(newChange.childChange, overChange.childChange);
50
+ const overDetach = getEffectiveDetachId(overChange);
51
+ if (overDetach !== undefined) {
52
+ const isPin = areEqualChangeAtomIdOpts(newChange.nodeDetach, newChange.valueReplace?.src);
53
+ const nodeDetach = rebaseVersion < 2 && !isPin ? undefined : newChange.nodeDetach;
54
+ nodeManager.rebaseOverDetach(overDetach, 1, nodeDetach, rebasedChild);
55
+ }
56
+ const overAttach = overChange.valueReplace?.src;
57
+ if (overAttach !== undefined) {
58
+ const movedChangeEntry = nodeManager.getNewChangesForBaseAttach(overAttach, 1).value;
59
+ if (movedChangeEntry?.nodeChange !== undefined) {
60
+ rebased.childChange = movedChangeEntry.nodeChange;
196
61
  }
197
- }
198
- const inverted = {
199
- moves: invertedMoves,
200
- childChanges: childChanges.map(([id, childChange]) => {
201
- return [invertIdMap.get(id) ?? id, childChange];
202
- }),
203
- };
204
- if (valueReplace !== undefined) {
205
- if (isReplaceEffectful(valueReplace)) {
206
- const replace = valueReplace.src === undefined
207
- ? {
208
- isEmpty: true,
209
- dst: makeChangeAtomId(genId.allocate(), revision),
210
- }
211
- : {
212
- isEmpty: false,
213
- dst: isRollback
214
- ? valueReplace.src
215
- : makeChangeAtomId(genId.allocate(), revision),
216
- };
217
- if (valueReplace.isEmpty === false) {
218
- replace.src = valueReplace.dst;
62
+ if (movedChangeEntry?.detachId !== undefined) {
63
+ rebased.nodeDetach = movedChangeEntry.detachId;
64
+ if (rebased.valueReplace !== undefined) {
65
+ // Now that the rebased change has a node detach,
66
+ // the detach from the value replace no longer takes effect.
67
+ nodeManager.removeDetach(rebased.valueReplace.dst, 1);
219
68
  }
220
- inverted.valueReplace = replace;
221
- }
222
- else if (!isRollback && valueReplace.src === "self") {
223
- inverted.valueReplace = {
224
- isEmpty: false,
225
- src: "self",
226
- dst: makeChangeAtomId(genId.allocate(), revision),
227
- };
228
69
  }
229
70
  }
230
- return inverted;
231
- },
232
- rebase: (change, overChange, rebaseChild) => {
233
- const { moves, childChanges, valueReplace: field } = change;
234
- // TODO: avoid computing the dstToSrc map if it's not needed.
235
- // TODO: de-dupe overSrcToDst and forwardMap
236
- const { srcToDst: overSrcToDst } = getBidirectionalMaps(overChange.moves);
237
- const forwardMap = new RegisterMap();
238
- for (const [src, dst] of overChange.moves) {
239
- forwardMap.set(src, dst);
240
- }
241
- if (overChange.valueReplace !== undefined) {
242
- const effectfulDst = getEffectfulDst(overChange.valueReplace);
243
- if (effectfulDst !== undefined) {
244
- forwardMap.set("self", overChange.valueReplace.dst);
71
+ else if (overDetach === undefined) {
72
+ // `overChange` did not change which node is in the field.
73
+ if (rebasedChild !== undefined) {
74
+ rebased.childChange = rebasedChild;
245
75
  }
246
- if (overChange.valueReplace.src !== undefined) {
247
- forwardMap.set(overChange.valueReplace.src, "self");
76
+ if (newChange.nodeDetach !== undefined) {
77
+ rebased.nodeDetach = newChange.nodeDetach;
248
78
  }
249
79
  }
250
- const rebasedMoves = [];
251
- for (const [src, dst] of moves) {
252
- const newDst = tryGetFromNestedMap(overSrcToDst, src.revision, src.localId);
253
- rebasedMoves.push([src, newDst ?? dst]);
80
+ if (newChange.valueReplace !== undefined) {
81
+ const isEmpty = overDetach !== undefined || overChange.valueReplace !== undefined
82
+ ? overChange.valueReplace?.src === undefined
83
+ : newChange.valueReplace.isEmpty;
84
+ rebased.valueReplace = { ...newChange.valueReplace, isEmpty };
254
85
  }
255
- const overChildChangesBySrc = new RegisterMap();
256
- for (const [id, childChange] of overChange.childChanges) {
257
- overChildChangesBySrc.set(id, childChange);
86
+ const detachId = getEffectiveDetachId(newChange);
87
+ const rebasedDetachId = getEffectiveDetachId(rebased);
88
+ if (detachId !== undefined && !areEqualChangeAtomIdOpts(detachId, rebasedDetachId)) {
89
+ nodeManager.removeDetach(detachId, 1);
258
90
  }
259
- const rebasedChildChanges = [];
260
- for (const [id, childChange] of childChanges) {
261
- const overChildChange = overChildChangesBySrc.get(id);
262
- if (overChildChange !== undefined) {
263
- overChildChangesBySrc.delete(id);
264
- }
265
- const rebasedId = forwardMap.get(id) ?? id;
266
- const rebasedChildChange = rebaseChild(childChange, overChildChange, rebasedId === "self" ? NodeAttachState.Attached : NodeAttachState.Detached);
267
- if (rebasedChildChange !== undefined) {
268
- rebasedChildChanges.push([rebasedId, rebasedChildChange]);
269
- }
270
- }
271
- for (const [id, overChildChange] of overChildChangesBySrc.entries()) {
272
- const rebasedId = forwardMap.get(id) ?? id;
273
- const rebasedChildChange = rebaseChild(undefined, overChildChange, rebasedId === "self" ? NodeAttachState.Attached : NodeAttachState.Detached);
274
- if (rebasedChildChange !== undefined) {
275
- rebasedChildChanges.push([rebasedId, rebasedChildChange]);
276
- }
277
- }
278
- const rebased = {
279
- moves: rebasedMoves,
280
- childChanges: rebasedChildChanges,
281
- };
282
- if (field !== undefined) {
283
- const replace = {
284
- isEmpty: overChange.valueReplace === undefined
285
- ? field.isEmpty
286
- : overChange.valueReplace.src === undefined,
287
- dst: field.dst,
288
- };
289
- if (field.src !== undefined) {
290
- replace.src = forwardMap.get(field.src) ?? field.src;
291
- }
292
- rebased.valueReplace = replace;
91
+ if (rebasedDetachId !== undefined &&
92
+ !areEqualChangeAtomIdOpts(rebasedDetachId, detachId)) {
93
+ nodeManager.addDetach(rebasedDetachId, 1);
293
94
  }
294
95
  return rebased;
295
96
  },
296
97
  prune: (change, pruneChild) => {
297
- const childChanges = [];
298
- const prunedChange = {
299
- moves: change.moves,
300
- childChanges,
301
- };
302
- if (change.valueReplace !== undefined) {
303
- prunedChange.valueReplace = change.valueReplace;
304
- }
305
- for (const [id, childChange] of change.childChanges) {
306
- const prunedChildChange = pruneChild(childChange);
307
- if (prunedChildChange !== undefined) {
308
- childChanges.push([id, prunedChildChange]);
98
+ const prunedChange = { ...change };
99
+ delete prunedChange.childChange;
100
+ if (change.childChange !== undefined) {
101
+ const childChange = pruneChild(change.childChange);
102
+ if (childChange !== undefined) {
103
+ prunedChange.childChange = childChange;
309
104
  }
310
105
  }
311
106
  return prunedChange;
312
107
  },
313
108
  replaceRevisions: (change, replacer) => {
109
+ const updated = {};
314
110
  const valueReplace = replaceReplaceRevisions(change.valueReplace, replacer);
315
- const childChanges = [];
316
- for (const [id, childChange] of change.childChanges) {
317
- childChanges.push([
318
- replaceRegisterRevisions(id, replacer),
319
- replacer.getUpdatedAtomId(childChange),
320
- ]);
111
+ if (change.childChange !== undefined) {
112
+ updated.childChange = replacer.getUpdatedAtomId(change.childChange);
321
113
  }
322
- const moves = [];
323
- for (const [src, dst] of change.moves) {
324
- moves.push([replacer.getUpdatedAtomId(src), replacer.getUpdatedAtomId(dst)]);
325
- }
326
- const updated = { childChanges, moves };
327
114
  if (valueReplace !== undefined) {
328
115
  updated.valueReplace = valueReplace;
329
116
  }
330
117
  return updated;
331
118
  },
332
119
  mute: (change) => {
333
- return { childChanges: change.childChanges, moves: [] };
120
+ return { childChange: change.childChange };
334
121
  },
335
122
  };
336
- function replaceReplaceRevisions(replace, replacer) {
337
- if (replace === undefined) {
338
- return undefined;
123
+ function compose(change1, change2, composeChild, _genId, nodeManager) {
124
+ const detachId2 = getEffectiveDetachId(change2);
125
+ if (change1.valueReplace?.src !== undefined && detachId2 !== undefined) {
126
+ nodeManager.composeAttachDetach(change1.valueReplace.src, detachId2, 1);
339
127
  }
340
- const updated = {
341
- ...replace,
342
- dst: replacer.getUpdatedAtomId(replace.dst),
343
- };
344
- if (replace.src !== undefined) {
345
- updated.src = replaceRegisterRevisions(replace.src, replacer);
128
+ const composedDetach = composeNodeDetaches(change1, change2, nodeManager);
129
+ const composedReplace = composeReplaces(change1, change2);
130
+ const composedChildChange = getComposedChildChanges(change1, change2, nodeManager, composeChild);
131
+ sendNewChildChanges(change1, change2, nodeManager);
132
+ if (change1.nodeDetach !== undefined &&
133
+ areEqualChangeAtomIdOpts(change1.nodeDetach, change2.valueReplace?.src)) {
134
+ nodeManager.composeDetachAttach(change1.nodeDetach, change1.nodeDetach, 1, true);
346
135
  }
347
- return updated;
136
+ return makeChangeset(composedReplace, composedDetach, composedChildChange);
348
137
  }
349
- function replaceRegisterRevisions(register, replacer) {
350
- return register === "self" ? register : replacer.getUpdatedAtomId(register);
138
+ function composeNodeDetaches(change1, change2, nodeManager) {
139
+ const detach1 = getEffectiveDetachId(change1);
140
+ if (detach1 !== undefined) {
141
+ const newDetachId = nodeManager.getNewChangesForBaseDetach(detach1, 1).value?.detachId;
142
+ if (newDetachId !== undefined) {
143
+ return newDetachId;
144
+ }
145
+ }
146
+ if (change1.nodeDetach !== undefined) {
147
+ return change1.nodeDetach;
148
+ }
149
+ return detach1 !== undefined || change1.valueReplace?.isEmpty === true
150
+ ? undefined
151
+ : change2.nodeDetach;
351
152
  }
352
- function getComposedReplaceDst(change1, change2) {
353
- const dst1 = change1?.dst;
354
- if (change2.valueReplace === undefined) {
355
- assert(dst1 !== undefined, 0x8ce /* Both replace replaces should not be undefined */);
356
- return getIdAfterMoves(dst1, change2.moves);
153
+ function composeReplaces(change1, change2) {
154
+ const firstReplace = change1.valueReplace ?? change2.valueReplace;
155
+ if (firstReplace === undefined) {
156
+ return undefined;
357
157
  }
358
- if (dst1 === undefined ||
359
- change1?.src === "self" ||
360
- (change2.valueReplace.src !== undefined &&
361
- areEqualRegisterIds(change2.valueReplace.src, dst1))) {
362
- assert(change2.valueReplace !== undefined, 0x8cf /* Both replace replaces should not be undefined */);
363
- return change2.valueReplace.dst;
158
+ const isEmpty = change1.nodeDetach === undefined ? firstReplace.isEmpty : false;
159
+ const replace = { isEmpty, dst: firstReplace.dst };
160
+ if (change2.valueReplace?.src !== undefined) {
161
+ replace.src = change2.valueReplace.src;
364
162
  }
365
- else {
366
- return getIdAfterMoves(dst1, change2.moves);
163
+ else if (getEffectiveDetachId(change2) === undefined &&
164
+ change1.valueReplace?.src !== undefined) {
165
+ replace.src = change1.valueReplace.src;
367
166
  }
167
+ return replace;
368
168
  }
369
- function getIdAfterMoves(id, moves) {
370
- for (const [src, dst] of moves) {
371
- if (areEqualChangeAtomIds(id, src)) {
372
- return dst;
373
- }
169
+ /**
170
+ * Informs the node manager of any child changes in `change2` that may need to be represented somewhere else in the input context of the composed changeset.
171
+ * See {@link ComposeNodeManager.sendNewChangesToBaseSourceLocation} for motivation.
172
+ * @param change1 - The first change to compose. Conceptually applies before `change2`.
173
+ * @param change2 - The second change to compose. Conceptually applies after `change1`.
174
+ * @param nodeManager - The node manager that needs to be informed of the child changes.
175
+ */
176
+ function sendNewChildChanges(change1, change2, nodeManager) {
177
+ if (change2.childChange !== undefined && change1.valueReplace?.src !== undefined) {
178
+ // The presence of new child implies that there is some node present in the field in the input context of change2.
179
+ // The fact that the change1 has a shallow effect implies that this node was attached by change1.
180
+ nodeManager.sendNewChangesToBaseSourceLocation(change1.valueReplace.src, change2.childChange);
374
181
  }
375
- return id;
376
- }
377
- function areEqualRegisterIds(id1, id2) {
378
- return id1 === "self" || id2 === "self" ? id1 === id2 : areEqualChangeAtomIds(id1, id2);
379
182
  }
380
- function areEqualRegisterIdsOpt(id1, id2) {
381
- if (id1 === undefined || id2 === undefined) {
382
- return id1 === id2;
183
+ /**
184
+ * Computes the child changes that should be included in the composed changeset.
185
+ * @param change1 - The first change to compose. Conceptually applies before `change2`.
186
+ * @param change2 - The second change to compose. Conceptually applies after `change1`.
187
+ * @param nodeManager - The node manager. Provides information about potential child changes from `change2`.
188
+ * @param composeChild - The delegate to compose child changes.
189
+ * @returns The composed child changes (if any) for the node (if any) present in the field in the input context of `change1`.
190
+ */
191
+ function getComposedChildChanges(change1, change2, nodeManager, composeChild) {
192
+ const detachId1 = getEffectiveDetachId(change1);
193
+ // We need to determine what the child changes are in change2 for the node (if any) that resides in the field in the input context of change1.
194
+ const childChangesFromChange2 =
195
+ // If such a node did exist, the changes for it in change2 would come from wherever change1 sends that node.
196
+ // Note: in both branches of this ternary, we are leveraging the fact querying for changes of a non-existent node safely yields undefined
197
+ detachId1 === undefined
198
+ ? change1.valueReplace?.src === undefined
199
+ ? change2.childChange
200
+ : undefined
201
+ : nodeManager.getNewChangesForBaseDetach(detachId1, 1).value?.nodeChange;
202
+ let composedChildChange;
203
+ if (change1.childChange !== undefined || childChangesFromChange2 !== undefined) {
204
+ composedChildChange = composeChild(change1.childChange, childChangesFromChange2);
383
205
  }
384
- return areEqualRegisterIds(id1, id2);
206
+ return composedChildChange;
385
207
  }
386
- function getBidirectionalMaps(moves) {
387
- const srcToDst = new Map();
388
- const dstToSrc = new Map();
389
- for (const [src, dst] of moves) {
390
- setInNestedMap(srcToDst, src.revision, src.localId, dst);
391
- setInNestedMap(dstToSrc, dst.revision, dst.localId, src);
208
+ function makeChangeset(replace, detachId, childChange) {
209
+ const changeset = {};
210
+ if (replace !== undefined) {
211
+ changeset.valueReplace = replace;
392
212
  }
393
- return { srcToDst, dstToSrc };
394
- }
395
- function isReplaceEffectful(replace) {
396
- if (replace.src === "self") {
397
- return false;
213
+ if (detachId !== undefined) {
214
+ changeset.nodeDetach = detachId;
398
215
  }
399
- return !replace.isEmpty || replace.src !== undefined;
216
+ if (childChange !== undefined) {
217
+ changeset.childChange = childChange;
218
+ }
219
+ return changeset;
400
220
  }
401
- function getEffectfulDst(replace) {
402
- return replace === undefined || replace.isEmpty || replace.src === "self"
403
- ? undefined
404
- : replace.dst;
221
+ function replaceReplaceRevisions(replace, replacer) {
222
+ if (replace === undefined) {
223
+ return undefined;
224
+ }
225
+ const updated = {
226
+ ...replace,
227
+ dst: replacer.getUpdatedAtomId(replace.dst),
228
+ };
229
+ if (replace.src !== undefined) {
230
+ updated.src = replacer.getUpdatedAtomId(replace.src);
231
+ }
232
+ return updated;
405
233
  }
406
- export function taggedRegister(id, revision) {
407
- if (id === "self") {
408
- return id;
234
+ function getEffectiveDetachId(change) {
235
+ if (change.nodeDetach !== undefined) {
236
+ return change.nodeDetach;
409
237
  }
410
- return taggedAtomId(id, revision);
238
+ return change.valueReplace?.isEmpty === false ? change.valueReplace.dst : undefined;
411
239
  }
412
240
  export const optionalFieldEditor = {
413
241
  set: (wasEmpty, ids) => ({
414
- moves: [],
415
- childChanges: [],
416
242
  valueReplace: {
417
243
  isEmpty: wasEmpty,
418
244
  src: ids.fill,
419
245
  dst: ids.detach,
420
246
  },
247
+ nodeDetach: ids.detachNode,
421
248
  }),
422
249
  clear: (wasEmpty, detachId) => ({
423
- moves: [],
424
- childChanges: [],
425
250
  valueReplace: {
426
251
  isEmpty: wasEmpty,
427
252
  dst: detachId,
428
253
  },
429
254
  }),
430
255
  buildChildChanges: (changes) => {
431
- const childChanges = Array.from(changes, ([index, childChange]) => {
256
+ const childChanges = Array.from(changes, ([index, child]) => {
432
257
  assert(index === 0, 0x404 /* Optional fields only support a single child node */);
433
- return ["self", childChange];
258
+ return child;
434
259
  });
435
260
  assert(childChanges.length <= 1, 0xabd /* Optional fields only support a single child node */);
436
- return {
437
- moves: [],
438
- childChanges,
439
- };
261
+ const childChange = childChanges[0];
262
+ return childChange === undefined ? {} : { childChange };
440
263
  },
441
264
  };
442
265
  export function optionalFieldIntoDelta(change, deltaFromChild) {
443
- const delta = {};
444
266
  let markIsANoop = true;
445
267
  const mark = { count: 1 };
446
- if (change.valueReplace !== undefined && isReplaceEffectful(change.valueReplace)) {
447
- if (!change.valueReplace.isEmpty) {
448
- mark.detach = nodeIdFromChangeAtom(change.valueReplace.dst);
449
- }
450
- if (change.valueReplace.src !== undefined) {
451
- mark.attach = nodeIdFromChangeAtom(change.valueReplace.src);
452
- }
268
+ const detachId = getEffectiveDetachId(change);
269
+ const attachId = change.valueReplace?.src;
270
+ if (detachId !== undefined && !areEqualChangeAtomIdOpts(detachId, attachId)) {
271
+ mark.detach = nodeIdFromChangeAtom(detachId);
453
272
  markIsANoop = false;
454
273
  }
455
- if (change.moves.length > 0) {
456
- delta.rename = change.moves.map(([src, dst]) => ({
457
- count: 1,
458
- oldId: nodeIdFromChangeAtom(src),
459
- newId: nodeIdFromChangeAtom(dst),
460
- }));
461
- }
462
- if (change.childChanges.length > 0) {
463
- const globals = [];
464
- for (const [id, childChange] of change.childChanges) {
465
- const childDelta = deltaFromChild(childChange);
466
- if (id === "self") {
467
- mark.fields = childDelta;
468
- markIsANoop = false;
469
- }
470
- else {
471
- const fields = childDelta;
472
- globals.push({
473
- id: { major: id.revision, minor: id.localId },
474
- fields,
475
- });
476
- }
477
- }
478
- if (globals.length > 0) {
479
- delta.global = globals;
480
- }
274
+ if (attachId !== undefined && !areEqualChangeAtomIdOpts(attachId, detachId)) {
275
+ mark.attach = nodeIdFromChangeAtom(attachId);
276
+ markIsANoop = false;
481
277
  }
482
- if (!markIsANoop) {
483
- delta.local = [mark];
278
+ if (change.childChange !== undefined) {
279
+ mark.fields = deltaFromChild(change.childChange);
280
+ markIsANoop = false;
484
281
  }
485
- return delta;
282
+ return markIsANoop ? [] : [mark];
486
283
  }
487
284
  export const optionalChangeHandler = {
488
285
  rebaser: optionalChangeRebaser,
489
286
  codecsFactory: makeOptionalFieldCodecFamily,
490
287
  editor: optionalFieldEditor,
491
288
  intoDelta: optionalFieldIntoDelta,
492
- relevantRemovedRoots,
493
- isEmpty: (change) => change.childChanges.length === 0 &&
494
- change.moves.length === 0 &&
495
- change.valueReplace === undefined,
289
+ isEmpty: (change) => change.childChange === undefined &&
290
+ change.valueReplace === undefined &&
291
+ change.nodeDetach === undefined,
496
292
  getNestedChanges,
497
- createEmpty: () => ({ moves: [], childChanges: [] }),
498
- getCrossFieldKeys: (_change) => [],
293
+ createEmpty: () => ({}),
294
+ getCrossFieldKeys,
499
295
  };
500
- function getNestedChanges(change) {
501
- // True iff the content of the field changes in some way
502
- const isFieldContentChanged = change.valueReplace !== undefined && change.valueReplace.src !== "self";
503
- // The node that is moved into the field (if any).
504
- const nodeMovedIntoField = change.valueReplace?.src;
505
- return change.childChanges.map(([register, nodeId]) => {
506
- // The node is removed in the input context iif register is not self.
507
- const inputIndex = register === "self" ? 0 : undefined;
508
- const outputIndex = register === "self"
509
- ? // If the node starts out as not-removed, it is removed in the output context iff the field content is changed
510
- isFieldContentChanged
511
- ? undefined
512
- : 0
513
- : // If the node starts out as removed, then it remains removed in the output context iff it is not the node that is moved into the field
514
- areEqualRegisterIdsOpt(register, nodeMovedIntoField)
515
- ? 0
516
- : undefined;
517
- return [nodeId, inputIndex, outputIndex];
518
- });
519
- }
520
- function* relevantRemovedRoots(change, relevantRemovedRootsFromChild) {
521
- const alreadyYielded = new RegisterMap();
522
- for (const [src] of change.moves) {
523
- if (!alreadyYielded.has(src)) {
524
- alreadyYielded.set(src, true);
525
- yield nodeIdFromChangeAtom(src);
526
- }
296
+ function getCrossFieldKeys(change) {
297
+ const keys = [];
298
+ if (change.valueReplace?.src !== undefined) {
299
+ keys.push({
300
+ key: { ...change.valueReplace.src, target: CrossFieldTarget.Destination },
301
+ count: 1,
302
+ });
527
303
  }
528
- for (const [id, childChange] of change.childChanges) {
529
- // Child changes make the tree they apply to relevant unless that tree existed in the starting context of
530
- // of this change.
531
- if (id !== "self" && !alreadyYielded.has(id)) {
532
- alreadyYielded.set(id, true);
533
- yield nodeIdFromChangeAtom(id);
534
- }
535
- yield* relevantRemovedRootsFromChild(childChange);
304
+ const detachId = getEffectiveDetachId(change);
305
+ if (detachId !== undefined) {
306
+ keys.push({ key: { ...detachId, target: CrossFieldTarget.Source }, count: 1 });
536
307
  }
537
- const selfSrc = change.valueReplace?.src;
538
- if (selfSrc !== undefined && selfSrc !== "self" && !alreadyYielded.has(selfSrc)) {
539
- yield nodeIdFromChangeAtom(selfSrc);
308
+ return keys;
309
+ }
310
+ function getNestedChanges(change) {
311
+ if (change.childChange === undefined) {
312
+ return [];
313
+ }
314
+ return [[change.childChange, 0]];
315
+ }
316
+ function invertAttachId(attachId, revision, isRollback, detachId) {
317
+ if (!isRollback) {
318
+ return makeChangeAtomId(attachId.localId, revision);
540
319
  }
320
+ return detachId ?? attachId;
541
321
  }
542
322
  //# sourceMappingURL=optionalField.js.map