@fluidframework/tree 2.113.1 → 2.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/api-report/tree.alpha.api.md +19 -0
  3. package/dist/core/change-family/changeFamily.d.ts +15 -4
  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/editBuilder.d.ts +2 -3
  7. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  8. package/dist/core/change-family/editBuilder.js +1 -2
  9. package/dist/core/change-family/editBuilder.js.map +1 -1
  10. package/dist/core/change-family/index.d.ts +1 -1
  11. package/dist/core/change-family/index.d.ts.map +1 -1
  12. package/dist/core/change-family/index.js.map +1 -1
  13. package/dist/core/index.d.ts +3 -2
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/tree/delta.d.ts +62 -16
  17. package/dist/core/tree/delta.d.ts.map +1 -1
  18. package/dist/core/tree/delta.js.map +1 -1
  19. package/dist/core/tree/detachedFieldIndex.d.ts +7 -13
  20. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  21. package/dist/core/tree/detachedFieldIndex.js +32 -46
  22. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  23. package/dist/core/tree/index.d.ts +1 -0
  24. package/dist/core/tree/index.d.ts.map +1 -1
  25. package/dist/core/tree/index.js.map +1 -1
  26. package/dist/core/tree/visitorUtils.d.ts +2 -4
  27. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  28. package/dist/core/tree/visitorUtils.js +2 -2
  29. package/dist/core/tree/visitorUtils.js.map +1 -1
  30. package/dist/entrypoints/alpha.d.ts +1 -1
  31. package/dist/entrypoints/alpha.d.ts.map +1 -1
  32. package/dist/entrypoints/alpha.js +5 -2
  33. package/dist/entrypoints/alpha.js.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  36. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  37. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  38. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  39. package/dist/feature-libraries/comparison-forest/comparisonForest.js +98 -0
  40. package/dist/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  41. package/dist/feature-libraries/comparison-forest/index.d.ts +6 -0
  42. package/dist/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  43. package/dist/feature-libraries/comparison-forest/index.js +10 -0
  44. package/dist/feature-libraries/comparison-forest/index.js.map +1 -0
  45. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  46. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  47. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  48. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  49. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  50. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  51. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  52. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  53. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  54. package/dist/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  55. package/dist/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  56. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  57. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  58. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +18 -6
  59. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  60. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  61. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  62. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  63. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  64. package/dist/feature-libraries/index.d.ts +4 -3
  65. package/dist/feature-libraries/index.d.ts.map +1 -1
  66. package/dist/feature-libraries/index.js +77 -72
  67. package/dist/feature-libraries/index.js.map +1 -1
  68. package/dist/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  69. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  70. package/dist/feature-libraries/mitigatedChangeFamily.js +12 -0
  71. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  72. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  73. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  74. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  75. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  76. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  77. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  78. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  79. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  81. package/dist/feature-libraries/modular-schema/invert.d.ts +15 -0
  82. package/dist/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  83. package/dist/feature-libraries/modular-schema/invert.js +159 -0
  84. package/dist/feature-libraries/modular-schema/invert.js.map +1 -0
  85. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  86. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  87. package/dist/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  88. package/dist/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  89. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  90. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  91. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  92. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  93. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  94. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  95. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  96. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  97. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  98. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  99. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  100. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  101. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +53 -406
  102. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  103. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  104. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  105. package/dist/feature-libraries/modular-schema/modularChangeUtils.js +205 -0
  106. package/dist/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  107. package/dist/feature-libraries/modular-schema/prune.d.ts +10 -0
  108. package/dist/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  109. package/dist/feature-libraries/modular-schema/prune.js +49 -0
  110. package/dist/feature-libraries/modular-schema/prune.js.map +1 -0
  111. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  112. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  113. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  114. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  115. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  116. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  117. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  118. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  119. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  120. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  121. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  122. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  123. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  124. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  125. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  126. package/dist/feature-libraries/treeTextCursor.d.ts +15 -0
  127. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  128. package/dist/feature-libraries/treeTextCursor.js +64 -1
  129. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  130. package/dist/index.d.ts +3 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +5 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/packageVersion.d.ts +1 -1
  135. package/dist/packageVersion.js +1 -1
  136. package/dist/packageVersion.js.map +1 -1
  137. package/dist/shared-tree/serializedChange.d.ts +2 -2
  138. package/dist/shared-tree/serializedChange.d.ts.map +1 -1
  139. package/dist/shared-tree/serializedChange.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +6 -3
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +8 -6
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  145. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  147. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  148. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  149. package/dist/shared-tree/sharedTreeChangeFamily.js +57 -1
  150. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  151. package/dist/shared-tree/transactionMinimize.d.ts.map +1 -1
  152. package/dist/shared-tree/transactionMinimize.js +2 -2
  153. package/dist/shared-tree/transactionMinimize.js.map +1 -1
  154. package/dist/shared-tree/transactionPostProcessor.d.ts +2 -1
  155. package/dist/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  156. package/dist/shared-tree/transactionPostProcessor.js.map +1 -1
  157. package/dist/shared-tree/treeCheckout.d.ts +8 -7
  158. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  159. package/dist/shared-tree/treeCheckout.js +1 -1
  160. package/dist/shared-tree/treeCheckout.js.map +1 -1
  161. package/dist/shared-tree-core/branch.d.ts +23 -9
  162. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  163. package/dist/shared-tree-core/branch.js +7 -0
  164. package/dist/shared-tree-core/branch.js.map +1 -1
  165. package/dist/shared-tree-core/editManager.d.ts +4 -4
  166. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  167. package/dist/shared-tree-core/editManager.js +2 -0
  168. package/dist/shared-tree-core/editManager.js.map +1 -1
  169. package/dist/shared-tree-core/editManagerCodecs.d.ts +3 -14
  170. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  171. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  172. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  173. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  174. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  175. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  176. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  177. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  178. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  179. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  180. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  181. package/dist/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  182. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  183. package/dist/shared-tree-core/editManagerSummarizer.js +0 -1
  184. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  185. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  186. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  187. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  188. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  189. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  190. package/dist/shared-tree-core/messageCodecs.d.ts +8 -1
  191. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  192. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  193. package/dist/shared-tree-core/sharedTreeCore.d.ts +5 -5
  194. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  195. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  196. package/dist/shared-tree-core/transaction.d.ts +10 -10
  197. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  198. package/dist/shared-tree-core/transaction.js +6 -3
  199. package/dist/shared-tree-core/transaction.js.map +1 -1
  200. package/dist/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  201. package/dist/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  202. package/dist/simple-tree/api/eraseSchemaDetails.js +15 -0
  203. package/dist/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  204. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +21 -2
  205. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  206. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  207. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
  208. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  209. package/dist/simple-tree/node-kinds/map/mapNode.js +9 -0
  210. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  211. package/dist/text/textDomain.d.ts +12 -0
  212. package/dist/text/textDomain.d.ts.map +1 -1
  213. package/dist/text/textDomain.js +37 -16
  214. package/dist/text/textDomain.js.map +1 -1
  215. package/dist/text/textDomainFormatted.d.ts +155 -61
  216. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  217. package/dist/text/textDomainFormatted.js +147 -71
  218. package/dist/text/textDomainFormatted.js.map +1 -1
  219. package/dist/text/textDomainFormattedDefault.d.ts +37 -14
  220. package/dist/text/textDomainFormattedDefault.d.ts.map +1 -1
  221. package/dist/text/textDomainFormattedDefault.js +13 -5
  222. package/dist/text/textDomainFormattedDefault.js.map +1 -1
  223. package/dist/treeDataStore.d.ts +49 -0
  224. package/dist/treeDataStore.d.ts.map +1 -0
  225. package/dist/treeDataStore.js +57 -0
  226. package/dist/treeDataStore.js.map +1 -0
  227. package/dist/treeFactory.d.ts +8 -3
  228. package/dist/treeFactory.d.ts.map +1 -1
  229. package/dist/treeFactory.js +6 -1
  230. package/dist/treeFactory.js.map +1 -1
  231. package/lib/core/change-family/changeFamily.d.ts +15 -4
  232. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  233. package/lib/core/change-family/changeFamily.js.map +1 -1
  234. package/lib/core/change-family/editBuilder.d.ts +2 -3
  235. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  236. package/lib/core/change-family/editBuilder.js +1 -2
  237. package/lib/core/change-family/editBuilder.js.map +1 -1
  238. package/lib/core/change-family/index.d.ts +1 -1
  239. package/lib/core/change-family/index.d.ts.map +1 -1
  240. package/lib/core/change-family/index.js.map +1 -1
  241. package/lib/core/index.d.ts +3 -2
  242. package/lib/core/index.d.ts.map +1 -1
  243. package/lib/core/index.js +1 -1
  244. package/lib/core/index.js.map +1 -1
  245. package/lib/core/tree/delta.d.ts +62 -16
  246. package/lib/core/tree/delta.d.ts.map +1 -1
  247. package/lib/core/tree/delta.js.map +1 -1
  248. package/lib/core/tree/detachedFieldIndex.d.ts +7 -13
  249. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  250. package/lib/core/tree/detachedFieldIndex.js +7 -21
  251. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  252. package/lib/core/tree/index.d.ts +1 -0
  253. package/lib/core/tree/index.d.ts.map +1 -1
  254. package/lib/core/tree/index.js.map +1 -1
  255. package/lib/core/tree/visitorUtils.d.ts +2 -4
  256. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  257. package/lib/core/tree/visitorUtils.js +2 -2
  258. package/lib/core/tree/visitorUtils.js.map +1 -1
  259. package/lib/entrypoints/alpha.d.ts +1 -1
  260. package/lib/entrypoints/alpha.d.ts.map +1 -1
  261. package/lib/entrypoints/alpha.js +1 -1
  262. package/lib/entrypoints/alpha.js.map +1 -1
  263. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  264. package/lib/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  265. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  266. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  267. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  268. package/lib/feature-libraries/comparison-forest/comparisonForest.js +94 -0
  269. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  270. package/lib/feature-libraries/comparison-forest/index.d.ts +6 -0
  271. package/lib/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  272. package/lib/feature-libraries/comparison-forest/index.js +6 -0
  273. package/lib/feature-libraries/comparison-forest/index.js.map +1 -0
  274. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  275. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  276. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  277. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  278. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  279. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  280. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  281. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  282. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  283. package/lib/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  284. package/lib/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  285. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  286. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  287. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +16 -4
  288. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  289. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  290. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  291. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  292. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  293. package/lib/feature-libraries/index.d.ts +4 -3
  294. package/lib/feature-libraries/index.d.ts.map +1 -1
  295. package/lib/feature-libraries/index.js +2 -1
  296. package/lib/feature-libraries/index.js.map +1 -1
  297. package/lib/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  298. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  299. package/lib/feature-libraries/mitigatedChangeFamily.js +12 -0
  300. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  301. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  302. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  303. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  304. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  305. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  306. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  307. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  308. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  309. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  310. package/lib/feature-libraries/modular-schema/invert.d.ts +15 -0
  311. package/lib/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  312. package/lib/feature-libraries/modular-schema/invert.js +155 -0
  313. package/lib/feature-libraries/modular-schema/invert.js.map +1 -0
  314. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  315. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  316. package/lib/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  317. package/lib/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  318. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  319. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  320. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  321. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  322. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  323. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  324. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  325. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  326. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  327. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  328. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  329. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  330. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +16 -367
  331. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  332. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  333. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  334. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +192 -0
  335. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  336. package/lib/feature-libraries/modular-schema/prune.d.ts +10 -0
  337. package/lib/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  338. package/lib/feature-libraries/modular-schema/prune.js +45 -0
  339. package/lib/feature-libraries/modular-schema/prune.js.map +1 -0
  340. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  341. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  342. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  343. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  344. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  345. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  346. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  347. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  348. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  349. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  350. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  351. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  352. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  353. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  354. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  355. package/lib/feature-libraries/treeTextCursor.d.ts +15 -0
  356. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  357. package/lib/feature-libraries/treeTextCursor.js +62 -1
  358. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  359. package/lib/index.d.ts +3 -1
  360. package/lib/index.d.ts.map +1 -1
  361. package/lib/index.js +2 -1
  362. package/lib/index.js.map +1 -1
  363. package/lib/packageVersion.d.ts +1 -1
  364. package/lib/packageVersion.js +1 -1
  365. package/lib/packageVersion.js.map +1 -1
  366. package/lib/shared-tree/serializedChange.d.ts +2 -2
  367. package/lib/shared-tree/serializedChange.d.ts.map +1 -1
  368. package/lib/shared-tree/serializedChange.js.map +1 -1
  369. package/lib/shared-tree/sharedTree.d.ts +6 -3
  370. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  371. package/lib/shared-tree/sharedTree.js +9 -7
  372. package/lib/shared-tree/sharedTree.js.map +1 -1
  373. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  374. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  375. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  376. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  377. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  378. package/lib/shared-tree/sharedTreeChangeFamily.js +55 -0
  379. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  380. package/lib/shared-tree/transactionMinimize.d.ts.map +1 -1
  381. package/lib/shared-tree/transactionMinimize.js +3 -3
  382. package/lib/shared-tree/transactionMinimize.js.map +1 -1
  383. package/lib/shared-tree/transactionPostProcessor.d.ts +2 -1
  384. package/lib/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  385. package/lib/shared-tree/transactionPostProcessor.js.map +1 -1
  386. package/lib/shared-tree/treeCheckout.d.ts +8 -7
  387. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  388. package/lib/shared-tree/treeCheckout.js +1 -1
  389. package/lib/shared-tree/treeCheckout.js.map +1 -1
  390. package/lib/shared-tree-core/branch.d.ts +23 -9
  391. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  392. package/lib/shared-tree-core/branch.js +7 -0
  393. package/lib/shared-tree-core/branch.js.map +1 -1
  394. package/lib/shared-tree-core/editManager.d.ts +4 -4
  395. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  396. package/lib/shared-tree-core/editManager.js +2 -0
  397. package/lib/shared-tree-core/editManager.js.map +1 -1
  398. package/lib/shared-tree-core/editManagerCodecs.d.ts +3 -14
  399. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  400. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  401. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  402. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  403. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  404. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  405. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  406. package/lib/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
  407. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  408. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  409. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  410. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -1
  411. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  412. package/lib/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  413. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  414. package/lib/shared-tree-core/editManagerSummarizer.js +0 -1
  415. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  416. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  417. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  418. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  419. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  420. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  421. package/lib/shared-tree-core/messageCodecs.d.ts +8 -1
  422. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  423. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  424. package/lib/shared-tree-core/sharedTreeCore.d.ts +5 -5
  425. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  426. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  427. package/lib/shared-tree-core/transaction.d.ts +10 -10
  428. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  429. package/lib/shared-tree-core/transaction.js +6 -3
  430. package/lib/shared-tree-core/transaction.js.map +1 -1
  431. package/lib/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  432. package/lib/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  433. package/lib/simple-tree/api/eraseSchemaDetails.js +15 -0
  434. package/lib/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  435. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +21 -2
  436. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  437. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  438. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
  439. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  440. package/lib/simple-tree/node-kinds/map/mapNode.js +9 -0
  441. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  442. package/lib/text/textDomain.d.ts +12 -0
  443. package/lib/text/textDomain.d.ts.map +1 -1
  444. package/lib/text/textDomain.js +34 -15
  445. package/lib/text/textDomain.js.map +1 -1
  446. package/lib/text/textDomainFormatted.d.ts +155 -61
  447. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  448. package/lib/text/textDomainFormatted.js +148 -73
  449. package/lib/text/textDomainFormatted.js.map +1 -1
  450. package/lib/text/textDomainFormattedDefault.d.ts +37 -14
  451. package/lib/text/textDomainFormattedDefault.d.ts.map +1 -1
  452. package/lib/text/textDomainFormattedDefault.js +14 -6
  453. package/lib/text/textDomainFormattedDefault.js.map +1 -1
  454. package/lib/treeDataStore.d.ts +49 -0
  455. package/lib/treeDataStore.d.ts.map +1 -0
  456. package/lib/treeDataStore.js +52 -0
  457. package/lib/treeDataStore.js.map +1 -0
  458. package/lib/treeFactory.d.ts +8 -3
  459. package/lib/treeFactory.d.ts.map +1 -1
  460. package/lib/treeFactory.js +5 -0
  461. package/lib/treeFactory.js.map +1 -1
  462. package/package.json +25 -24
  463. package/src/core/change-family/changeFamily.ts +32 -4
  464. package/src/core/change-family/editBuilder.ts +1 -2
  465. package/src/core/change-family/index.ts +2 -0
  466. package/src/core/index.ts +9 -6
  467. package/src/core/tree/delta.ts +62 -16
  468. package/src/core/tree/detachedFieldIndex.ts +7 -38
  469. package/src/core/tree/index.ts +2 -0
  470. package/src/core/tree/visitorUtils.ts +3 -17
  471. package/src/entrypoints/alpha.ts +7 -3
  472. package/src/feature-libraries/chunked-forest/uniformChunk.ts +11 -1
  473. package/src/feature-libraries/comparison-forest/comparisonForest.ts +140 -0
  474. package/src/feature-libraries/comparison-forest/index.ts +6 -0
  475. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +20 -6
  476. package/src/feature-libraries/default-schema/index.ts +1 -0
  477. package/src/feature-libraries/default-schema/noChangeCodecs.ts +11 -3
  478. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +33 -5
  479. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -3
  480. package/src/feature-libraries/index.ts +5 -0
  481. package/src/feature-libraries/mitigatedChangeFamily.ts +21 -3
  482. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -1
  483. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +9 -4
  484. package/src/feature-libraries/modular-schema/index.ts +1 -0
  485. package/src/feature-libraries/modular-schema/invert.ts +338 -0
  486. package/src/feature-libraries/modular-schema/minimizeModularChange.ts +3 -5
  487. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +16 -13
  488. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +3 -1
  489. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +2 -1
  490. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +45 -644
  491. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +340 -0
  492. package/src/feature-libraries/modular-schema/prune.ts +69 -0
  493. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +4 -2
  494. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -2
  495. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +4 -2
  496. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
  497. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +6 -3
  498. package/src/feature-libraries/treeTextCursor.ts +66 -1
  499. package/src/index.ts +4 -0
  500. package/src/packageVersion.ts +1 -1
  501. package/src/shared-tree/serializedChange.ts +2 -2
  502. package/src/shared-tree/sharedTree.ts +34 -14
  503. package/src/shared-tree/sharedTreeChangeCodecs.ts +11 -3
  504. package/src/shared-tree/sharedTreeChangeFamily.ts +77 -2
  505. package/src/shared-tree/transactionMinimize.ts +7 -3
  506. package/src/shared-tree/transactionPostProcessor.ts +5 -1
  507. package/src/shared-tree/treeCheckout.ts +55 -16
  508. package/src/shared-tree-core/branch.ts +40 -12
  509. package/src/shared-tree-core/editManager.ts +46 -25
  510. package/src/shared-tree-core/editManagerCodecs.ts +9 -21
  511. package/src/shared-tree-core/editManagerCodecsCommons.ts +14 -2
  512. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +18 -21
  513. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +18 -20
  514. package/src/shared-tree-core/editManagerSummarizer.ts +9 -6
  515. package/src/shared-tree-core/messageCodecV1ToV4.ts +3 -3
  516. package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -2
  517. package/src/shared-tree-core/messageCodecs.ts +12 -2
  518. package/src/shared-tree-core/sharedTreeCore.ts +15 -6
  519. package/src/shared-tree-core/transaction.ts +47 -25
  520. package/src/simple-tree/api/eraseSchemaDetails.ts +15 -0
  521. package/src/simple-tree/node-kinds/array/arrayNode.ts +21 -2
  522. package/src/simple-tree/node-kinds/map/mapNode.ts +24 -2
  523. package/src/text/textDomain.ts +29 -6
  524. package/src/text/textDomainFormatted.ts +351 -134
  525. package/src/text/textDomainFormattedDefault.ts +25 -16
  526. package/src/treeDataStore.ts +125 -0
  527. package/src/treeFactory.ts +11 -3
