@fluidframework/tree 2.74.0 → 2.80.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 (895) hide show
  1. package/.eslintrc.cjs +1 -16
  2. package/CHANGELOG.md +18 -0
  3. package/api-report/tree.alpha.api.md +20 -2
  4. package/dist/alpha.d.ts +4 -0
  5. package/dist/codec/codec.d.ts +31 -3
  6. package/dist/codec/codec.d.ts.map +1 -1
  7. package/dist/codec/codec.js +10 -0
  8. package/dist/codec/codec.js.map +1 -1
  9. package/dist/codec/index.d.ts +2 -2
  10. package/dist/codec/index.d.ts.map +1 -1
  11. package/dist/codec/index.js +2 -2
  12. package/dist/codec/index.js.map +1 -1
  13. package/dist/codec/versioned/codec.d.ts +80 -22
  14. package/dist/codec/versioned/codec.d.ts.map +1 -1
  15. package/dist/codec/versioned/codec.js +137 -15
  16. package/dist/codec/versioned/codec.js.map +1 -1
  17. package/dist/codec/versioned/index.d.ts +1 -1
  18. package/dist/codec/versioned/index.d.ts.map +1 -1
  19. package/dist/codec/versioned/index.js +2 -2
  20. package/dist/codec/versioned/index.js.map +1 -1
  21. package/dist/core/index.d.ts +2 -2
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +3 -4
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/rebase/changeRebaser.d.ts +36 -2
  26. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  27. package/dist/core/rebase/changeRebaser.js.map +1 -1
  28. package/dist/core/rebase/index.d.ts +2 -2
  29. package/dist/core/rebase/index.d.ts.map +1 -1
  30. package/dist/core/rebase/index.js +1 -2
  31. package/dist/core/rebase/index.js.map +1 -1
  32. package/dist/core/rebase/types.d.ts +6 -2
  33. package/dist/core/rebase/types.d.ts.map +1 -1
  34. package/dist/core/rebase/types.js +1 -12
  35. package/dist/core/rebase/types.js.map +1 -1
  36. package/dist/core/rebase/utils.js +3 -3
  37. package/dist/core/rebase/utils.js.map +1 -1
  38. package/dist/core/schema-stored/schema.js +3 -3
  39. package/dist/core/schema-stored/schema.js.map +1 -1
  40. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  41. package/dist/core/tree/anchorSet.js +3 -4
  42. package/dist/core/tree/anchorSet.js.map +1 -1
  43. package/dist/core/tree/detachedFieldIndex.d.ts +1 -2
  44. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  45. package/dist/core/tree/detachedFieldIndex.js +12 -56
  46. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  47. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
  48. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  49. package/dist/core/tree/detachedFieldIndexCodecCommon.js +6 -6
  50. package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  51. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
  52. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  53. package/dist/core/tree/detachedFieldIndexCodecV1.js +4 -5
  54. package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  55. package/dist/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
  56. package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  57. package/dist/core/tree/detachedFieldIndexCodecV2.js +4 -6
  58. package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  59. package/dist/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
  60. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  61. package/dist/core/tree/detachedFieldIndexCodecs.js +11 -41
  62. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  63. package/dist/core/tree/index.d.ts +1 -1
  64. package/dist/core/tree/index.d.ts.map +1 -1
  65. package/dist/core/tree/index.js +2 -2
  66. package/dist/core/tree/index.js.map +1 -1
  67. package/dist/core/tree/mapTree.js +1 -1
  68. package/dist/core/tree/mapTree.js.map +1 -1
  69. package/dist/core/tree/sparseTree.d.ts.map +1 -1
  70. package/dist/core/tree/sparseTree.js +1 -0
  71. package/dist/core/tree/sparseTree.js.map +1 -1
  72. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  73. package/dist/core/tree/treeTextFormat.js +5 -9
  74. package/dist/core/tree/treeTextFormat.js.map +1 -1
  75. package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -0
  76. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
  77. package/dist/feature-libraries/changeAtomIdBTree.js +16 -0
  78. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -0
  79. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
  80. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  81. package/dist/feature-libraries/chunked-forest/chunkedForest.js +6 -6
  82. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  83. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  84. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
  85. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  86. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  87. package/dist/feature-libraries/chunked-forest/codec/codecs.js +19 -11
  88. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  89. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
  90. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  91. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
  92. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  93. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  94. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  95. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
  96. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  97. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
  98. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  99. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  100. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  101. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
  102. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  103. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
  104. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  105. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
  106. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  107. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  108. package/dist/feature-libraries/flex-tree/lazyField.js +11 -13
  109. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  110. package/dist/feature-libraries/index.d.ts +3 -2
  111. package/dist/feature-libraries/index.d.ts.map +1 -1
  112. package/dist/feature-libraries/index.js +9 -7
  113. package/dist/feature-libraries/index.js.map +1 -1
  114. package/dist/feature-libraries/indexing/anchorTreeIndex.js +6 -6
  115. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  116. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  117. package/dist/feature-libraries/mitigatedChangeFamily.js +10 -1
  118. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  119. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  120. package/dist/feature-libraries/modular-schema/comparison.js +12 -9
  121. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  122. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
  123. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
  124. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +59 -0
  125. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
  126. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
  127. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  128. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  129. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  130. package/dist/feature-libraries/modular-schema/genericFieldKind.js +4 -4
  131. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  132. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +2 -2
  133. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  134. package/dist/feature-libraries/modular-schema/index.d.ts +4 -2
  135. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  136. package/dist/feature-libraries/modular-schema/index.js +11 -7
  137. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  138. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
  139. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
  140. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +315 -0
  141. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
  142. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
  143. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
  144. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +31 -0
  145. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
  146. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  147. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  148. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +25 -288
  149. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  150. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
  151. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  152. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +225 -195
  153. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  154. package/dist/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
  155. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
  156. package/dist/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +7 -7
  157. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
  158. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
  159. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
  160. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +21 -0
  161. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
  162. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
  163. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  164. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  165. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
  166. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  167. package/dist/feature-libraries/object-forest/objectForest.js +4 -4
  168. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  169. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  170. package/dist/feature-libraries/optional-field/optionalField.js +34 -39
  171. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  172. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  173. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +14 -2
  174. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  175. package/dist/feature-libraries/schema-index/codec.d.ts +7 -21
  176. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  177. package/dist/feature-libraries/schema-index/codec.js +28 -70
  178. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  179. package/dist/feature-libraries/schema-index/index.d.ts +2 -2
  180. package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
  181. package/dist/feature-libraries/schema-index/index.js +2 -5
  182. package/dist/feature-libraries/schema-index/index.js.map +1 -1
  183. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
  184. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  185. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -12
  186. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  187. package/dist/feature-libraries/schemaChecker.d.ts.map +1 -1
  188. package/dist/feature-libraries/schemaChecker.js +11 -6
  189. package/dist/feature-libraries/schemaChecker.js.map +1 -1
  190. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  191. package/dist/feature-libraries/sequence-field/compose.js +17 -13
  192. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  193. package/dist/feature-libraries/sequence-field/invert.js +5 -4
  194. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  195. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  196. package/dist/feature-libraries/sequence-field/moveEffectTable.js +15 -9
  197. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  198. package/dist/feature-libraries/sequence-field/rebase.js +26 -18
  199. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  200. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
  201. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  202. package/dist/feature-libraries/sequence-field/replaceRevisions.js +40 -35
  203. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  204. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  205. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
  206. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  207. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  208. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +4 -2
  209. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  210. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  211. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
  212. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  213. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  214. package/dist/feature-libraries/sequence-field/utils.js +46 -27
  215. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  216. package/dist/feature-libraries/treeCursorUtils.js +7 -7
  217. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  218. package/dist/feature-libraries/treeTextCursor.js +2 -2
  219. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  220. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  221. package/dist/feature-libraries/valueUtilities.js +16 -8
  222. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  223. package/dist/index.d.ts +2 -2
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js.map +1 -1
  226. package/dist/packageVersion.d.ts +1 -1
  227. package/dist/packageVersion.js +1 -1
  228. package/dist/packageVersion.js.map +1 -1
  229. package/dist/shared-tree/schematizingTreeView.d.ts +2 -3
  230. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  231. package/dist/shared-tree/schematizingTreeView.js +20 -9
  232. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  233. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  234. package/dist/shared-tree/sharedTree.js +61 -44
  235. package/dist/shared-tree/sharedTree.js.map +1 -1
  236. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  237. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  238. package/dist/shared-tree/sharedTreeChangeCodecs.js +9 -8
  239. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  240. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  241. package/dist/shared-tree/sharedTreeChangeEnricher.js +4 -2
  242. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  243. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
  244. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  245. package/dist/shared-tree/sharedTreeChangeFamily.js +19 -14
  246. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  247. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  248. package/dist/shared-tree/sharedTreeEditBuilder.js +1 -1
  249. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  250. package/dist/shared-tree/treeAlpha.d.ts +35 -29
  251. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  252. package/dist/shared-tree/treeAlpha.js +21 -23
  253. package/dist/shared-tree/treeAlpha.js.map +1 -1
  254. package/dist/shared-tree/treeCheckout.d.ts +2 -0
  255. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  256. package/dist/shared-tree/treeCheckout.js +31 -18
  257. package/dist/shared-tree/treeCheckout.js.map +1 -1
  258. package/dist/shared-tree-core/branch.d.ts +3 -1
  259. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  260. package/dist/shared-tree-core/branch.js +5 -3
  261. package/dist/shared-tree-core/branch.js.map +1 -1
  262. package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  263. package/dist/shared-tree-core/branchCommitEnricher.js +1 -1
  264. package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
  265. package/dist/shared-tree-core/editManager.js +1 -1
  266. package/dist/shared-tree-core/editManager.js.map +1 -1
  267. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  268. package/dist/shared-tree-core/editManagerCodecs.js +9 -4
  269. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  270. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  271. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  272. package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
  273. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  274. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  275. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  276. package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  277. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  278. package/dist/shared-tree-core/editManagerSummarizer.js +3 -3
  279. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  280. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  281. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  282. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  283. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  284. package/dist/shared-tree-core/messageCodecVSharedBranches.js +2 -1
  285. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  286. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  287. package/dist/shared-tree-core/messageCodecs.js +8 -4
  288. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  289. package/dist/shared-tree-core/messageFormat.d.ts +1 -0
  290. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  291. package/dist/shared-tree-core/messageFormat.js +6 -0
  292. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  293. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
  294. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  295. package/dist/shared-tree-core/messageFormatV1ToV4.js +8 -1
  296. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  297. package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  298. package/dist/shared-tree-core/sequenceIdUtils.js +4 -4
  299. package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
  300. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  301. package/dist/shared-tree-core/sharedTreeCore.js +12 -8
  302. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  303. package/dist/shared-tree-core/transaction.d.ts +25 -8
  304. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  305. package/dist/shared-tree-core/transaction.js +65 -30
  306. package/dist/shared-tree-core/transaction.js.map +1 -1
  307. package/dist/shared-tree-core/transactionEnricher.d.ts +2 -2
  308. package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
  309. package/dist/shared-tree-core/transactionEnricher.js +3 -3
  310. package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
  311. package/dist/simple-tree/api/configuration.js +1 -1
  312. package/dist/simple-tree/api/configuration.js.map +1 -1
  313. package/dist/simple-tree/api/customTree.d.ts.map +1 -1
  314. package/dist/simple-tree/api/customTree.js +13 -9
  315. package/dist/simple-tree/api/customTree.js.map +1 -1
  316. package/dist/simple-tree/api/discrepancies.d.ts.map +1 -1
  317. package/dist/simple-tree/api/discrepancies.js +21 -17
  318. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  319. package/dist/simple-tree/api/index.d.ts +1 -1
  320. package/dist/simple-tree/api/index.d.ts.map +1 -1
  321. package/dist/simple-tree/api/index.js.map +1 -1
  322. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  323. package/dist/simple-tree/api/schemaFactory.js +12 -8
  324. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  325. package/dist/simple-tree/api/schemaFromSimple.js +18 -9
  326. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  327. package/dist/simple-tree/api/simpleSchemaCodec.js +10 -5
  328. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  329. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  330. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
  331. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  332. package/dist/simple-tree/api/simpleTreeIndex.js +10 -10
  333. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  334. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  335. package/dist/simple-tree/api/storedSchema.js +2 -3
  336. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  337. package/dist/simple-tree/api/transactionTypes.d.ts +17 -4
  338. package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
  339. package/dist/simple-tree/api/transactionTypes.js.map +1 -1
  340. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  341. package/dist/simple-tree/api/treeNodeApi.js +21 -13
  342. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  343. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  344. package/dist/simple-tree/api/verboseTree.js +14 -9
  345. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  346. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  347. package/dist/simple-tree/core/treeNodeKernel.js +6 -3
  348. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  349. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  350. package/dist/simple-tree/core/unhydratedFlexTree.js +20 -15
  351. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  352. package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
  353. package/dist/simple-tree/getTreeNodeForField.js +2 -1
  354. package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
  355. package/dist/simple-tree/index.d.ts +1 -1
  356. package/dist/simple-tree/index.d.ts.map +1 -1
  357. package/dist/simple-tree/index.js.map +1 -1
  358. package/dist/simple-tree/leafNodeSchema.js +9 -6
  359. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  360. package/dist/simple-tree/node-kinds/array/arrayNode.js +15 -15
  361. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  362. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  363. package/dist/simple-tree/node-kinds/object/objectNode.js +4 -5
  364. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  365. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  366. package/dist/simple-tree/node-kinds/record/recordNode.js +2 -3
  367. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  368. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  369. package/dist/simple-tree/toStoredSchema.js +9 -5
  370. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  371. package/dist/treeFactory.js +7 -3
  372. package/dist/treeFactory.js.map +1 -1
  373. package/dist/util/bTreeUtils.js +1 -1
  374. package/dist/util/bTreeUtils.js.map +1 -1
  375. package/dist/util/breakable.js +7 -9
  376. package/dist/util/breakable.js.map +1 -1
  377. package/dist/util/idAllocator.d.ts.map +1 -1
  378. package/dist/util/idAllocator.js +1 -2
  379. package/dist/util/idAllocator.js.map +1 -1
  380. package/dist/util/nestedMap.d.ts.map +1 -1
  381. package/dist/util/nestedMap.js +1 -1
  382. package/dist/util/nestedMap.js.map +1 -1
  383. package/dist/util/utils.d.ts.map +1 -1
  384. package/dist/util/utils.js +16 -15
  385. package/dist/util/utils.js.map +1 -1
  386. package/eslint.config.mts +1 -16
  387. package/lib/alpha.d.ts +4 -0
  388. package/lib/codec/codec.d.ts +31 -3
  389. package/lib/codec/codec.d.ts.map +1 -1
  390. package/lib/codec/codec.js +10 -0
  391. package/lib/codec/codec.js.map +1 -1
  392. package/lib/codec/index.d.ts +2 -2
  393. package/lib/codec/index.d.ts.map +1 -1
  394. package/lib/codec/index.js +1 -1
  395. package/lib/codec/index.js.map +1 -1
  396. package/lib/codec/versioned/codec.d.ts +80 -22
  397. package/lib/codec/versioned/codec.d.ts.map +1 -1
  398. package/lib/codec/versioned/codec.js +138 -15
  399. package/lib/codec/versioned/codec.js.map +1 -1
  400. package/lib/codec/versioned/index.d.ts +1 -1
  401. package/lib/codec/versioned/index.d.ts.map +1 -1
  402. package/lib/codec/versioned/index.js +1 -1
  403. package/lib/codec/versioned/index.js.map +1 -1
  404. package/lib/core/index.d.ts +2 -2
  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 +36 -2
  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 +2 -2
  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 +6 -2
  416. package/lib/core/rebase/types.d.ts.map +1 -1
  417. package/lib/core/rebase/types.js +0 -10
  418. package/lib/core/rebase/types.js.map +1 -1
  419. package/lib/core/rebase/utils.js +3 -3
  420. package/lib/core/rebase/utils.js.map +1 -1
  421. package/lib/core/schema-stored/schema.js +3 -3
  422. package/lib/core/schema-stored/schema.js.map +1 -1
  423. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  424. package/lib/core/tree/anchorSet.js +3 -4
  425. package/lib/core/tree/anchorSet.js.map +1 -1
  426. package/lib/core/tree/detachedFieldIndex.d.ts +1 -2
  427. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  428. package/lib/core/tree/detachedFieldIndex.js +13 -57
  429. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  430. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
  431. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  432. package/lib/core/tree/detachedFieldIndexCodecCommon.js +4 -4
  433. package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  434. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
  435. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  436. package/lib/core/tree/detachedFieldIndexCodecV1.js +4 -5
  437. package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  438. package/lib/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
  439. package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  440. package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -6
  441. package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  442. package/lib/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
  443. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  444. package/lib/core/tree/detachedFieldIndexCodecs.js +12 -39
  445. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  446. package/lib/core/tree/index.d.ts +1 -1
  447. package/lib/core/tree/index.d.ts.map +1 -1
  448. package/lib/core/tree/index.js +1 -1
  449. package/lib/core/tree/index.js.map +1 -1
  450. package/lib/core/tree/mapTree.js +1 -1
  451. package/lib/core/tree/mapTree.js.map +1 -1
  452. package/lib/core/tree/sparseTree.d.ts.map +1 -1
  453. package/lib/core/tree/sparseTree.js +1 -0
  454. package/lib/core/tree/sparseTree.js.map +1 -1
  455. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  456. package/lib/core/tree/treeTextFormat.js +5 -9
  457. package/lib/core/tree/treeTextFormat.js.map +1 -1
  458. package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -0
  459. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
  460. package/lib/feature-libraries/changeAtomIdBTree.js +11 -0
  461. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -0
  462. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
  463. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  464. package/lib/feature-libraries/chunked-forest/chunkedForest.js +6 -6
  465. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  466. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  467. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
  468. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  469. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  470. package/lib/feature-libraries/chunked-forest/codec/codecs.js +19 -11
  471. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  472. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
  473. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  474. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
  475. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  476. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  477. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  478. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
  479. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  480. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
  481. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  482. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  483. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  484. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
  485. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  486. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
  487. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  488. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
  489. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  490. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  491. package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
  492. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  493. package/lib/feature-libraries/index.d.ts +3 -2
  494. package/lib/feature-libraries/index.d.ts.map +1 -1
  495. package/lib/feature-libraries/index.js +3 -2
  496. package/lib/feature-libraries/index.js.map +1 -1
  497. package/lib/feature-libraries/indexing/anchorTreeIndex.js +6 -6
  498. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  499. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  500. package/lib/feature-libraries/mitigatedChangeFamily.js +10 -1
  501. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  502. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  503. package/lib/feature-libraries/modular-schema/comparison.js +12 -9
  504. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  505. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
  506. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
  507. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +55 -0
  508. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
  509. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
  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 +5 -5
  514. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  515. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +1 -1
  516. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  517. package/lib/feature-libraries/modular-schema/index.d.ts +4 -2
  518. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  519. package/lib/feature-libraries/modular-schema/index.js +3 -1
  520. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  521. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
  522. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
  523. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +298 -0
  524. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
  525. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
  526. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
  527. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +27 -0
  528. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
  529. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  530. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  531. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +27 -290
  532. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  533. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
  534. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  535. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +118 -88
  536. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  537. package/lib/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
  538. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
  539. package/lib/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +4 -4
  540. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
  541. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
  542. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
  543. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +18 -0
  544. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
  545. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
  546. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  547. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  548. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
  549. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  550. package/lib/feature-libraries/object-forest/objectForest.js +4 -4
  551. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  552. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  553. package/lib/feature-libraries/optional-field/optionalField.js +35 -40
  554. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  555. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  556. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +15 -3
  557. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  558. package/lib/feature-libraries/schema-index/codec.d.ts +7 -21
  559. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  560. package/lib/feature-libraries/schema-index/codec.js +30 -68
  561. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  562. package/lib/feature-libraries/schema-index/index.d.ts +2 -2
  563. package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
  564. package/lib/feature-libraries/schema-index/index.js +2 -2
  565. package/lib/feature-libraries/schema-index/index.js.map +1 -1
  566. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
  567. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  568. package/lib/feature-libraries/schema-index/schemaSummarizer.js +0 -10
  569. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  570. package/lib/feature-libraries/schemaChecker.d.ts.map +1 -1
  571. package/lib/feature-libraries/schemaChecker.js +11 -6
  572. package/lib/feature-libraries/schemaChecker.js.map +1 -1
  573. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  574. package/lib/feature-libraries/sequence-field/compose.js +17 -13
  575. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  576. package/lib/feature-libraries/sequence-field/invert.js +5 -4
  577. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  578. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  579. package/lib/feature-libraries/sequence-field/moveEffectTable.js +15 -9
  580. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  581. package/lib/feature-libraries/sequence-field/rebase.js +26 -18
  582. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  583. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
  584. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  585. package/lib/feature-libraries/sequence-field/replaceRevisions.js +41 -36
  586. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  587. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  588. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
  589. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  590. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  591. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +4 -2
  592. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  593. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  594. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
  595. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  596. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  597. package/lib/feature-libraries/sequence-field/utils.js +46 -27
  598. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  599. package/lib/feature-libraries/treeCursorUtils.js +7 -7
  600. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  601. package/lib/feature-libraries/treeTextCursor.js +2 -2
  602. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  603. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  604. package/lib/feature-libraries/valueUtilities.js +16 -8
  605. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  606. package/lib/index.d.ts +2 -2
  607. package/lib/index.d.ts.map +1 -1
  608. package/lib/index.js.map +1 -1
  609. package/lib/packageVersion.d.ts +1 -1
  610. package/lib/packageVersion.js +1 -1
  611. package/lib/packageVersion.js.map +1 -1
  612. package/lib/shared-tree/schematizingTreeView.d.ts +2 -3
  613. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  614. package/lib/shared-tree/schematizingTreeView.js +20 -9
  615. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  616. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  617. package/lib/shared-tree/sharedTree.js +30 -13
  618. package/lib/shared-tree/sharedTree.js.map +1 -1
  619. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  620. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  621. package/lib/shared-tree/sharedTreeChangeCodecs.js +9 -8
  622. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  623. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  624. package/lib/shared-tree/sharedTreeChangeEnricher.js +4 -2
  625. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  626. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
  627. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  628. package/lib/shared-tree/sharedTreeChangeFamily.js +19 -14
  629. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  630. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  631. package/lib/shared-tree/sharedTreeEditBuilder.js +1 -1
  632. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  633. package/lib/shared-tree/treeAlpha.d.ts +35 -29
  634. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  635. package/lib/shared-tree/treeAlpha.js +21 -23
  636. package/lib/shared-tree/treeAlpha.js.map +1 -1
  637. package/lib/shared-tree/treeCheckout.d.ts +2 -0
  638. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  639. package/lib/shared-tree/treeCheckout.js +32 -19
  640. package/lib/shared-tree/treeCheckout.js.map +1 -1
  641. package/lib/shared-tree-core/branch.d.ts +3 -1
  642. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  643. package/lib/shared-tree-core/branch.js +5 -3
  644. package/lib/shared-tree-core/branch.js.map +1 -1
  645. package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
  646. package/lib/shared-tree-core/branchCommitEnricher.js +2 -2
  647. package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
  648. package/lib/shared-tree-core/editManager.js +1 -1
  649. package/lib/shared-tree-core/editManager.js.map +1 -1
  650. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  651. package/lib/shared-tree-core/editManagerCodecs.js +9 -4
  652. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  653. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  654. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  655. package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
  656. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  657. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  658. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  659. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  660. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  661. package/lib/shared-tree-core/editManagerSummarizer.js +3 -3
  662. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  663. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  664. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  665. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  666. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  667. package/lib/shared-tree-core/messageCodecVSharedBranches.js +2 -1
  668. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  669. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  670. package/lib/shared-tree-core/messageCodecs.js +8 -4
  671. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  672. package/lib/shared-tree-core/messageFormat.d.ts +1 -0
  673. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  674. package/lib/shared-tree-core/messageFormat.js +6 -0
  675. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  676. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
  677. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  678. package/lib/shared-tree-core/messageFormatV1ToV4.js +8 -1
  679. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  680. package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  681. package/lib/shared-tree-core/sequenceIdUtils.js +4 -4
  682. package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
  683. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  684. package/lib/shared-tree-core/sharedTreeCore.js +12 -8
  685. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  686. package/lib/shared-tree-core/transaction.d.ts +25 -8
  687. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  688. package/lib/shared-tree-core/transaction.js +67 -32
  689. package/lib/shared-tree-core/transaction.js.map +1 -1
  690. package/lib/shared-tree-core/transactionEnricher.d.ts +2 -2
  691. package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
  692. package/lib/shared-tree-core/transactionEnricher.js +3 -3
  693. package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
  694. package/lib/simple-tree/api/configuration.js +1 -1
  695. package/lib/simple-tree/api/configuration.js.map +1 -1
  696. package/lib/simple-tree/api/customTree.d.ts.map +1 -1
  697. package/lib/simple-tree/api/customTree.js +13 -9
  698. package/lib/simple-tree/api/customTree.js.map +1 -1
  699. package/lib/simple-tree/api/discrepancies.d.ts.map +1 -1
  700. package/lib/simple-tree/api/discrepancies.js +21 -17
  701. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  702. package/lib/simple-tree/api/index.d.ts +1 -1
  703. package/lib/simple-tree/api/index.d.ts.map +1 -1
  704. package/lib/simple-tree/api/index.js.map +1 -1
  705. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  706. package/lib/simple-tree/api/schemaFactory.js +12 -8
  707. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  708. package/lib/simple-tree/api/schemaFromSimple.js +18 -9
  709. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  710. package/lib/simple-tree/api/simpleSchemaCodec.js +10 -5
  711. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  712. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  713. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
  714. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  715. package/lib/simple-tree/api/simpleTreeIndex.js +10 -10
  716. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  717. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  718. package/lib/simple-tree/api/storedSchema.js +4 -7
  719. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  720. package/lib/simple-tree/api/transactionTypes.d.ts +17 -4
  721. package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
  722. package/lib/simple-tree/api/transactionTypes.js.map +1 -1
  723. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  724. package/lib/simple-tree/api/treeNodeApi.js +21 -13
  725. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  726. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  727. package/lib/simple-tree/api/verboseTree.js +14 -9
  728. package/lib/simple-tree/api/verboseTree.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 -3
  731. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  732. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  733. package/lib/simple-tree/core/unhydratedFlexTree.js +20 -15
  734. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  735. package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
  736. package/lib/simple-tree/getTreeNodeForField.js +2 -1
  737. package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
  738. package/lib/simple-tree/index.d.ts +1 -1
  739. package/lib/simple-tree/index.d.ts.map +1 -1
  740. package/lib/simple-tree/index.js.map +1 -1
  741. package/lib/simple-tree/leafNodeSchema.js +9 -6
  742. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  743. package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -15
  744. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  745. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  746. package/lib/simple-tree/node-kinds/object/objectNode.js +4 -5
  747. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  748. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  749. package/lib/simple-tree/node-kinds/record/recordNode.js +2 -3
  750. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  751. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  752. package/lib/simple-tree/toStoredSchema.js +9 -5
  753. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  754. package/lib/treeFactory.js +7 -3
  755. package/lib/treeFactory.js.map +1 -1
  756. package/lib/util/bTreeUtils.js +1 -1
  757. package/lib/util/bTreeUtils.js.map +1 -1
  758. package/lib/util/breakable.js +7 -9
  759. package/lib/util/breakable.js.map +1 -1
  760. package/lib/util/idAllocator.d.ts.map +1 -1
  761. package/lib/util/idAllocator.js +1 -2
  762. package/lib/util/idAllocator.js.map +1 -1
  763. package/lib/util/nestedMap.d.ts.map +1 -1
  764. package/lib/util/nestedMap.js +1 -1
  765. package/lib/util/nestedMap.js.map +1 -1
  766. package/lib/util/utils.d.ts.map +1 -1
  767. package/lib/util/utils.js +16 -15
  768. package/lib/util/utils.js.map +1 -1
  769. package/package.json +32 -32
  770. package/src/codec/codec.ts +48 -8
  771. package/src/codec/index.ts +4 -1
  772. package/src/codec/versioned/codec.ts +340 -22
  773. package/src/codec/versioned/index.ts +3 -1
  774. package/src/core/index.ts +2 -2
  775. package/src/core/rebase/changeRebaser.ts +40 -6
  776. package/src/core/rebase/index.ts +1 -1
  777. package/src/core/rebase/types.ts +6 -18
  778. package/src/core/rebase/utils.ts +3 -3
  779. package/src/core/schema-stored/schema.ts +3 -3
  780. package/src/core/tree/anchorSet.ts +3 -4
  781. package/src/core/tree/detachedFieldIndex.ts +13 -74
  782. package/src/core/tree/detachedFieldIndexCodecCommon.ts +4 -8
  783. package/src/core/tree/detachedFieldIndexCodecV1.ts +3 -7
  784. package/src/core/tree/detachedFieldIndexCodecV2.ts +5 -9
  785. package/src/core/tree/detachedFieldIndexCodecs.ts +21 -64
  786. package/src/core/tree/index.ts +1 -1
  787. package/src/core/tree/mapTree.ts +1 -1
  788. package/src/core/tree/sparseTree.ts +1 -0
  789. package/src/core/tree/treeTextFormat.ts +5 -9
  790. package/src/feature-libraries/changeAtomIdBTree.ts +24 -0
  791. package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
  792. package/src/feature-libraries/chunked-forest/chunkedForest.ts +5 -5
  793. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +7 -4
  794. package/src/feature-libraries/chunked-forest/codec/codecs.ts +19 -11
  795. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +3 -3
  796. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +9 -5
  797. package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
  798. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +48 -17
  799. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +12 -2
  800. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +6 -0
  801. package/src/feature-libraries/flex-tree/lazyField.ts +13 -14
  802. package/src/feature-libraries/index.ts +10 -5
  803. package/src/feature-libraries/indexing/anchorTreeIndex.ts +5 -5
  804. package/src/feature-libraries/mitigatedChangeFamily.ts +11 -6
  805. package/src/feature-libraries/modular-schema/comparison.ts +12 -9
  806. package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +70 -0
  807. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +3 -6
  808. package/src/feature-libraries/modular-schema/genericFieldKind.ts +5 -7
  809. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +1 -1
  810. package/src/feature-libraries/modular-schema/index.ts +5 -2
  811. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +703 -0
  812. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +89 -0
  813. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +39 -523
  814. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +159 -125
  815. package/src/feature-libraries/modular-schema/{modularChangeFormat.ts → modularChangeFormatV1.ts} +4 -4
  816. package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +34 -0
  817. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +13 -4
  818. package/src/feature-libraries/node-identifier/mockNodeIdentifierManager.ts +1 -1
  819. package/src/feature-libraries/object-forest/objectForest.ts +4 -4
  820. package/src/feature-libraries/optional-field/optionalField.ts +34 -46
  821. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +18 -3
  822. package/src/feature-libraries/schema-index/codec.ts +30 -90
  823. package/src/feature-libraries/schema-index/index.ts +2 -4
  824. package/src/feature-libraries/schema-index/schemaSummarizer.ts +0 -17
  825. package/src/feature-libraries/schemaChecker.ts +11 -6
  826. package/src/feature-libraries/sequence-field/compose.ts +17 -13
  827. package/src/feature-libraries/sequence-field/invert.ts +5 -4
  828. package/src/feature-libraries/sequence-field/moveEffectTable.ts +15 -9
  829. package/src/feature-libraries/sequence-field/rebase.ts +26 -18
  830. package/src/feature-libraries/sequence-field/replaceRevisions.ts +52 -56
  831. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +16 -8
  832. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
  833. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +6 -3
  834. package/src/feature-libraries/sequence-field/utils.ts +46 -27
  835. package/src/feature-libraries/treeCursorUtils.ts +7 -7
  836. package/src/feature-libraries/treeTextCursor.ts +2 -2
  837. package/src/feature-libraries/valueUtilities.ts +16 -8
  838. package/src/index.ts +4 -0
  839. package/src/packageVersion.ts +1 -1
  840. package/src/shared-tree/schematizingTreeView.ts +23 -13
  841. package/src/shared-tree/sharedTree.ts +30 -14
  842. package/src/shared-tree/sharedTreeChangeCodecs.ts +10 -9
  843. package/src/shared-tree/sharedTreeChangeEnricher.ts +4 -2
  844. package/src/shared-tree/sharedTreeChangeFamily.ts +29 -19
  845. package/src/shared-tree/sharedTreeEditBuilder.ts +9 -5
  846. package/src/shared-tree/treeAlpha.ts +60 -51
  847. package/src/shared-tree/treeCheckout.ts +66 -50
  848. package/src/shared-tree-core/branch.ts +8 -3
  849. package/src/shared-tree-core/branchCommitEnricher.ts +3 -8
  850. package/src/shared-tree-core/editManager.ts +1 -1
  851. package/src/shared-tree-core/editManagerCodecs.ts +9 -4
  852. package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
  853. package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
  854. package/src/shared-tree-core/editManagerSummarizer.ts +3 -3
  855. package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
  856. package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -1
  857. package/src/shared-tree-core/messageCodecs.ts +8 -4
  858. package/src/shared-tree-core/messageFormat.ts +6 -1
  859. package/src/shared-tree-core/messageFormatV1ToV4.ts +16 -2
  860. package/src/shared-tree-core/sequenceIdUtils.ts +4 -4
  861. package/src/shared-tree-core/sharedTreeCore.ts +11 -7
  862. package/src/shared-tree-core/transaction.ts +115 -56
  863. package/src/shared-tree-core/transactionEnricher.ts +5 -6
  864. package/src/simple-tree/api/configuration.ts +1 -1
  865. package/src/simple-tree/api/customTree.ts +14 -10
  866. package/src/simple-tree/api/discrepancies.ts +23 -17
  867. package/src/simple-tree/api/index.ts +2 -0
  868. package/src/simple-tree/api/schemaFactory.ts +11 -7
  869. package/src/simple-tree/api/schemaFromSimple.ts +18 -9
  870. package/src/simple-tree/api/simpleSchemaCodec.ts +10 -5
  871. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -13
  872. package/src/simple-tree/api/simpleTreeIndex.ts +8 -8
  873. package/src/simple-tree/api/storedSchema.ts +10 -7
  874. package/src/simple-tree/api/transactionTypes.ts +19 -4
  875. package/src/simple-tree/api/treeNodeApi.ts +21 -13
  876. package/src/simple-tree/api/verboseTree.ts +14 -9
  877. package/src/simple-tree/core/treeNodeKernel.ts +6 -3
  878. package/src/simple-tree/core/unhydratedFlexTree.ts +22 -17
  879. package/src/simple-tree/getTreeNodeForField.ts +2 -1
  880. package/src/simple-tree/index.ts +2 -0
  881. package/src/simple-tree/leafNodeSchema.ts +8 -5
  882. package/src/simple-tree/node-kinds/array/arrayNode.ts +23 -23
  883. package/src/simple-tree/node-kinds/object/objectNode.ts +4 -5
  884. package/src/simple-tree/node-kinds/record/recordNode.ts +2 -3
  885. package/src/simple-tree/toStoredSchema.ts +9 -5
  886. package/src/treeFactory.ts +10 -5
  887. package/src/util/bTreeUtils.ts +1 -1
  888. package/src/util/breakable.ts +9 -9
  889. package/src/util/idAllocator.ts +1 -2
  890. package/src/util/nestedMap.ts +1 -3
  891. package/src/util/utils.ts +14 -13
  892. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
  893. package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
  894. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
  895. package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
