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