@@ -7,13 +7,15 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
7
  import { BTree } from "@tylerbu/sorted-btree-es6";
8
8
  import { lt } from "semver-ts";
9
9
  import { FluidClientVersion, } from "../../codec/index.js";
10
- import { EditBuilder, makeDetachedNodeId, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, areEqualChangeAtomIdOpts, tagChange, makeAnonChange, newChangeAtomIdRangeMap, mapTaggedChange, comparePartialRevisions, comparePartialChangesetLocalIds, } from "../../core/index.js";
10
+ import { EditBuilder, makeDetachedNodeId, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, areEqualChangeAtomIdOpts, tagChange, makeAnonChange, mapTaggedChange, comparePartialRevisions, comparePartialChangesetLocalIds, } from "../../core/index.js";
11
11
  import { brand, idAllocatorFromMaxId, idAllocatorFromState, getOrCreate, mergeTupleBTrees, RangeMap, balancedReduce, newTupleBTree, compareStrings, createTupleComparator, } from "../../util/index.js";
12
12
  import { getFromChangeAtomIdMap, newChangeAtomIdBTree, setInChangeAtomIdMap, } from "../changeAtomIdBTree.js";
13
- import { CrossFieldTarget, getFirstFromCrossFieldMap, setInCrossFieldMap, } from "./crossFieldQueries.js";
14
13
  import { EditFilterStatus, NodeAttachState, } from "./fieldChangeHandler.js";