@@ -2,21 +2,23 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { ICodecFamily } from "../../codec/index.js";
6
- import { type ChangeEncodingContext, type ChangeFamily, type ChangeFamilyEditor, type ChangeRebaser, type ChangesetLocalId, type DeltaDetachedNodeId, type DeltaRoot, EditBuilder, type FieldKindIdentifier, type FieldUpPath, type RevisionInfo, type RevisionMetadataSource, type RevisionTag, type TaggedChange, type UpPath } from "../../core/index.js";
5
+ import { type CodecWriteOptions, type ICodecFamily } from "../../codec/index.js";
6
+ import { type ChangeEncodingContext, type ChangeFamily, type ChangeFamilyEditor, type ChangeRebaser, type ChangesetLocalId, type DeltaDetachedNodeId, type DeltaRoot, EditBuilder, type FieldKindIdentifier, type FieldUpPath, type RevisionInfo, type RevisionMetadataSource, type RevisionTag, type TaggedChange, type UpPath, type RevisionReplacer } from "../../core/index.js";
7
7
  import type { TreeChunk } from "../chunked-forest/index.js";
8
8
  import { type FieldChangeHandler, type RebaseRevisionMetadata } from "./fieldChangeHandler.js";
9
- import { type ChangeAtomIdBTree, type FieldChangeset, type FieldId, type ModularChangeset, type NodeId } from "./modularChangeTypes.js";
9
+ import { type FieldChangeset, type FieldId, type ModularChangeset, type NodeId } from "./modularChangeTypes.js";
10
10
  import type { FlexFieldKind } from "./fieldKind.js";