15
14
  import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
16
15
  import { newCrossFieldKeyTable, } from "./modularChangeTypes.js";
16
+ import { CrossFieldManagerI, getChangeHandler, getRevInfoFromTaggedChanges, hasConflicts, makeModularChangeset, newConstraintState, newCrossFieldTable, nodeChangeFromId, revisionInfoFromTaggedChange, updateConstraintsForFields, } from "./modularChangeUtils.js";
17
+ import { invertModularChange } from "./invert.js";
18
+ import { pruneFieldMap } from "./prune.js";
17
19
  /**
18
20
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
19
21
  * as determined by the schema.
@@ -27,6 +29,9 @@ export class ModularChangeFamily {
27
29
  get rebaser() {
28
30
  return this;
29
31
  }
32
+ buildProcessor(processFn) {
33
+ return (change) => processFn(change, this);
34
+ }
30
35
  /**
31
36
  * Produces an equivalent list of `FieldChangeset`s that all target the same {@link FlexFieldKind}.
32
37
  * @param changes - The list of `FieldChange`s whose `FieldChangeset`s needs to be normalized.
@@ -48,8 +53,7 @@ export class ModularChangeFamily {
48
53
  change2: change2.change,
49
54
  };
50
55
  }
51
- const fieldKind = getFieldKind(this.fieldKinds, kind);
52
- const changeHandler = fieldKind.changeHandler;
56
+ const changeHandler = getChangeHandler(this.fieldKinds, kind);
53
57
  const normalizedChange1 = this.normalizeFieldChange(change1, changeHandler);
54
58
  const normalizedChange2 = this.normalizeFieldChange(change2, changeHandler);
55
59
  return {
@@ -319,106 +323,8 @@ export class ModularChangeFamily {
319
323
  }
320
324
  return composedNodeChange;
321
325
  }
322
- /**
323
- * @param change - The change to invert.
324
- * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
325
- * performing a sandwich rebase.
326
- * @param revisionForInvert - The revision for the invert changeset.
327
- */
328
326
  invert(change, isRollback, revisionForInvert) {
329
- // Rollback changesets destroy the nodes created by the change being rolled back.
330
- const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;
331
- // Destroys only occur in rollback changesets, which are never inverted.
332
- assert(change.change.destroys === undefined, 0x89a /* Unexpected destroys in change to invert */);
333
- const revInfos = isRollback
334
- ? [{ revision: revisionForInvert, rollbackOf: change.revision }]
335
- : [{ revision: revisionForInvert }];
336
- const noChangeConstraint = change.change.noChangeConstraintOnRevert;
337
- const noChangeConstraintOnRevert = change.change.noChangeConstraint;
338
- if (hasConflicts(change.change)) {
339
- return makeModularChangeset({
340
- maxId: change.change.maxId,
341
- revisions: revInfos,
342
- destroys,
343
- });
344
- }
345
- const genId = idAllocatorFromMaxId(change.change.maxId ?? -1);
346
- const crossFieldTable = {
347
- ...newCrossFieldTable(),
348
- originalFieldToContext: new Map(),
349
- invertedNodeToParent: brand(change.change.nodeToParent.clone()),
350
- };
351
- const { revInfos: oldRevInfos } = getRevInfoFromTaggedChanges([change]);
352
- const revisionMetadata = revisionMetadataSourceFromInfo(oldRevInfos);
353
- const invertedFields = this.invertFieldMap(change.change.fieldChanges, undefined, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert);
354
- const invertedNodes = newChangeAtomIdBTree();
355
- change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
356
- invertedNodes.set([revision, localId], this.invertNodeChange(nodeChangeset, { revision, localId }, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert));
357
- });
358
- if (crossFieldTable.invalidatedFields.size > 0) {
359
- const fieldsToUpdate = crossFieldTable.invalidatedFields;
360
- crossFieldTable.invalidatedFields = new Set();
361
- for (const fieldChange of fieldsToUpdate) {
362
- const originalFieldChange = fieldChange.change;
363
- const context = crossFieldTable.originalFieldToContext.get(fieldChange);
364
- assert(context !== undefined, 0x851 /* Should have context for every invalidated field */);
365
- const { invertedField, fieldId } = context;
366
- const amendedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(originalFieldChange, isRollback, genId, revisionForInvert, new InvertManager(crossFieldTable, fieldChange, fieldId), revisionMetadata);
367
- invertedField.change = brand(amendedChange);
368
- }
369
- }
370
- const crossFieldKeys = this.makeCrossFieldKeyTable(invertedFields, invertedNodes);
371
- const constraintState = newConstraintState(0);
372
- this.updateConstraintsForFields(invertedFields, NodeAttachState.Attached, constraintState, invertedNodes);
373
- return makeModularChangeset({
374
- fieldChanges: invertedFields,
375
- nodeChanges: invertedNodes,
376
- nodeToParent: crossFieldTable.invertedNodeToParent,
377
- nodeAliases: change.change.nodeAliases,
378
- crossFieldKeys,
379
- maxId: genId.getMaxId(),
380
- revisions: revInfos,
381
- constraintViolationCount: constraintState.violationCount,
382
- noChangeConstraint,
383
- noChangeConstraintOnRevert,
384
- destroys,
385
- });
386
- }
387
- invertFieldMap(changes, parentId, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert) {
388
- const invertedFields = new Map();
389
- for (const [field, fieldChange] of changes) {
390
- const fieldId = { nodeId: parentId, field };
391
- const manager = new InvertManager(crossFieldTable, fieldChange, fieldId);
392
- const invertedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(fieldChange.change, isRollback, genId, revisionForInvert, manager, revisionMetadata);
393
- const invertedFieldChange = {
394
- ...fieldChange,
395
- change: brand(invertedChange),
396
- };
397
- invertedFields.set(field, invertedFieldChange);
398
- crossFieldTable.originalFieldToContext.set(fieldChange, {
399
- fieldId,
400
- invertedField: invertedFieldChange,
401
- });
402
- }
403
- return invertedFields;
404
- }
405
- invertNodeChange(change, id, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert) {
406
- const inverse = {};
407
- // If the node has a constraint, it should be inverted to a node-exist-on-revert constraint. This ensure that if
408
- // the inverse is inverted again, the original input constraint will be restored.
409
- if (change.nodeExistsConstraint !== undefined) {
410
- inverse.nodeExistsConstraintOnRevert = change.nodeExistsConstraint;
411
- }
412
- // The node-exist-on-revert constraint of a node is the constraint that should apply when the a change is reverted.
413
- // So, it should become the constraint in the inverse. If this constraint is violated when applying the inverse,
414
- // it will be discarded.
415
- if (change.nodeExistsConstraintOnRevert !== undefined) {
416
- inverse.nodeExistsConstraint = change.nodeExistsConstraintOnRevert;
417
- }
418
- if (change.fieldChanges !== undefined) {
419
- inverse.fieldChanges = this.invertFieldMap(change.fieldChanges, id, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert);
420
- }
421
- return inverse;
327
+ return invertModularChange(change, isRollback, revisionForInvert, this.fieldKinds);
422
328
  }
423
329
  rebase(taggedChange, potentiallyConflictedOver, revisionMetadata, ignoreNoChangeViolation = false) {
424
330
  // Our current cell ordering scheme in sequences depends on being able to rebase over a change with conflicts.
@@ -460,9 +366,9 @@ export class ModularChangeFamily {
460
366
  noChangeConstraint = { violated: true };
461
367
  constraintState.violationCount += 1;
462
368
  }
463
- this.updateConstraintsForFields(rebasedFields, NodeAttachState.Attached, constraintState, rebasedNodes);
369
+ updateConstraintsForFields(rebasedFields, NodeAttachState.Attached, constraintState, rebasedNodes, this.fieldKinds);
464
370
  const rebased = makeModularChangeset({
465
- fieldChanges: this.pruneFieldMap(rebasedFields, rebasedNodes),
371
+ fieldChanges: pruneFieldMap(rebasedFields, rebasedNodes, this.fieldKinds),
466
372
  nodeChanges: rebasedNodes,
467
373
  nodeToParent: crossFieldTable.rebasedNodeToParent,
468
374
  nodeAliases: change.nodeAliases,
@@ -678,66 +584,6 @@ export class ModularChangeFamily {
678
584
  setInChangeAtomIdMap(crossFieldTable.baseToRebasedNodeId, baseId, newId);
679
585
  return rebasedChange;
680
586
  }
681
- updateConstraintsForFields(fields, parentInputAttachState, constraintState, nodes) {
682
- for (const field of fields.values()) {
683
- const handler = getChangeHandler(this.fieldKinds, field.fieldKind);
684
- for (const [nodeId, inputIndex, _outputIndex] of handler.getNestedChanges(field.change)) {
685
- const isInputDetached = inputIndex === undefined;
686
- const inputAttachState = parentInputAttachState === NodeAttachState.Detached || isInputDetached
687
- ? NodeAttachState.Detached
688
- : NodeAttachState.Attached;
689
- this.updateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState);
690
- }
691
- }
692
- }
693
- updateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState) {
694
- const node = nodes.get([nodeId.revision, nodeId.localId]) ?? fail(0xb24 /* Unknown node ID */);
695
- if (node.nodeExistsConstraint !== undefined) {
696
- const isNowViolated = inputAttachState === NodeAttachState.Detached;
697
- if (node.nodeExistsConstraint.violated !== isNowViolated) {
698
- node.nodeExistsConstraint = {
699
- ...node.nodeExistsConstraint,
700
- violated: isNowViolated,
701
- };
702
- constraintState.violationCount += isNowViolated ? 1 : -1;
703
- }
704
- }
705
- if (node.fieldChanges !== undefined) {
706
- this.updateConstraintsForFields(node.fieldChanges, inputAttachState, constraintState, nodes);
707
- }
708
- }
709
- pruneFieldMap(changeset, nodeMap) {
710
- if (changeset === undefined) {
711
- return undefined;
712
- }
713
- const prunedChangeset = new Map();
714
- for (const [field, fieldChange] of changeset) {
715
- const handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);
716
- const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => this.pruneNodeChange(nodeId, nodeMap));
717
- if (!handler.isEmpty(prunedFieldChangeset)) {
718
- prunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });
719
- }
720
- }
721
- return prunedChangeset.size > 0 ? prunedChangeset : undefined;
722
- }
723
- pruneNodeChange(nodeId, nodeMap) {
724
- const changeset = nodeChangeFromId(nodeMap, nodeId);
725
- const prunedFields = changeset.fieldChanges === undefined
726
- ? undefined
727
- : this.pruneFieldMap(changeset.fieldChanges, nodeMap);
728
- const prunedChange = { ...changeset, fieldChanges: prunedFields };
729
- if (prunedChange.fieldChanges === undefined) {
730
- delete prunedChange.fieldChanges;
731
- }
732
- if (isEmptyNodeChangeset(prunedChange)) {
733
- nodeMap.delete([nodeId.revision, nodeId.localId]);
734
- return undefined;
735
- }
736
- else {
737
- setInChangeAtomIdMap(nodeMap, nodeId, prunedChange);
738
- return nodeId;
739
- }
740
- }
741
587
  getRevisions(change) {
742
588
  if (change.revisions === undefined || change.revisions.length === 0) {
743
589
  return new Set([undefined]);
@@ -788,29 +634,8 @@ export class ModularChangeFamily {
788
634
  }
789
635
  return updatedFields;
790
636
  }
791
- makeCrossFieldKeyTable(fields, nodes) {
792
- const keys = newCrossFieldKeyTable();
793
- this.populateCrossFieldKeyTableForFieldMap(keys, fields, undefined);
794
- nodes.forEachPair(([revision, localId], node) => {
795
- if (node.fieldChanges !== undefined) {
796
- this.populateCrossFieldKeyTableForFieldMap(keys, node.fieldChanges, {
797
- revision,
798
- localId,
799
- });
800
- }
801
- });
802
- return keys;
803
- }
804
- populateCrossFieldKeyTableForFieldMap(table, fields, parent) {
805
- for (const [fieldKey, fieldChange] of fields) {
806
- const keys = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).getCrossFieldKeys(fieldChange.change);
807
- for (const { key, count } of keys) {
808
- table.set(key, count, { nodeId: parent, field: fieldKey });
809
- }
810
- }
811
- }
812
637
  buildEditor(mintRevisionTag, changeReceiver) {
813
- return new ModularEditBuilder(this, this.fieldKinds, changeReceiver, this.codecOptions);
638
+ return new ModularEditBuilder(this.rebaser, this.fieldKinds, changeReceiver, this.codecOptions);
814
639
  }