11
+ import { type ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
11
12
  /**
12
13
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
13
14
  * as determined by the schema.
14
15
  */
15
16
  export declare class ModularChangeFamily implements ChangeFamily<ModularEditBuilder, ModularChangeset>, ChangeRebaser<ModularChangeset> {
16
17
  readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>;
18
+ readonly codecOptions: CodecWriteOptions;
17
19
  static readonly emptyChange: ModularChangeset;
18
20
  readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>;
19
- constructor(fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>, codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>);
21
+ constructor(fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>, codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>, codecOptions: CodecWriteOptions);
20
22
  get rebaser(): ChangeRebaser<ModularChangeset>;
21
23
  /**
22
24
  * Produces an equivalent list of `FieldChangeset`s that all target the same {@link FlexFieldKind}.
@@ -73,8 +75,8 @@ export declare class ModularChangeFamily implements ChangeFamily<ModularEditBuil
73
75
  /**
74
76
  * @param change - The change to invert.
75
77
  * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
76
- * @param revisionForInvert - The revision for the invert changeset.
77
78
  * performing a sandwich rebase.
79
+ * @param revisionForInvert - The revision for the invert changeset.
78
80
  */
79
81
  invert(change: TaggedChange<ModularChangeset>, isRollback: boolean, revisionForInvert: RevisionTag): ModularChangeset;
80
82
  private invertFieldMap;
@@ -94,12 +96,13 @@ export declare class ModularChangeFamily implements ChangeFamily<ModularEditBuil
94
96
  private updateConstraintsForNode;
95
97
  private pruneFieldMap;
96
98
  private pruneNodeChange;
97
- changeRevision(change: ModularChangeset, newRevision: RevisionTag | undefined, rollbackOf?: RevisionTag): ModularChangeset;
99
+ getRevisions(change: ModularChangeset): Set<RevisionTag | undefined>;
100
+ changeRevision(change: ModularChangeset, replacer: RevisionReplacer): ModularChangeset;
98
101
  private replaceNodeChangesetRevisions;
99
102
  private replaceFieldMapRevisions;
100
103
  private makeCrossFieldKeyTable;
101
104
  private populateCrossFieldKeyTableForFieldMap;
102
- buildEditor(changeReceiver: (change: TaggedChange<ModularChangeset>) => void): ModularEditBuilder;
105
+ buildEditor(mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<ModularChangeset>) => void): ModularEditBuilder;
103
106
  private createEmptyFieldChange;
104
107
  validateChangeset(change: ModularChangeset): void;
105
108
  /**
@@ -171,7 +174,8 @@ export declare class ModularEditBuilder extends EditBuilder<ModularChangeset> {
171
174
  private readonly fieldKinds;
172
175
  private transactionDepth;
173
176
  private idAllocator;
174
- constructor(family: ChangeFamily<ChangeFamilyEditor, ModularChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>, changeReceiver: (change: TaggedChange<ModularChangeset>) => void);
177
+ private readonly codecOptions;
178
+ constructor(family: ChangeFamily<ChangeFamilyEditor, ModularChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>, changeReceiver: (change: TaggedChange<ModularChangeset>) => void, codecOptions: CodecWriteOptions);
175
179
  enterTransaction(): void;
176
180
  exitTransaction(): void;
177
181
  /**
@@ -197,6 +201,8 @@ export declare class ModularEditBuilder extends EditBuilder<ModularChangeset> {
197
201
  generateId(count?: number): ChangesetLocalId;
198
202
  addNodeExistsConstraint(path: UpPath, revision: RevisionTag): void;
199
203
  addNodeExistsConstraintOnRevert(path: UpPath, revision: RevisionTag): void;
204
+ addNoChangeConstraint(revision: RevisionTag): void;
205
+ addNoChangeConstraintOnRevert(revision: RevisionTag): void;
200
206
  }
201
207
  export interface FieldEditDescription {
202
208
  type: "field";
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFamily.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modularChangeFamily.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.ts"],"names":[],"mappings":"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"}
@@ -4,19 +4,24 @@
4
4
  */
5
5
  import { assert, fail } from "@fluidframework/core-utils/internal";
6
6
  import { BTree } from "@tylerbu/sorted-btree-es6";
7
- import { EditBuilder, makeDetachedNodeId, replaceAtomRevisions, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, areEqualChangeAtomIdOpts, tagChange, makeAnonChange, newChangeAtomIdRangeMap, mapTaggedChange, } from "../../core/index.js";
7
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
+ import { FluidClientVersion, } from "../../codec/index.js";
9
+ import { EditBuilder, makeDetachedNodeId, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, areEqualChangeAtomIdOpts, tagChange, makeAnonChange, newChangeAtomIdRangeMap, mapTaggedChange, } from "../../core/index.js";
8
10
  import { brand, idAllocatorFromMaxId, idAllocatorFromState, getOrCreate, newTupleBTree, mergeTupleBTrees, RangeMap, balancedReduce, } from "../../util/index.js";
9
11
  import { CrossFieldTarget, getFirstFromCrossFieldMap, setInCrossFieldMap, } from "./crossFieldQueries.js";
10
12
  import { NodeAttachState, } from "./fieldChangeHandler.js";
11
13
  import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
12
14
  import { newCrossFieldKeyTable, } from "./modularChangeTypes.js";
15
+ import { getFromChangeAtomIdMap, setInChangeAtomIdMap, } from "../changeAtomIdBTree.js";
16
+ import { lt } from "semver-ts";
13
17
  /**
14
18
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
15
19
  * as determined by the schema.
16
20
  */
17
21
  export class ModularChangeFamily {
18
- constructor(fieldKinds, codecs) {
22
+ constructor(fieldKinds, codecs, codecOptions) {
19
23
  this.codecs = codecs;
24
+ this.codecOptions = codecOptions;
20
25
  this.fieldKinds = fieldKinds;
21
26
  }
22
27
  get rebaser() {
@@ -31,9 +36,9 @@ export class ModularChangeFamily {
31
36
  */
32
37
  normalizeFieldChanges(change1, change2) {
33
38
  // TODO: Handle the case where changes have conflicting field kinds
34
- const kind = change1.fieldKind !== genericFieldKind.identifier
35
- ? change1.fieldKind
36
- : change2.fieldKind;
39
+ const kind = change1.fieldKind === genericFieldKind.identifier
40
+ ? change2.fieldKind
41
+ : change1.fieldKind;
37
42
  if (kind === genericFieldKind.identifier) {
38
43
  // Both changes are generic
39
44
  return {
@@ -75,6 +80,9 @@ export class ModularChangeFamily {
75
80
  composePair(change1, change2, revInfos, idState) {
76
81
  const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } = this.composeAllFields(change1, change2, revInfos, idState);
77
82
  const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(change1, change2);
83
+ // The composed changeset has a "no change" constraint if either change has one
84
+ const noChangeConstraint = change1.noChangeConstraint ?? change2.noChangeConstraint;
85
+ const noChangeConstraintOnRevert = change1.noChangeConstraintOnRevert ?? change2.noChangeConstraintOnRevert;
78
86
  return makeModularChangeset({
79
87
  fieldChanges,
80
88
  nodeChanges,
@@ -83,6 +91,8 @@ export class ModularChangeFamily {
83
91
  crossFieldKeys,
84
92
  maxId: idState.maxId,
85
93
  revisions: revInfos,
94
+ noChangeConstraint,
95
+ noChangeConstraintOnRevert,
86
96
  builds: allBuilds,
87
97
  destroys: allDestroys,
88
98
  refreshers: allRefreshers,
@@ -222,9 +232,9 @@ export class ModularChangeFamily {
222
232
  for (const [field, fieldChange1] of change1) {
223
233
  const fieldId = { nodeId: parentId, field };
224
234
  const fieldChange2 = change2.get(field);
225
- const composedField = fieldChange2 !== undefined
226
- ? this.composeFieldChanges(fieldId, fieldChange1, fieldChange2, genId, crossFieldTable, revisionMetadata)
227
- : fieldChange1;
235
+ const composedField = fieldChange2 === undefined
236
+ ? fieldChange1
237
+ : this.composeFieldChanges(fieldId, fieldChange1, fieldChange2, genId, crossFieldTable, revisionMetadata);
228
238
  composedFields.set(field, composedField);
229
239
  }
230
240
  for (const [field, fieldChange2] of change2) {
@@ -311,8 +321,8 @@ export class ModularChangeFamily {
311
321
  /**
312
322
  * @param change - The change to invert.
313
323
  * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
314
- * @param revisionForInvert - The revision for the invert changeset.
315
324
  * performing a sandwich rebase.
325
+ * @param revisionForInvert - The revision for the invert changeset.
316
326
  */
317
327
  invert(change, isRollback, revisionForInvert) {
318
328
  // Rollback changesets destroy the nodes created by the change being rolled back.
@@ -322,6 +332,8 @@ export class ModularChangeFamily {
322
332
  const revInfos = isRollback
323
333
  ? [{ revision: revisionForInvert, rollbackOf: change.revision }]
324
334
  : [{ revision: revisionForInvert }];
335
+ const noChangeConstraint = change.change.noChangeConstraintOnRevert;
336
+ const noChangeConstraintOnRevert = change.change.noChangeConstraint;
325
337
  if (hasConflicts(change.change)) {
326
338
  return makeModularChangeset({
327
339
  maxId: change.change.maxId,
@@ -365,6 +377,8 @@ export class ModularChangeFamily {
365
377
  revisions: revInfos,
366
378
  constraintViolationCount: change.change.constraintViolationCountOnRevert,
367
379
  constraintViolationCountOnRevert: change.change.constraintViolationCount,
380
+ noChangeConstraint,
381
+ noChangeConstraintOnRevert,
368
382
  destroys,
369
383
  });
370
384
  }
@@ -438,6 +452,11 @@ export class ModularChangeFamily {
438
452
  this.rebaseInvalidatedElements(rebasedFields, rebasedNodes, crossFieldTable, rebaseMetadata, genId);
439
453
  const constraintState = newConstraintState(change.constraintViolationCount ?? 0);
440
454
  const revertConstraintState = newConstraintState(change.constraintViolationCountOnRevert ?? 0);
455
+ let noChangeConstraint = change.noChangeConstraint;
456
+ if (noChangeConstraint !== undefined && !noChangeConstraint.violated) {
457
+ noChangeConstraint = { violated: true };
458
+ constraintState.violationCount += 1;
459
+ }
441
460
  this.updateConstraintsForFields(rebasedFields, NodeAttachState.Attached, NodeAttachState.Attached, constraintState, revertConstraintState, rebasedNodes);
442
461
  const rebased = makeModularChangeset({
443
462
  fieldChanges: this.pruneFieldMap(rebasedFields, rebasedNodes),
@@ -449,6 +468,8 @@ export class ModularChangeFamily {
449
468
  revisions: change.revisions,
450
469
  constraintViolationCount: constraintState.violationCount,
451
470
  constraintViolationCountOnRevert: revertConstraintState.violationCount,
471
+ noChangeConstraint,
472
+ noChangeConstraintOnRevert: change.noChangeConstraintOnRevert,
452
473
  builds: change.builds,
453
474
  destroys: change.destroys,
454
475
  refreshers: change.refreshers,
@@ -473,9 +494,9 @@ export class ModularChangeFamily {
473
494
  rebaseFieldsWithoutNewChanges(rebasedFields, rebasedNodes, crossFieldTable, genId, metadata) {
474
495
  const baseChange = crossFieldTable.baseChange;
475
496
  for (const [revision, localId, fieldKey] of crossFieldTable.affectedBaseFields.keys()) {
476
- const baseNodeId = localId !== undefined
477
- ? normalizeNodeId({ revision, localId }, baseChange.nodeAliases)
478
- : undefined;
497
+ const baseNodeId = localId === undefined
498
+ ? undefined
499
+ : normalizeNodeId({ revision, localId }, baseChange.nodeAliases);
479
500
  const baseFieldChange = fieldMapFromNodeId(baseChange.fieldChanges, baseChange.nodeChanges, baseNodeId).get(fieldKey);
480
501
  assert(baseFieldChange !== undefined, 0x9c2 /* Cross field key registered for empty field */);
481
502
  if (crossFieldTable.baseFieldToContext.has(baseFieldChange)) {
@@ -493,9 +514,9 @@ export class ModularChangeFamily {
493
514
  ...baseFieldChange,
494
515
  change: brand(handler.createEmpty()),
495
516
  };
496
- const rebasedNodeId = baseNodeId !== undefined
497
- ? rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId)
498
- : undefined;
517
+ const rebasedNodeId = baseNodeId === undefined
518
+ ? undefined
519
+ : rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId);
499
520
  const fieldId = { nodeId: rebasedNodeId, field: fieldKey };
500
521
  const rebasedField = handler.rebaser.rebase(fieldChange.change, baseFieldChange.change, rebaseChild, genId, new RebaseManager(crossFieldTable, baseFieldChange, fieldId), metadata);
501
522
  const rebasedFieldChange = {
@@ -717,9 +738,9 @@ export class ModularChangeFamily {
717
738
  }
718
739
  pruneNodeChange(nodeId, nodeMap) {
719
740
  const changeset = nodeChangeFromId(nodeMap, nodeId);
720
- const prunedFields = changeset.fieldChanges !== undefined
721
- ? this.pruneFieldMap(changeset.fieldChanges, nodeMap)
722
- : undefined;
741
+ const prunedFields = changeset.fieldChanges === undefined
742
+ ? undefined
743
+ : this.pruneFieldMap(changeset.fieldChanges, nodeMap);
723
744
  const prunedChange = { ...changeset, fieldChanges: prunedFields };
724
745
  if (prunedChange.fieldChanges === undefined) {
725
746
  delete prunedChange.fieldChanges;
@@ -733,19 +754,17 @@ export class ModularChangeFamily {
733
754
  return nodeId;
734
755
  }
735
756
  }
736
- changeRevision(change, newRevision, rollbackOf) {
737
- const oldRevisions = new Set(change.revisions === undefined || change.revisions.length === 0
738
- ? [undefined]
739
- : change.revisions.map((revInfo) => revInfo.revision));
740
- const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, oldRevisions, newRevision);
741
- const updatedNodes = newTupleBTree();
742
- for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {
743
- updatedNodes.set([replaceRevision(revision, oldRevisions, newRevision), id], this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision));
744
- }
745
- const updatedNodeToParent = newTupleBTree();
746
- for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {
747
- updatedNodeToParent.set([replaceRevision(revision, oldRevisions, newRevision), id], replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), oldRevisions, newRevision));
757
+ getRevisions(change) {
758
+ const aggregated = new Set();
759
+ for (const revInfo of change.revisions ?? [{ revision: undefined }]) {
760
+ aggregated.add(revInfo.revision);
748
761
  }
762
+ return aggregated;
763
+ }
764
+ changeRevision(change, replacer) {
765
+ const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, replacer);
766
+ const updatedNodes = replaceIdMapRevisions(change.nodeChanges, replacer, (nodeChangeset) => this.replaceNodeChangesetRevisions(nodeChangeset, replacer));
767
+ const updatedNodeToParent = replaceIdMapRevisions(change.nodeToParent, replacer, (fieldId) => replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), replacer));
749
768
  const updated = {
750
769
  ...change,
751
770
  fieldChanges: updatedFields,
@@ -753,40 +772,31 @@ export class ModularChangeFamily {
753
772
  nodeToParent: updatedNodeToParent,
754
773
  // We've updated all references to old node IDs, so we no longer need an alias table.
755
774
  nodeAliases: newTupleBTree(),
756
- crossFieldKeys: replaceCrossFieldKeyTableRevisions(change.crossFieldKeys, oldRevisions, newRevision, change.nodeAliases),
775
+ crossFieldKeys: replaceCrossFieldKeyTableRevisions(change.crossFieldKeys, replacer, change.nodeAliases),
757
776
  };
758
777
  if (change.builds !== undefined) {
759
- updated.builds = replaceIdMapRevisions(change.builds, oldRevisions, newRevision);
778
+ updated.builds = replaceIdMapRevisions(change.builds, replacer);
760
779
  }
761
780
  if (change.destroys !== undefined) {
762
- updated.destroys = replaceIdMapRevisions(change.destroys, oldRevisions, newRevision);
781
+ updated.destroys = replaceIdMapRevisions(change.destroys, replacer);
763
782
  }
764
783
  if (change.refreshers !== undefined) {
765
- updated.refreshers = replaceIdMapRevisions(change.refreshers, oldRevisions, newRevision);
766
- }
767
- if (newRevision !== undefined) {
768
- const revInfo = { revision: newRevision };
769
- if (rollbackOf !== undefined) {
770
- revInfo.rollbackOf = rollbackOf;
771
- }
772
- updated.revisions = [revInfo];
773
- }
774
- else {
775
- delete updated.revisions;
784
+ updated.refreshers = replaceIdMapRevisions(change.refreshers, replacer);
776
785
  }
786
+ updated.revisions = [{ revision: replacer.updatedRevision }];
777
787
  return updated;
778
788
  }
779
- replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision) {
789
+ replaceNodeChangesetRevisions(nodeChangeset, replacer) {
780
790
  const updated = { ...nodeChangeset };
781
791
  if (nodeChangeset.fieldChanges !== undefined) {
782
- updated.fieldChanges = this.replaceFieldMapRevisions(nodeChangeset.fieldChanges, oldRevisions, newRevision);
792
+ updated.fieldChanges = this.replaceFieldMapRevisions(nodeChangeset.fieldChanges, replacer);
783
793
  }
784
794
  return updated;
785
795
  }
786
- replaceFieldMapRevisions(fields, oldRevisions, newRevision) {
796
+ replaceFieldMapRevisions(fields, replacer) {
787
797
  const updatedFields = new Map();
788
798
  for (const [field, fieldChange] of fields) {
789
- const updatedFieldChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.replaceRevisions(fieldChange.change, oldRevisions, newRevision);
799
+ const updatedFieldChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.replaceRevisions(fieldChange.change, replacer);
790
800
  updatedFields.set(field, { ...fieldChange, change: brand(updatedFieldChange) });
791
801
  }
792
802
  return updatedFields;
@@ -812,8 +822,8 @@ export class ModularChangeFamily {
812
822
  }
813
823
  }
814
824
  }
815
- buildEditor(changeReceiver) {
816
- return new ModularEditBuilder(this, this.fieldKinds, changeReceiver);
825
+ buildEditor(mintRevisionTag, changeReceiver) {
826
+ return new ModularEditBuilder(this, this.fieldKinds, changeReceiver, this.codecOptions);
817
827
  }
818
828
  createEmptyFieldChange(fieldKind) {
819
829
  const emptyChange = getChangeHandler(this.fieldKinds, fieldKind).createEmpty();
@@ -894,20 +904,16 @@ export class ModularChangeFamily {
894
904
  }
895
905
  }
896
906
  ModularChangeFamily.emptyChange = makeModularChangeset();
897
- function replaceCrossFieldKeyTableRevisions(table, oldRevisions, newRevision, nodeAliases) {
907
+ function replaceCrossFieldKeyTableRevisions(table, replacer, nodeAliases) {
898
908
  const updated = newCrossFieldKeyTable();
899
909
  for (const entry of table.entries()) {
900
910
  const key = entry.start;
901
- const updatedKey = {
902
- target: key.target,
903
- revision: replaceRevision(key.revision, oldRevisions, newRevision),
904
- localId: key.localId,
905
- };
911
+ const updatedKey = replacer.getUpdatedAtomId(key);
906
912
  const field = entry.value;
907
913
  const normalizedFieldId = normalizeFieldId(field, nodeAliases);
908
- const updatedNodeId = normalizedFieldId.nodeId !== undefined
909
- ? replaceAtomRevisions(normalizedFieldId.nodeId, oldRevisions, newRevision)
910
- : undefined;
914
+ const updatedNodeId = normalizedFieldId.nodeId === undefined
915
+ ? undefined
916
+ : replacer.getUpdatedAtomId(normalizedFieldId.nodeId);
911
917
  const updatedValue = {
912
918
  ...normalizedFieldId,
913
919
  nodeId: updatedNodeId,
@@ -916,13 +922,11 @@ function replaceCrossFieldKeyTableRevisions(table, oldRevisions, newRevision, no
916
922
  }
917
923
  return updated;
918
924
  }
919
- function replaceRevision(revision, oldRevisions, newRevision) {
920
- return oldRevisions.has(revision) ? newRevision : revision;
921
- }
922
- function replaceIdMapRevisions(map, oldRevisions, newRevision) {
925
+ function replaceIdMapRevisions(map, replacer, valueMapper = (value) => value) {
923
926
  const updated = newTupleBTree();
924
- for (const [[revision, id], value] of map.entries()) {
925
- updated.set([replaceRevision(revision, oldRevisions, newRevision), id], value);
927
+ for (const [[revision, localId], value] of map.entries()) {
928
+ const newAtom = replacer.getUpdatedAtomId({ revision, localId });
929
+ updated.set([newAtom.revision, newAtom.localId], valueMapper(value));
926
930
  }
927
931
  return updated;
928
932
  }
@@ -1041,13 +1045,13 @@ export function updateRefreshers(change, getDetachedNode, removedRoots, requireR
1041
1045
  refreshers.set([root.major, brand(root.minor)], node);
1042
1046
  }
1043
1047
  }
1044
- const { fieldChanges, nodeChanges, maxId, revisions, constraintViolationCount, constraintViolationCountOnRevert, builds, destroys, } = change;
1048
+ const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys, maxId, revisions, constraintViolationCount, constraintViolationCountOnRevert, builds, destroys, } = change;
1045
1049
  return makeModularChangeset({
1046
1050
  fieldChanges,
1047
1051
  nodeChanges,
1048
- nodeToParent: change.nodeToParent,
1049
- nodeAliases: change.nodeAliases,
1050
- crossFieldKeys: change.crossFieldKeys,
1052
+ nodeToParent,
1053
+ nodeAliases,
1054
+ crossFieldKeys,
1051
1055
  maxId: maxId,
1052
1056
  revisions,
1053
1057
  constraintViolationCount,
@@ -1366,6 +1370,12 @@ function makeModularChangeset(props = {
1366
1370
  props.constraintViolationCountOnRevert > 0) {
1367
1371
  changeset.constraintViolationCountOnRevert = props.constraintViolationCountOnRevert;
1368
1372
  }
1373
+ if (props.noChangeConstraint !== undefined) {
1374
+ changeset.noChangeConstraint = props.noChangeConstraint;
1375
+ }
1376
+ if (props.noChangeConstraintOnRevert !== undefined) {
1377
+ changeset.noChangeConstraintOnRevert = props.noChangeConstraintOnRevert;
1378
+ }
1369
1379
  if (props.builds !== undefined && props.builds.size > 0) {
1370
1380
  changeset.builds = props.builds;
1371
1381
  }
@@ -1378,11 +1388,12 @@ function makeModularChangeset(props = {
1378
1388
  return changeset;
1379
1389
  }
1380
1390
  export class ModularEditBuilder extends EditBuilder {
1381
- constructor(family, fieldKinds, changeReceiver) {
1391
+ constructor(family, fieldKinds, changeReceiver, codecOptions) {
1382
1392
  super(family, changeReceiver);
1383
1393
  this.fieldKinds = fieldKinds;
1384
1394
  this.transactionDepth = 0;
1385
1395
  this.idAllocator = idAllocatorFromMaxId();
1396
+ this.codecOptions = codecOptions;
1386
1397
  }
1387
1398
  enterTransaction() {
1388
1399
  this.transactionDepth += 1;
@@ -1469,7 +1480,7 @@ export class ModularEditBuilder extends EditBuilder {
1469
1480
  revision: change.revision,
1470
1481
  }));
1471
1482
  });
1472
- const revInfo = Array.from(revisions).map((revision) => ({ revision }));
1483
+ const revInfo = [...revisions].map((revision) => ({ revision }));
1473
1484
  const composedChange = {
1474
1485
  ...this.changeFamily.rebaser.compose(changeMaps),
1475
1486
  revisions: revInfo,
@@ -1511,6 +1522,26 @@ export class ModularEditBuilder extends EditBuilder {
1511
1522
  revision,
1512
1523
  }), revision));
1513
1524
  }
1525
+ addNoChangeConstraint(revision) {
1526
+ if (lt(this.codecOptions.minVersionForCollab, FluidClientVersion.v2_80)) {
1527
+ throw new UsageError(`No change constraints require min client version of at least ${FluidClientVersion.v2_80}`);
1528
+ }
1529
+ const changeset = makeModularChangeset({
1530
+ maxId: -1,
1531
+ noChangeConstraint: { violated: false },
1532
+ });
1533
+ this.applyChange(tagChange(changeset, revision));
1534
+ }
1535
+ addNoChangeConstraintOnRevert(revision) {
1536
+ if (lt(this.codecOptions.minVersionForCollab, FluidClientVersion.v2_80)) {
1537
+ throw new UsageError(`No change constraints require min client version of at least ${FluidClientVersion.v2_80}`);
1538
+ }
1539
+ const changeset = makeModularChangeset({
1540
+ maxId: -1,
1541
+ noChangeConstraintOnRevert: { violated: false },
1542
+ });
1543
+ this.applyChange(tagChange(changeset, revision));
1544
+ }
1514
1545
  }
1515
1546
  function buildModularChangesetFromField(props) {
1516
1547
  const { path, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator = idAllocatorFromMaxId(), localCrossFieldKeys = [], childId, revision, } = props;
@@ -1559,8 +1590,8 @@ function buildModularChangesetFromField(props) {
1559
1590
  });
1560
1591
  }
1561
1592
  function buildModularChangesetFromNode(props) {
1562
- const { path, nodeId = { localId: brand(props.idAllocator.allocate()), revision: props.revision }, } = props;
1563
- setInChangeAtomIdMap(props.nodeChanges, nodeId, props.nodeChange);
1593
+ const { path, idAllocator, revision, nodeChanges, nodeChange, nodeId = { localId: brand(idAllocator.allocate()), revision }, } = props;
1594
+ setInChangeAtomIdMap(nodeChanges, nodeId, nodeChange);
1564
1595
  const fieldChangeset = genericFieldKind.changeHandler.editor.buildChildChanges([
1565
1596
  [path.parentIndex, nodeId],
1566
1597
  ]);
@@ -1579,15 +1610,20 @@ function buildModularChangesetFromNode(props) {
1579
1610
  function getRevInfoFromTaggedChanges(changes) {
1580
1611
  let maxId = -1;
1581
1612
  const revInfos = [];
1613
+ const revisions = new Set();
1582
1614
  for (const taggedChange of changes) {
1583
1615
  const change = taggedChange.change;
1584
1616
  maxId = Math.max(change.maxId ?? -1, maxId);
1585
- revInfos.push(...revisionInfoFromTaggedChange(taggedChange));
1617
+ const infosToAdd = revisionInfoFromTaggedChange(taggedChange);
1618
+ for (const info of infosToAdd) {
1619
+ if (!revisions.has(info.revision)) {
1620
+ revisions.add(info.revision);
1621
+ revInfos.push(info);
1622
+ }
1623
+ }
1586
1624
  }
1587
- const revisions = new Set();
1588
1625
  const rolledBackRevisions = [];
1589
1626
  for (const info of revInfos) {
1590
- revisions.add(info.revision);
1591
1627
  if (info.rollbackOf !== undefined) {
1592
1628
  rolledBackRevisions.push(info.rollbackOf);
1593
1629
  }
@@ -1641,7 +1677,7 @@ function nodeChangeFromId(nodes, id) {
1641
1677
  return node;
1642
1678
  }
1643
1679
  function fieldIdFromFieldIdKey([revision, localId, field]) {
1644
- const nodeId = localId !== undefined ? { revision, localId } : undefined;
1680
+ const nodeId = localId === undefined ? undefined : { revision, localId };
1645
1681
  return { nodeId, field };
1646
1682
  }
1647
1683
  function cloneNodeChangeset(nodeChangeset) {
@@ -1650,13 +1686,13 @@ function cloneNodeChangeset(nodeChangeset) {
1650
1686
  }
1651
1687
  return { ...nodeChangeset };
1652
1688
  }
1653
- function replaceFieldIdRevision(fieldId, oldRevisions, newRevision) {
1689
+ function replaceFieldIdRevision(fieldId, replacer) {
1654
1690
  if (fieldId.nodeId === undefined) {
1655
1691
  return fieldId;
1656
1692
  }
1657
1693
  return {
1658
1694
  ...fieldId,
1659
- nodeId: replaceAtomRevisions(fieldId.nodeId, oldRevisions, newRevision),
1695
+ nodeId: replacer.getUpdatedAtomId(fieldId.nodeId),
1660
1696
  };
1661
1697
  }
1662
1698
  export function getParentFieldId(changeset, nodeId) {
@@ -1671,9 +1707,9 @@ function getFieldsForCrossFieldKey(changeset, key, count) {
1671
1707
  }
1672
1708
  // This is only exported for use in test utilities.
1673
1709
  export function normalizeFieldId(fieldId, nodeAliases) {
1674
- return fieldId.nodeId !== undefined
1675
- ? { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) }
1676
- : fieldId;
1710
+ return fieldId.nodeId === undefined
1711
+ ? fieldId
1712
+ : { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) };
1677
1713
  }
1678
1714
  /**
1679
1715
  * @returns The canonical form of nodeId, according to nodeAliases
@@ -1692,12 +1728,6 @@ function normalizeNodeId(nodeId, nodeAliases) {
1692
1728
  function hasConflicts(change) {
1693
1729
  return (change.constraintViolationCount ?? 0) > 0;
1694
1730
  }
1695
- function getFromChangeAtomIdMap(map, id) {
1696
- return map.get([id.revision, id.localId]);
1697
- }
1698
- function setInChangeAtomIdMap(map, id, value) {
1699
- map.set([id.revision, id.localId], value);
1700
- }
1701
1731
  function areEqualFieldIds(a, b) {
1702
1732
  return areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;
1703
1733
  }