815
640
  createEmptyFieldChange(fieldKind) {
816
641
  const emptyChange = getChangeHandler(this.fieldKinds, fieldKind).createEmpty();
@@ -960,12 +785,6 @@ function composeBuildsDestroysAndRefreshers(change1, change2) {
960
785
  }
961
786
  return { allBuilds, allDestroys, allRefreshers };
962
787
  }
963
- function invertBuilds(builds) {
964
- if (builds !== undefined) {
965
- return brand(builds.mapValues((chunk) => chunk.topLevelLength));
966
- }
967
- return undefined;
968
- }
969
788
  /**
970
789
  * Returns the set of removed roots that should be in memory for the given change to be applied.
971
790
  * A removed root is relevant if any of the following is true:
@@ -1166,22 +985,6 @@ export function rebaseRevisionMetadataFromInfo(revInfos, revisionToRebase, baseR
1166
985
  getBaseRevisions,
1167
986
  };
1168
987
  }
1169
- function isEmptyNodeChangeset(change) {
1170
- return (change.fieldChanges === undefined &&
1171
- change.nodeExistsConstraint === undefined &&
1172
- change.nodeExistsConstraintOnRevert === undefined);
1173
- }
1174
- export function getFieldKind(fieldKinds, kind) {
1175
- if (kind === genericFieldKind.identifier) {
1176
- return genericFieldKind;
1177
- }
1178
- const fieldKind = fieldKinds.get(kind);
1179
- assert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);
1180
- return fieldKind;
1181
- }
1182
- export function getChangeHandler(fieldKinds, kind) {
1183
- return getFieldKind(fieldKinds, kind).changeHandler;
1184
- }
1185
988
  function newComposeTable(baseChange, newChange, composedNodeToParent) {
1186
989
  return {
1187
990
  ...newCrossFieldTable(),
@@ -1199,75 +1002,6 @@ function newComposeTable(baseChange, newChange, composedNodeToParent) {
1199
1002
  },
1200
1003
  };
1201
1004
  }
1202
- function newCrossFieldTable() {
1203
- return {
1204
- srcTable: newChangeAtomIdRangeMap(),
1205
- dstTable: newChangeAtomIdRangeMap(),
1206
- srcDependents: newChangeAtomIdRangeMap(),
1207
- dstDependents: newChangeAtomIdRangeMap(),
1208
- invalidatedFields: new Set(),
1209
- };
1210
- }
1211
- function newConstraintState(violationCount) {
1212
- return {
1213
- violationCount,
1214
- };
1215
- }
1216
- class CrossFieldManagerI {
1217
- constructor(crossFieldTable, currentFieldKey, allowInval = true) {
1218
- this.crossFieldTable = crossFieldTable;
1219
- this.currentFieldKey = currentFieldKey;
1220
- this.allowInval = allowInval;
1221
- }
1222
- set(target, revision, id, count, newValue, invalidateDependents) {
1223
- if (invalidateDependents && this.allowInval) {
1224
- const lastChangedId = id + count - 1;
1225
- let firstId = id;
1226
- while (firstId <= lastChangedId) {
1227
- const dependentEntry = getFirstFromCrossFieldMap(this.getDependents(target), revision, firstId, lastChangedId - firstId + 1);
1228
- if (dependentEntry.value !== undefined) {
1229
- this.crossFieldTable.invalidatedFields.add(dependentEntry.value);
1230
- }
1231
- firstId = brand(firstId + dependentEntry.length);
1232
- }
1233
- }
1234
- setInCrossFieldMap(this.getMap(target), revision, id, count, newValue);
1235
- }
1236
- get(target, revision, id, count, addDependency) {
1237
- if (addDependency) {
1238
- // We assume that if there is already an entry for this ID it is because
1239
- // a field handler has called compose on the same node multiple times.
1240
- // In this case we only want to update the latest version, so we overwrite the dependency.
1241
- setInCrossFieldMap(this.getDependents(target), revision, id, count, this.currentFieldKey);
1242
- }
1243
- return getFirstFromCrossFieldMap(this.getMap(target), revision, id, count);
1244
- }
1245
- getMap(target) {
1246
- return target === CrossFieldTarget.Source
1247
- ? this.crossFieldTable.srcTable
1248
- : this.crossFieldTable.dstTable;
1249
- }
1250
- getDependents(target) {
1251
- return target === CrossFieldTarget.Source
1252
- ? this.crossFieldTable.srcDependents
1253
- : this.crossFieldTable.dstDependents;
1254
- }
1255
- }
1256
- class InvertManager extends CrossFieldManagerI {
1257
- constructor(table, field, fieldId, allowInval = true) {
1258
- super(table, field, allowInval);
1259
- this.fieldId = fieldId;
1260
- }
1261
- onMoveIn(id) {
1262
- setInChangeAtomIdMap(this.table.invertedNodeToParent, id, this.fieldId);
1263
- }
1264
- moveKey(target, revision, id, count) {
1265
- assert(false, 0x9c5 /* Keys should not be moved manually during invert */);
1266
- }
1267
- get table() {
1268
- return this.crossFieldTable;
1269
- }
1270
- }
1271
1005
  class RebaseManager extends CrossFieldManagerI {
1272
1006
  constructor(table, currentField, fieldId, allowInval = true) {
1273
1007
  super(table, currentField, allowInval);
@@ -1345,44 +1079,10 @@ class ComposeManager extends CrossFieldManagerI {
1345
1079
  return this.crossFieldTable;
1346
1080
  }
1347
1081
  }
1348
- function makeModularChangeset(props) {
1349
- const p = props ?? { maxId: -1 };
1350
- const changeset = {
1351
- fieldChanges: p.fieldChanges ?? new Map(),
1352
- nodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),
1353
- nodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),
1354
- nodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),
1355
- crossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),
1356
- };
1357
- if (p.revisions !== undefined && p.revisions.length > 0) {
1358
- changeset.revisions = p.revisions;
1359
- }
1360
- if (p.maxId >= 0) {
1361
- changeset.maxId = brand(p.maxId);
1362
- }
1363
- if (p.constraintViolationCount !== undefined && p.constraintViolationCount > 0) {
1364
- changeset.constraintViolationCount = p.constraintViolationCount;
1365
- }
1366
- if (p.noChangeConstraint !== undefined) {
1367
- changeset.noChangeConstraint = p.noChangeConstraint;
1368
- }
1369
- if (p.noChangeConstraintOnRevert !== undefined) {
1370
- changeset.noChangeConstraintOnRevert = p.noChangeConstraintOnRevert;
1371
- }
1372
- if (p.builds !== undefined && p.builds.size > 0) {
1373
- changeset.builds = p.builds;
1374
- }
1375
- if (p.destroys !== undefined && p.destroys.size > 0) {
1376
- changeset.destroys = p.destroys;
1377
- }
1378
- if (p.refreshers !== undefined && p.refreshers.size > 0) {
1379
- changeset.refreshers = p.refreshers;
1380
- }
1381
- return changeset;
1382
- }
1383
1082
  export class ModularEditBuilder extends EditBuilder {
1384
- constructor(family, fieldKinds, changeReceiver, codecOptions) {
1385
- super(family, changeReceiver);
1083
+ constructor(rebaser, fieldKinds, changeReceiver, codecOptions) {
1084
+ super(changeReceiver);
1085
+ this.rebaser = rebaser;
1386
1086
  this.fieldKinds = fieldKinds;
1387
1087
  this.transactionDepth = 0;
1388
1088
  this.idAllocator = idAllocatorFromMaxId();
@@ -1475,7 +1175,7 @@ export class ModularEditBuilder extends EditBuilder {
1475
1175
  });
1476
1176
  const revInfo = [...revisions].map((revision) => ({ revision }));
1477
1177
  const composedChange = {
1478
- ...this.changeFamily.rebaser.compose(changeMaps),
1178
+ ...this.rebaser.compose(changeMaps),
1479
1179
  revisions: revInfo,
1480
1180
  };
1481
1181
  const maxId = brand(this.idAllocator.getMaxId());
@@ -1600,49 +1300,6 @@ function buildModularChangesetFromNode(props) {
1600
1300
  childId: nodeId,
1601
1301
  });
1602
1302
  }
1603
- function getRevInfoFromTaggedChanges(changes) {
1604
- let maxId = -1;
1605
- const revInfos = [];
1606
- const revisions = new Set();
1607
- for (const taggedChange of changes) {
1608
- const change = taggedChange.change;
1609
- maxId = Math.max(change.maxId ?? -1, maxId);
1610
- const infosToAdd = revisionInfoFromTaggedChange(taggedChange);
1611
- for (const info of infosToAdd) {
1612
- if (!revisions.has(info.revision)) {
1613
- revisions.add(info.revision);
1614
- revInfos.push(info);
1615
- }
1616
- }
1617
- }
1618
- const rolledBackRevisions = [];
1619
- for (const info of revInfos) {
1620
- if (info.rollbackOf !== undefined) {
1621
- rolledBackRevisions.push(info.rollbackOf);
1622
- }
1623
- }
1624
- rolledBackRevisions.reverse();
1625
- for (const revision of rolledBackRevisions) {
1626
- if (!revisions.has(revision)) {
1627
- revInfos.push({ revision });
1628
- }
1629
- }
1630
- return { maxId: brand(maxId), revInfos };
1631
- }
1632
- function revisionInfoFromTaggedChange(taggedChange) {
1633
- const revInfos = [];
1634
- if (taggedChange.change.revisions !== undefined) {
1635
- revInfos.push(...taggedChange.change.revisions);
1636
- }
1637
- else if (taggedChange.revision !== undefined) {
1638
- const info = { revision: taggedChange.revision };
1639
- if (taggedChange.rollbackOf !== undefined) {
1640
- info.rollbackOf = taggedChange.rollbackOf;
1641
- }
1642
- revInfos.push(info);
1643
- }
1644
- return revInfos;
1645
- }
1646
1303
  function fieldChangeFromId(fields, nodes, id) {
1647
1304
  const fieldMap = fieldMapFromNodeId(fields, nodes, id.nodeId);
1648
1305
  return fieldMap.get(id.field) ?? fail(0xb25 /* No field exists for the given ID */);
@@ -1664,11 +1321,6 @@ function rebasedFieldIdFromBaseId(table, baseId) {
1664
1321
  function rebasedNodeIdFromBaseNodeId(table, baseId) {
1665
1322
  return getFromChangeAtomIdMap(table.baseToRebasedNodeId, baseId) ?? baseId;
1666
1323
  }
1667
- function nodeChangeFromId(nodes, id) {
1668
- const node = getFromChangeAtomIdMap(nodes, id);
1669
- assert(node !== undefined, 0x9ca /* Unknown node ID */);
1670
- return node;
1671
- }
1672
1324
  function fieldIdFromFieldIdKey([revision, localId, field]) {
1673
1325
  const nodeId = localId === undefined ? undefined : { revision, localId };
1674
1326
  return { nodeId, field };
@@ -1721,9 +1373,6 @@ function normalizeNodeId(nodeId, nodeAliases) {
1721
1373
  currentId = dealiased;
1722
1374
  }
1723
1375
  }
1724
- function hasConflicts(change) {
1725
- return (change.constraintViolationCount ?? 0) > 0;
1726
- }
1727
1376
  /**
1728
1377
  * A rebaseChild callback for fields with no new changes.
1729
1378
  * Asserts that there are no new changes and returns undefined.