@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
@@ -7,19 +7,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.normalizeFieldId = exports.getParentFieldId = exports.ModularEditBuilder = exports.getChangeHandler = exports.getFieldKind = exports.rebaseRevisionMetadataFromInfo = exports.intoDelta = exports.updateRefreshers = exports.relevantRemovedRoots = exports.ModularChangeFamily = void 0;
8
8
  const internal_1 = require("@fluidframework/core-utils/internal");
9
9
  const sorted_btree_es6_1 = require("@tylerbu/sorted-btree-es6");
10
- const index_js_1 = require("../../core/index.js");
11
- const index_js_2 = require("../../util/index.js");
10
+ const internal_2 = require("@fluidframework/telemetry-utils/internal");
11
+ const index_js_1 = require("../../codec/index.js");
12
+ const index_js_2 = require("../../core/index.js");
13
+ const index_js_3 = require("../../util/index.js");
12
14
  const crossFieldQueries_js_1 = require("./crossFieldQueries.js");
13
15
  const fieldChangeHandler_js_1 = require("./fieldChangeHandler.js");
14
16
  const genericFieldKind_js_1 = require("./genericFieldKind.js");
15
17
  const modularChangeTypes_js_1 = require("./modularChangeTypes.js");
18
+ const changeAtomIdBTree_js_1 = require("../changeAtomIdBTree.js");
19
+ const semver_ts_1 = require("semver-ts");
16
20
  /**
17
21
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
18
22
  * as determined by the schema.
19
23
  */
20
24
  class ModularChangeFamily {
21
- constructor(fieldKinds, codecs) {
25
+ constructor(fieldKinds, codecs, codecOptions) {
22
26
  this.codecs = codecs;
27
+ this.codecOptions = codecOptions;
23
28
  this.fieldKinds = fieldKinds;
24
29
  }
25
30
  get rebaser() {
@@ -34,9 +39,9 @@ class ModularChangeFamily {
34
39
  */
35
40
  normalizeFieldChanges(change1, change2) {
36
41
  // TODO: Handle the case where changes have conflicting field kinds
37
- const kind = change1.fieldKind !== genericFieldKind_js_1.genericFieldKind.identifier
38
- ? change1.fieldKind
39
- : change2.fieldKind;
42
+ const kind = change1.fieldKind === genericFieldKind_js_1.genericFieldKind.identifier
43
+ ? change2.fieldKind
44
+ : change1.fieldKind;
40
45
  if (kind === genericFieldKind_js_1.genericFieldKind.identifier) {
41
46
  // Both changes are generic
42
47
  return {
@@ -73,11 +78,14 @@ class ModularChangeFamily {
73
78
  return this.composePair(left, right, revInfos, idState);
74
79
  };
75
80
  const innerChanges = changes.map((change) => change.change);
76
- return (0, index_js_2.balancedReduce)(innerChanges, pairwiseDelegate, makeModularChangeset);
81
+ return (0, index_js_3.balancedReduce)(innerChanges, pairwiseDelegate, makeModularChangeset);
77
82
  }
78
83
  composePair(change1, change2, revInfos, idState) {
79
84
  const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } = this.composeAllFields(change1, change2, revInfos, idState);
80
85
  const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(change1, change2);
86
+ // The composed changeset has a "no change" constraint if either change has one
87
+ const noChangeConstraint = change1.noChangeConstraint ?? change2.noChangeConstraint;
88
+ const noChangeConstraintOnRevert = change1.noChangeConstraintOnRevert ?? change2.noChangeConstraintOnRevert;
81
89
  return makeModularChangeset({
82
90
  fieldChanges,
83
91
  nodeChanges,
@@ -86,6 +94,8 @@ class ModularChangeFamily {
86
94
  crossFieldKeys,
87
95
  maxId: idState.maxId,
88
96
  revisions: revInfos,
97
+ noChangeConstraint,
98
+ noChangeConstraintOnRevert,
89
99
  builds: allBuilds,
90
100
  destroys: allDestroys,
91
101
  refreshers: allRefreshers,
@@ -97,8 +107,8 @@ class ModularChangeFamily {
97
107
  // TODO: remove once AB#46104 is completed
98
108
  const change1 = this.getEffectiveChange(potentiallyConflictedChange1);
99
109
  const change2 = this.getEffectiveChange(potentiallyConflictedChange2);
100
- const genId = (0, index_js_2.idAllocatorFromState)(idState);
101
- const revisionMetadata = (0, index_js_1.revisionMetadataSourceFromInfo)(revInfos);
110
+ const genId = (0, index_js_3.idAllocatorFromState)(idState);
111
+ const revisionMetadata = (0, index_js_2.revisionMetadataSourceFromInfo)(revInfos);
102
112
  // We merge nodeChanges, nodeToParent, and nodeAliases from the two changesets.
103
113
  // The merged tables will have correct entries for all nodes which are only referenced in one of the input changesets.
104
114
  // During composeFieldMaps and composeInvalidatedElements we will find all nodes referenced in both input changesets
@@ -107,14 +117,14 @@ class ModularChangeFamily {
107
117
  // A collision for a node ID means that that node is referenced in both changesets
108
118
  // (since we assume that if two changesets use the same node ID they are referring to the same node),
109
119
  // therefore all collisions will be addressed when processing the intersection of the changesets.
110
- const composedNodeChanges = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.nodeChanges, change2.nodeChanges));
111
- const composedNodeToParent = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.nodeToParent, change2.nodeToParent));
112
- const composedNodeAliases = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.nodeAliases, change2.nodeAliases));
120
+ const composedNodeChanges = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.nodeChanges, change2.nodeChanges));
121
+ const composedNodeToParent = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.nodeToParent, change2.nodeToParent));
122
+ const composedNodeAliases = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.nodeAliases, change2.nodeAliases));
113
123
  const crossFieldTable = newComposeTable(change1, change2, composedNodeToParent);
114
124
  const composedFields = this.composeFieldMaps(change1.fieldChanges, change2.fieldChanges, undefined, genId, crossFieldTable, revisionMetadata);
115
125
  this.composeInvalidatedElements(crossFieldTable, composedFields, composedNodeChanges, composedNodeToParent, composedNodeAliases, genId, revisionMetadata);
116
126
  // Currently no field kinds require making changes to cross-field keys during composition, so we can just merge the two tables.
117
- const composedCrossFieldKeys = index_js_2.RangeMap.union(change1.crossFieldKeys, change2.crossFieldKeys);
127
+ const composedCrossFieldKeys = index_js_3.RangeMap.union(change1.crossFieldKeys, change2.crossFieldKeys);
118
128
  return {
119
129
  fieldChanges: composedFields,
120
130
  nodeChanges: composedNodeChanges,
@@ -131,14 +141,14 @@ class ModularChangeFamily {
131
141
  const composeNodes = (child1, child2) => {
132
142
  if (child1 !== undefined &&
133
143
  child2 !== undefined &&
134
- getFromChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2) === undefined) {
135
- setInChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2, child1);
144
+ (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(crossFieldTable.newToBaseNodeId, child2) === undefined) {
145
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(crossFieldTable.newToBaseNodeId, child2, child1);
136
146
  crossFieldTable.pendingCompositions.nodeIdsToCompose.push([child1, child2]);
137
147
  }
138
148
  return child1 ?? child2 ?? (0, internal_1.fail)(0xb22 /* Should not compose two undefined nodes */);
139
149
  };
140
150
  const amendedChange = rebaser.compose(fieldChange1, fieldChange2, composeNodes, genId, new ComposeManager(crossFieldTable, fieldChange, fieldId, false), revisionMetadata);
141
- composedChange.change = (0, index_js_2.brand)(amendedChange);
151
+ composedChange.change = (0, index_js_3.brand)(amendedChange);
142
152
  }
143
153
  /**
144
154
  * Updates everything in the composed output which may no longer be valid.
@@ -204,11 +214,11 @@ class ModularChangeFamily {
204
214
  composedFields.set(fieldId.field, composedField);
205
215
  continue;
206
216
  }
207
- const nodeId = getFromChangeAtomIdMap(table.newToBaseNodeId, fieldId.nodeId) ?? fieldId.nodeId;
217
+ const nodeId = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(table.newToBaseNodeId, fieldId.nodeId) ?? fieldId.nodeId;
208
218
  let nodeChangeset = nodeChangeFromId(composedNodes, nodeId);
209
219
  if (!table.composedNodes.has(nodeChangeset)) {
210
220
  nodeChangeset = cloneNodeChangeset(nodeChangeset);
211
- setInChangeAtomIdMap(composedNodes, nodeId, nodeChangeset);
221
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(composedNodes, nodeId, nodeChangeset);
212
222
  }
213
223
  if (nodeChangeset.fieldChanges === undefined) {
214
224
  nodeChangeset.fieldChanges = new Map();
@@ -225,9 +235,9 @@ class ModularChangeFamily {
225
235
  for (const [field, fieldChange1] of change1) {
226
236
  const fieldId = { nodeId: parentId, field };
227
237
  const fieldChange2 = change2.get(field);
228
- const composedField = fieldChange2 !== undefined
229
- ? this.composeFieldChanges(fieldId, fieldChange1, fieldChange2, genId, crossFieldTable, revisionMetadata)
230
- : fieldChange1;
238
+ const composedField = fieldChange2 === undefined
239
+ ? fieldChange1
240
+ : this.composeFieldChanges(fieldId, fieldChange1, fieldChange2, genId, crossFieldTable, revisionMetadata);
231
241
  composedFields.set(field, composedField);
232
242
  }
233
243
  for (const [field, fieldChange2] of change2) {
@@ -253,14 +263,14 @@ class ModularChangeFamily {
253
263
  const manager = new ComposeManager(crossFieldTable, change1, fieldId);
254
264
  const composedChange = changeHandler.rebaser.compose(change1Normalized, change2Normalized, (child1, child2) => {
255
265
  if (child1 !== undefined && child2 !== undefined) {
256
- setInChangeAtomIdMap(crossFieldTable.newToBaseNodeId, child2, child1);
266
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(crossFieldTable.newToBaseNodeId, child2, child1);
257
267
  crossFieldTable.pendingCompositions.nodeIdsToCompose.push([child1, child2]);
258
268
  }
259
269
  return child1 ?? child2 ?? (0, internal_1.fail)(0xb23 /* Should not compose two undefined nodes */);
260
270
  }, idAllocator, manager, revisionMetadata);
261
271
  const composedField = {
262
272
  fieldKind,
263
- change: (0, index_js_2.brand)(composedChange),
273
+ change: (0, index_js_3.brand)(composedChange),
264
274
  };
265
275
  crossFieldTable.fieldToContext.set(change1, {
266
276
  fieldId,
@@ -275,11 +285,11 @@ class ModularChangeFamily {
275
285
  const nodeChangeset1 = nodeChangeFromId(nodeChanges1, id1);
276
286
  const nodeChangeset2 = nodeChangeFromId(nodeChanges2, id2);
277
287
  const composedNodeChangeset = this.composeNodeChanges(id1, nodeChangeset1, nodeChangeset2, idAllocator, crossFieldTable, revisionMetadata);
278
- setInChangeAtomIdMap(composedNodes, id1, composedNodeChangeset);
279
- if (!(0, index_js_1.areEqualChangeAtomIds)(id1, id2)) {
288
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(composedNodes, id1, composedNodeChangeset);
289
+ if (!(0, index_js_2.areEqualChangeAtomIds)(id1, id2)) {
280
290
  composedNodes.delete([id2.revision, id2.localId]);
281
291
  composedNodeToParent.delete([id2.revision, id2.localId]);
282
- setInChangeAtomIdMap(nodeAliases, id2, id1);
292
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeAliases, id2, id1);
283
293
  // We need to delete id1 to avoid forming a cycle in case id1 already had an alias.
284
294
  nodeAliases.delete([id1.revision, id1.localId]);
285
295
  }
@@ -314,8 +324,8 @@ class ModularChangeFamily {
314
324
  /**
315
325
  * @param change - The change to invert.
316
326
  * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
317
- * @param revisionForInvert - The revision for the invert changeset.
318
327
  * performing a sandwich rebase.
328
+ * @param revisionForInvert - The revision for the invert changeset.
319
329
  */
320
330
  invert(change, isRollback, revisionForInvert) {
321
331
  // Rollback changesets destroy the nodes created by the change being rolled back.
@@ -325,6 +335,8 @@ class ModularChangeFamily {
325
335
  const revInfos = isRollback
326
336
  ? [{ revision: revisionForInvert, rollbackOf: change.revision }]
327
337
  : [{ revision: revisionForInvert }];
338
+ const noChangeConstraint = change.change.noChangeConstraintOnRevert;
339
+ const noChangeConstraintOnRevert = change.change.noChangeConstraint;
328
340
  if (hasConflicts(change.change)) {
329
341
  return makeModularChangeset({
330
342
  maxId: change.change.maxId,
@@ -332,16 +344,16 @@ class ModularChangeFamily {
332
344
  destroys,
333
345
  });
334
346
  }
335
- const genId = (0, index_js_2.idAllocatorFromMaxId)(change.change.maxId ?? -1);
347
+ const genId = (0, index_js_3.idAllocatorFromMaxId)(change.change.maxId ?? -1);
336
348
  const crossFieldTable = {
337
349
  ...newCrossFieldTable(),
338
350
  originalFieldToContext: new Map(),
339
- invertedNodeToParent: (0, index_js_2.brand)(change.change.nodeToParent.clone()),
351
+ invertedNodeToParent: (0, index_js_3.brand)(change.change.nodeToParent.clone()),
340
352
  };
341
353
  const { revInfos: oldRevInfos } = getRevInfoFromTaggedChanges([change]);
342
- const revisionMetadata = (0, index_js_1.revisionMetadataSourceFromInfo)(oldRevInfos);
354
+ const revisionMetadata = (0, index_js_2.revisionMetadataSourceFromInfo)(oldRevInfos);
343
355
  const invertedFields = this.invertFieldMap(change.change.fieldChanges, undefined, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert);
344
- const invertedNodes = (0, index_js_2.newTupleBTree)();
356
+ const invertedNodes = (0, index_js_3.newTupleBTree)();
345
357
  change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
346
358
  invertedNodes.set([revision, localId], this.invertNodeChange(nodeChangeset, { revision, localId }, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert));
347
359
  });
@@ -354,7 +366,7 @@ class ModularChangeFamily {
354
366
  (0, internal_1.assert)(context !== undefined, 0x851 /* Should have context for every invalidated field */);
355
367
  const { invertedField, fieldId } = context;
356
368
  const amendedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(originalFieldChange, isRollback, genId, revisionForInvert, new InvertManager(crossFieldTable, fieldChange, fieldId), revisionMetadata);
357
- invertedField.change = (0, index_js_2.brand)(amendedChange);
369
+ invertedField.change = (0, index_js_3.brand)(amendedChange);
358
370
  }
359
371
  }
360
372
  const crossFieldKeys = this.makeCrossFieldKeyTable(invertedFields, invertedNodes);
@@ -368,6 +380,8 @@ class ModularChangeFamily {
368
380
  revisions: revInfos,
369
381
  constraintViolationCount: change.change.constraintViolationCountOnRevert,
370
382
  constraintViolationCountOnRevert: change.change.constraintViolationCount,
383
+ noChangeConstraint,
384
+ noChangeConstraintOnRevert,
371
385
  destroys,
372
386
  });
373
387
  }
@@ -379,7 +393,7 @@ class ModularChangeFamily {
379
393
  const invertedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(fieldChange.change, isRollback, genId, revisionForInvert, manager, revisionMetadata);
380
394
  const invertedFieldChange = {
381
395
  ...fieldChange,
382
- change: (0, index_js_2.brand)(invertedChange),
396
+ change: (0, index_js_3.brand)(invertedChange),
383
397
  };
384
398
  invertedFields.set(field, invertedFieldChange);
385
399
  crossFieldTable.originalFieldToContext.set(fieldChange, {
@@ -412,22 +426,22 @@ class ModularChangeFamily {
412
426
  // This means that we must rebase over a muted version of the conflicted changeset.
413
427
  // That is, a version that includes its declarations (e.g., new cells) but not its changes.
414
428
  // TODO: remove once AB#46104 is completed
415
- const over = (0, index_js_1.mapTaggedChange)(potentiallyConflictedOver, this.getEffectiveChange(potentiallyConflictedOver.change));
429
+ const over = (0, index_js_2.mapTaggedChange)(potentiallyConflictedOver, this.getEffectiveChange(potentiallyConflictedOver.change));
416
430
  const change = taggedChange.change;
417
431
  const maxId = Math.max(change.maxId ?? -1, over.change.maxId ?? -1);
418
432
  const idState = { maxId };
419
- const genId = (0, index_js_2.idAllocatorFromState)(idState);
433
+ const genId = (0, index_js_3.idAllocatorFromState)(idState);
420
434
  const crossFieldTable = {
421
435
  ...newCrossFieldTable(),
422
436
  newChange: change,
423
437
  baseChange: over.change,
424
438
  baseFieldToContext: new Map(),
425
- baseToRebasedNodeId: (0, index_js_2.newTupleBTree)(),
439
+ baseToRebasedNodeId: (0, index_js_3.newTupleBTree)(),
426
440
  rebasedFields: new Set(),
427
- rebasedNodeToParent: (0, index_js_2.brand)(change.nodeToParent.clone()),
441
+ rebasedNodeToParent: (0, index_js_3.brand)(change.nodeToParent.clone()),
428
442
  rebasedCrossFieldKeys: change.crossFieldKeys.clone(),
429
443
  nodeIdPairs: [],
430
- affectedBaseFields: (0, index_js_2.newTupleBTree)(),
444
+ affectedBaseFields: (0, index_js_3.newTupleBTree)(),
431
445
  fieldsWithUnattachedChild: new Set(),
432
446
  };
433
447
  const getBaseRevisions = () => revisionInfoFromTaggedChange(over).map((info) => info.revision);
@@ -436,11 +450,16 @@ class ModularChangeFamily {
436
450
  getRevisionToRebase: () => taggedChange.revision,
437
451
  getBaseRevisions,
438
452
  };
439
- const rebasedNodes = (0, index_js_2.brand)(change.nodeChanges.clone());
453
+ const rebasedNodes = (0, index_js_3.brand)(change.nodeChanges.clone());
440
454
  const rebasedFields = this.rebaseIntersectingFields(crossFieldTable, rebasedNodes, genId, rebaseMetadata);
441
455
  this.rebaseInvalidatedElements(rebasedFields, rebasedNodes, crossFieldTable, rebaseMetadata, genId);
442
456
  const constraintState = newConstraintState(change.constraintViolationCount ?? 0);
443
457
  const revertConstraintState = newConstraintState(change.constraintViolationCountOnRevert ?? 0);
458
+ let noChangeConstraint = change.noChangeConstraint;
459
+ if (noChangeConstraint !== undefined && !noChangeConstraint.violated) {
460
+ noChangeConstraint = { violated: true };
461
+ constraintState.violationCount += 1;
462
+ }
444
463
  this.updateConstraintsForFields(rebasedFields, fieldChangeHandler_js_1.NodeAttachState.Attached, fieldChangeHandler_js_1.NodeAttachState.Attached, constraintState, revertConstraintState, rebasedNodes);
445
464
  const rebased = makeModularChangeset({
446
465
  fieldChanges: this.pruneFieldMap(rebasedFields, rebasedNodes),
@@ -452,6 +471,8 @@ class ModularChangeFamily {
452
471
  revisions: change.revisions,
453
472
  constraintViolationCount: constraintState.violationCount,
454
473
  constraintViolationCountOnRevert: revertConstraintState.violationCount,
474
+ noChangeConstraint,
475
+ noChangeConstraintOnRevert: change.noChangeConstraintOnRevert,
455
476
  builds: change.builds,
456
477
  destroys: change.destroys,
457
478
  refreshers: change.refreshers,
@@ -468,7 +489,7 @@ class ModularChangeFamily {
468
489
  // Note that the call to `rebaseNodeChange` can add entries to `crossFieldTable.nodeIdPairs`.
469
490
  for (const [newId, baseId, _attachState] of crossFieldTable.nodeIdPairs) {
470
491
  const rebasedNode = this.rebaseNodeChange(newId, baseId, genId, crossFieldTable, metadata);
471
- setInChangeAtomIdMap(rebasedNodes, newId, rebasedNode);
492
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(rebasedNodes, newId, rebasedNode);
472
493
  }
473
494
  return rebasedFields;
474
495
  }
@@ -476,9 +497,9 @@ class ModularChangeFamily {
476
497
  rebaseFieldsWithoutNewChanges(rebasedFields, rebasedNodes, crossFieldTable, genId, metadata) {
477
498
  const baseChange = crossFieldTable.baseChange;
478
499
  for (const [revision, localId, fieldKey] of crossFieldTable.affectedBaseFields.keys()) {
479
- const baseNodeId = localId !== undefined
480
- ? normalizeNodeId({ revision, localId }, baseChange.nodeAliases)
481
- : undefined;
500
+ const baseNodeId = localId === undefined
501
+ ? undefined
502
+ : normalizeNodeId({ revision, localId }, baseChange.nodeAliases);
482
503
  const baseFieldChange = fieldMapFromNodeId(baseChange.fieldChanges, baseChange.nodeChanges, baseNodeId).get(fieldKey);
483
504
  (0, internal_1.assert)(baseFieldChange !== undefined, 0x9c2 /* Cross field key registered for empty field */);
484
505
  if (crossFieldTable.baseFieldToContext.has(baseFieldChange)) {
@@ -494,16 +515,16 @@ class ModularChangeFamily {
494
515
  const handler = getChangeHandler(this.fieldKinds, baseFieldChange.fieldKind);
495
516
  const fieldChange = {
496
517
  ...baseFieldChange,
497
- change: (0, index_js_2.brand)(handler.createEmpty()),
518
+ change: (0, index_js_3.brand)(handler.createEmpty()),
498
519
  };
499
- const rebasedNodeId = baseNodeId !== undefined
500
- ? rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId)
501
- : undefined;
520
+ const rebasedNodeId = baseNodeId === undefined
521
+ ? undefined
522
+ : rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId);
502
523
  const fieldId = { nodeId: rebasedNodeId, field: fieldKey };
503
524
  const rebasedField = handler.rebaser.rebase(fieldChange.change, baseFieldChange.change, rebaseChild, genId, new RebaseManager(crossFieldTable, baseFieldChange, fieldId), metadata);
504
525
  const rebasedFieldChange = {
505
526
  ...baseFieldChange,
506
- change: (0, index_js_2.brand)(rebasedField),
527
+ change: (0, index_js_3.brand)(rebasedField),
507
528
  };
508
529
  // TODO: Deduplicate
509
530
  crossFieldTable.baseFieldToContext.set(baseFieldChange, {
@@ -545,21 +566,21 @@ class ModularChangeFamily {
545
566
  }
546
567
  if (base !== undefined) {
547
568
  for (const id of context.baseNodeIds) {
548
- if ((0, index_js_1.areEqualChangeAtomIds)(base, id)) {
569
+ if ((0, index_js_2.areEqualChangeAtomIds)(base, id)) {
549
570
  return base;
550
571
  }
551
572
  }
552
573
  }
553
574
  return undefined;
554
575
  };
555
- context.rebasedChange.change = (0, index_js_2.brand)(changeHandler.rebaser.rebase(fieldChangeset, baseChangeset, rebaseChild, genId, new RebaseManager(crossFieldTable, baseField, context.fieldId, allowInval), rebaseMetadata));
576
+ context.rebasedChange.change = (0, index_js_3.brand)(changeHandler.rebaser.rebase(fieldChangeset, baseChangeset, rebaseChild, genId, new RebaseManager(crossFieldTable, baseField, context.fieldId, allowInval), rebaseMetadata));
556
577
  }
557
578
  attachRebasedField(rebasedFields, rebasedNodes, table, rebasedField, { nodeId, field: fieldKey }, idAllocator, metadata) {
558
579
  if (nodeId === undefined) {
559
580
  rebasedFields.set(fieldKey, rebasedField);
560
581
  return;
561
582
  }
562
- const rebasedNode = getFromChangeAtomIdMap(rebasedNodes, nodeId);
583
+ const rebasedNode = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(rebasedNodes, nodeId);
563
584
  if (rebasedNode !== undefined) {
564
585
  if (rebasedNode.fieldChanges === undefined) {
565
586
  rebasedNode.fieldChanges = new Map([[fieldKey, rebasedField]]);
@@ -572,15 +593,15 @@ class ModularChangeFamily {
572
593
  const newNode = {
573
594
  fieldChanges: new Map([[fieldKey, rebasedField]]),
574
595
  };
575
- setInChangeAtomIdMap(rebasedNodes, nodeId, newNode);
576
- setInChangeAtomIdMap(table.baseToRebasedNodeId, nodeId, nodeId);
596
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(rebasedNodes, nodeId, newNode);
597
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(table.baseToRebasedNodeId, nodeId, nodeId);
577
598
  const parentFieldId = getParentFieldId(table.baseChange, nodeId);
578
599
  this.attachRebasedNode(rebasedFields, rebasedNodes, table, nodeId, parentFieldId, idAllocator, metadata);
579
600
  }
580
601
  attachRebasedNode(rebasedFields, rebasedNodes, table, baseNodeId, parentFieldIdBase, idAllocator, metadata) {
581
602
  const baseFieldChange = fieldChangeFromId(table.baseChange.fieldChanges, table.baseChange.nodeChanges, parentFieldIdBase);
582
603
  const rebasedFieldId = rebasedFieldIdFromBaseId(table, parentFieldIdBase);
583
- setInChangeAtomIdMap(table.rebasedNodeToParent, baseNodeId, rebasedFieldId);
604
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(table.rebasedNodeToParent, baseNodeId, rebasedFieldId);
584
605
  const context = table.baseFieldToContext.get(baseFieldChange);
585
606
  if (context !== undefined) {
586
607
  // We've already processed this field.
@@ -592,12 +613,12 @@ class ModularChangeFamily {
592
613
  const handler = getChangeHandler(this.fieldKinds, baseFieldChange.fieldKind);
593
614
  const fieldChange = {
594
615
  ...baseFieldChange,
595
- change: (0, index_js_2.brand)(handler.createEmpty()),
616
+ change: (0, index_js_3.brand)(handler.createEmpty()),
596
617
  };
597
- const rebasedChangeset = handler.rebaser.rebase(handler.createEmpty(), baseFieldChange.change, (_idNew, idBase) => idBase !== undefined && (0, index_js_1.areEqualChangeAtomIds)(idBase, baseNodeId)
618
+ const rebasedChangeset = handler.rebaser.rebase(handler.createEmpty(), baseFieldChange.change, (_idNew, idBase) => idBase !== undefined && (0, index_js_2.areEqualChangeAtomIds)(idBase, baseNodeId)
598
619
  ? baseNodeId
599
620
  : undefined, idAllocator, new RebaseManager(table, baseFieldChange, rebasedFieldId), metadata);
600
- const rebasedField = { ...baseFieldChange, change: (0, index_js_2.brand)(rebasedChangeset) };
621
+ const rebasedField = { ...baseFieldChange, change: (0, index_js_3.brand)(rebasedChangeset) };
601
622
  table.rebasedFields.add(rebasedField);
602
623
  table.baseFieldToContext.set(baseFieldChange, {
603
624
  newChange: fieldChange,
@@ -628,7 +649,7 @@ class ModularChangeFamily {
628
649
  const rebasedField = changeHandler.rebaser.rebase(fieldChangeset, baseChangeset, rebaseChild, genId, manager, revisionMetadata);
629
650
  const rebasedFieldChange = {
630
651
  fieldKind,
631
- change: (0, index_js_2.brand)(rebasedField),
652
+ change: (0, index_js_3.brand)(rebasedField),
632
653
  };
633
654
  rebasedFields.set(field, rebasedFieldChange);
634
655
  crossFieldTable.baseFieldToContext.set(baseChange, {
@@ -659,7 +680,7 @@ class ModularChangeFamily {
659
680
  if (change?.nodeExistsConstraintOnRevert !== undefined) {
660
681
  rebasedChange.nodeExistsConstraintOnRevert = change.nodeExistsConstraintOnRevert;
661
682
  }
662
- setInChangeAtomIdMap(crossFieldTable.baseToRebasedNodeId, baseId, newId);
683
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(crossFieldTable.baseToRebasedNodeId, baseId, newId);
663
684
  return rebasedChange;
664
685
  }
665
686
  updateConstraintsForFields(fields, parentInputAttachState, parentOutputAttachState, constraintState, revertConstraintState, nodes) {
@@ -713,16 +734,16 @@ class ModularChangeFamily {
713
734
  const handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);
714
735
  const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => this.pruneNodeChange(nodeId, nodeMap));
715
736
  if (!handler.isEmpty(prunedFieldChangeset)) {
716
- prunedChangeset.set(field, { ...fieldChange, change: (0, index_js_2.brand)(prunedFieldChangeset) });
737
+ prunedChangeset.set(field, { ...fieldChange, change: (0, index_js_3.brand)(prunedFieldChangeset) });
717
738
  }
718
739
  }
719
740
  return prunedChangeset.size > 0 ? prunedChangeset : undefined;
720
741
  }
721
742
  pruneNodeChange(nodeId, nodeMap) {
722
743
  const changeset = nodeChangeFromId(nodeMap, nodeId);
723
- const prunedFields = changeset.fieldChanges !== undefined
724
- ? this.pruneFieldMap(changeset.fieldChanges, nodeMap)
725
- : undefined;
744
+ const prunedFields = changeset.fieldChanges === undefined
745
+ ? undefined
746
+ : this.pruneFieldMap(changeset.fieldChanges, nodeMap);
726
747
  const prunedChange = { ...changeset, fieldChanges: prunedFields };
727
748
  if (prunedChange.fieldChanges === undefined) {
728
749
  delete prunedChange.fieldChanges;
@@ -732,65 +753,54 @@ class ModularChangeFamily {
732
753
  return undefined;
733
754
  }
734
755
  else {
735
- setInChangeAtomIdMap(nodeMap, nodeId, prunedChange);
756
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeMap, nodeId, prunedChange);
736
757
  return nodeId;
737
758
  }
738
759
  }
739
- changeRevision(change, newRevision, rollbackOf) {
740
- const oldRevisions = new Set(change.revisions === undefined || change.revisions.length === 0
741
- ? [undefined]
742
- : change.revisions.map((revInfo) => revInfo.revision));
743
- const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, oldRevisions, newRevision);
744
- const updatedNodes = (0, index_js_2.newTupleBTree)();
745
- for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {
746
- updatedNodes.set([replaceRevision(revision, oldRevisions, newRevision), id], this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision));
747
- }
748
- const updatedNodeToParent = (0, index_js_2.newTupleBTree)();
749
- for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {
750
- updatedNodeToParent.set([replaceRevision(revision, oldRevisions, newRevision), id], replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), oldRevisions, newRevision));
760
+ getRevisions(change) {
761
+ const aggregated = new Set();
762
+ for (const revInfo of change.revisions ?? [{ revision: undefined }]) {
763
+ aggregated.add(revInfo.revision);
751
764
  }
765
+ return aggregated;
766
+ }
767
+ changeRevision(change, replacer) {
768
+ const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, replacer);
769
+ const updatedNodes = replaceIdMapRevisions(change.nodeChanges, replacer, (nodeChangeset) => this.replaceNodeChangesetRevisions(nodeChangeset, replacer));
770
+ const updatedNodeToParent = replaceIdMapRevisions(change.nodeToParent, replacer, (fieldId) => replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), replacer));
752
771
  const updated = {
753
772
  ...change,
754
773
  fieldChanges: updatedFields,
755
774
  nodeChanges: updatedNodes,
756
775
  nodeToParent: updatedNodeToParent,
757
776
  // We've updated all references to old node IDs, so we no longer need an alias table.
758
- nodeAliases: (0, index_js_2.newTupleBTree)(),
759
- crossFieldKeys: replaceCrossFieldKeyTableRevisions(change.crossFieldKeys, oldRevisions, newRevision, change.nodeAliases),
777
+ nodeAliases: (0, index_js_3.newTupleBTree)(),
778
+ crossFieldKeys: replaceCrossFieldKeyTableRevisions(change.crossFieldKeys, replacer, change.nodeAliases),
760
779
  };
761
780
  if (change.builds !== undefined) {
762
- updated.builds = replaceIdMapRevisions(change.builds, oldRevisions, newRevision);
781
+ updated.builds = replaceIdMapRevisions(change.builds, replacer);
763
782
  }
764
783
  if (change.destroys !== undefined) {
765
- updated.destroys = replaceIdMapRevisions(change.destroys, oldRevisions, newRevision);
784
+ updated.destroys = replaceIdMapRevisions(change.destroys, replacer);
766
785
  }
767
786
  if (change.refreshers !== undefined) {
768
- updated.refreshers = replaceIdMapRevisions(change.refreshers, oldRevisions, newRevision);
769
- }
770
- if (newRevision !== undefined) {
771
- const revInfo = { revision: newRevision };
772
- if (rollbackOf !== undefined) {
773
- revInfo.rollbackOf = rollbackOf;
774
- }
775
- updated.revisions = [revInfo];
776
- }
777
- else {
778
- delete updated.revisions;
787
+ updated.refreshers = replaceIdMapRevisions(change.refreshers, replacer);
779
788
  }
789
+ updated.revisions = [{ revision: replacer.updatedRevision }];
780
790
  return updated;
781
791
  }
782
- replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision) {
792
+ replaceNodeChangesetRevisions(nodeChangeset, replacer) {
783
793
  const updated = { ...nodeChangeset };
784
794
  if (nodeChangeset.fieldChanges !== undefined) {
785
- updated.fieldChanges = this.replaceFieldMapRevisions(nodeChangeset.fieldChanges, oldRevisions, newRevision);
795
+ updated.fieldChanges = this.replaceFieldMapRevisions(nodeChangeset.fieldChanges, replacer);
786
796
  }
787
797
  return updated;
788
798
  }
789
- replaceFieldMapRevisions(fields, oldRevisions, newRevision) {
799
+ replaceFieldMapRevisions(fields, replacer) {
790
800
  const updatedFields = new Map();
791
801
  for (const [field, fieldChange] of fields) {
792
- const updatedFieldChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.replaceRevisions(fieldChange.change, oldRevisions, newRevision);
793
- updatedFields.set(field, { ...fieldChange, change: (0, index_js_2.brand)(updatedFieldChange) });
802
+ const updatedFieldChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.replaceRevisions(fieldChange.change, replacer);
803
+ updatedFields.set(field, { ...fieldChange, change: (0, index_js_3.brand)(updatedFieldChange) });
794
804
  }
795
805
  return updatedFields;
796
806
  }
@@ -815,12 +825,12 @@ class ModularChangeFamily {
815
825
  }
816
826
  }
817
827
  }
818
- buildEditor(changeReceiver) {
819
- return new ModularEditBuilder(this, this.fieldKinds, changeReceiver);
828
+ buildEditor(mintRevisionTag, changeReceiver) {
829
+ return new ModularEditBuilder(this, this.fieldKinds, changeReceiver, this.codecOptions);
820
830
  }
821
831
  createEmptyFieldChange(fieldKind) {
822
832
  const emptyChange = getChangeHandler(this.fieldKinds, fieldKind).createEmpty();
823
- return { fieldKind, change: (0, index_js_2.brand)(emptyChange) };
833
+ return { fieldKind, change: (0, index_js_3.brand)(emptyChange) };
824
834
  }
825
835
  validateChangeset(change) {
826
836
  let numNodes = this.validateFieldChanges(change, change.fieldChanges, undefined);
@@ -872,7 +882,7 @@ class ModularChangeFamily {
872
882
  ...change,
873
883
  crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
874
884
  fieldChanges: this.muteFieldChanges(change.fieldChanges),
875
- nodeChanges: (0, index_js_2.brand)(change.nodeChanges.mapValues((v) => this.muteNodeChange(v))),
885
+ nodeChanges: (0, index_js_3.brand)(change.nodeChanges.mapValues((v) => this.muteNodeChange(v))),
876
886
  };
877
887
  return muted;
878
888
  }
@@ -892,26 +902,22 @@ class ModularChangeFamily {
892
902
  const handler = getChangeHandler(this.fieldKinds, change.fieldKind);
893
903
  return {
894
904
  fieldKind: change.fieldKind,
895
- change: (0, index_js_2.brand)(handler.rebaser.mute(change.change)),
905
+ change: (0, index_js_3.brand)(handler.rebaser.mute(change.change)),
896
906
  };
897
907
  }
898
908
  }
899
909
  exports.ModularChangeFamily = ModularChangeFamily;
900
910
  ModularChangeFamily.emptyChange = makeModularChangeset();
901
- function replaceCrossFieldKeyTableRevisions(table, oldRevisions, newRevision, nodeAliases) {
911
+ function replaceCrossFieldKeyTableRevisions(table, replacer, nodeAliases) {
902
912
  const updated = (0, modularChangeTypes_js_1.newCrossFieldKeyTable)();
903
913
  for (const entry of table.entries()) {
904
914
  const key = entry.start;
905
- const updatedKey = {
906
- target: key.target,
907
- revision: replaceRevision(key.revision, oldRevisions, newRevision),
908
- localId: key.localId,
909
- };
915
+ const updatedKey = replacer.getUpdatedAtomId(key);
910
916
  const field = entry.value;
911
917
  const normalizedFieldId = normalizeFieldId(field, nodeAliases);
912
- const updatedNodeId = normalizedFieldId.nodeId !== undefined
913
- ? (0, index_js_1.replaceAtomRevisions)(normalizedFieldId.nodeId, oldRevisions, newRevision)
914
- : undefined;
918
+ const updatedNodeId = normalizedFieldId.nodeId === undefined
919
+ ? undefined
920
+ : replacer.getUpdatedAtomId(normalizedFieldId.nodeId);
915
921
  const updatedValue = {
916
922
  ...normalizedFieldId,
917
923
  nodeId: updatedNodeId,
@@ -920,13 +926,11 @@ function replaceCrossFieldKeyTableRevisions(table, oldRevisions, newRevision, no
920
926
  }
921
927
  return updated;
922
928
  }
923
- function replaceRevision(revision, oldRevisions, newRevision) {
924
- return oldRevisions.has(revision) ? newRevision : revision;
925
- }
926
- function replaceIdMapRevisions(map, oldRevisions, newRevision) {
927
- const updated = (0, index_js_2.newTupleBTree)();
928
- for (const [[revision, id], value] of map.entries()) {
929
- updated.set([replaceRevision(revision, oldRevisions, newRevision), id], value);
929
+ function replaceIdMapRevisions(map, replacer, valueMapper = (value) => value) {
930
+ const updated = (0, index_js_3.newTupleBTree)();
931
+ for (const [[revision, localId], value] of map.entries()) {
932
+ const newAtom = replacer.getUpdatedAtomId({ revision, localId });
933
+ updated.set([newAtom.revision, newAtom.localId], valueMapper(value));
930
934
  }
931
935
  return updated;
932
936
  }
@@ -941,9 +945,9 @@ function composeBuildsDestroysAndRefreshers(change1, change2) {
941
945
  // Note that it would in principle be possible to adopt the later build and exclude from the
942
946
  // composition all the changes already reflected on the tree, but that is not something we
943
947
  // care to support at this time.
944
- const allBuilds = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.builds ?? (0, index_js_2.newTupleBTree)(), change2.builds ?? (0, index_js_2.newTupleBTree)(), true));
945
- const allDestroys = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.destroys ?? (0, index_js_2.newTupleBTree)(), change2.destroys ?? (0, index_js_2.newTupleBTree)()));
946
- const allRefreshers = (0, index_js_2.brand)((0, index_js_2.mergeTupleBTrees)(change1.refreshers ?? (0, index_js_2.newTupleBTree)(), change2.refreshers ?? (0, index_js_2.newTupleBTree)(), true));
948
+ const allBuilds = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.builds ?? (0, index_js_3.newTupleBTree)(), change2.builds ?? (0, index_js_3.newTupleBTree)(), true));
949
+ const allDestroys = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.destroys ?? (0, index_js_3.newTupleBTree)(), change2.destroys ?? (0, index_js_3.newTupleBTree)()));
950
+ const allRefreshers = (0, index_js_3.brand)((0, index_js_3.mergeTupleBTrees)(change1.refreshers ?? (0, index_js_3.newTupleBTree)(), change2.refreshers ?? (0, index_js_3.newTupleBTree)(), true));
947
951
  if (change1.destroys !== undefined && change2.builds !== undefined) {
948
952
  for (const [key, chunk] of change2.builds.entries()) {
949
953
  const destroyCount = change1.destroys.get(key);
@@ -968,7 +972,7 @@ function composeBuildsDestroysAndRefreshers(change1, change2) {
968
972
  }
969
973
  function invertBuilds(builds) {
970
974
  if (builds !== undefined) {
971
- return (0, index_js_2.brand)(builds.mapValues((chunk) => chunk.topLevelLength));
975
+ return (0, index_js_3.brand)(builds.mapValues((chunk) => chunk.topLevelLength));
972
976
  }
973
977
  return undefined;
974
978
  }
@@ -1015,11 +1019,11 @@ function* relevantRemovedRootsFromFields(change, nodeChanges, fieldKinds) {
1015
1019
  * corresponding build or refresher.
1016
1020
  */
1017
1021
  function updateRefreshers(change, getDetachedNode, removedRoots, requireRefreshers = true) {
1018
- const refreshers = (0, index_js_2.newTupleBTree)();
1022
+ const refreshers = (0, index_js_3.newTupleBTree)();
1019
1023
  const chunkLengths = new Map();
1020
1024
  if (change.builds !== undefined) {
1021
1025
  for (const [[revision, id], chunk] of change.builds.entries()) {
1022
- const lengthTree = (0, index_js_2.getOrCreate)(chunkLengths, revision, () => new sorted_btree_es6_1.BTree());
1026
+ const lengthTree = (0, index_js_3.getOrCreate)(chunkLengths, revision, () => new sorted_btree_es6_1.BTree());
1023
1027
  lengthTree.set(id, chunk.topLevelLength);
1024
1028
  }
1025
1029
  }
@@ -1043,16 +1047,16 @@ function updateRefreshers(change, getDetachedNode, removedRoots, requireRefreshe
1043
1047
  (0, internal_1.assert)(!requireRefreshers, 0x8cd /* detached node should exist */);
1044
1048
  }
1045
1049
  else {
1046
- refreshers.set([root.major, (0, index_js_2.brand)(root.minor)], node);
1050
+ refreshers.set([root.major, (0, index_js_3.brand)(root.minor)], node);
1047
1051
  }
1048
1052
  }
1049
- const { fieldChanges, nodeChanges, maxId, revisions, constraintViolationCount, constraintViolationCountOnRevert, builds, destroys, } = change;
1053
+ const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys, maxId, revisions, constraintViolationCount, constraintViolationCountOnRevert, builds, destroys, } = change;
1050
1054
  return makeModularChangeset({
1051
1055
  fieldChanges,
1052
1056
  nodeChanges,
1053
- nodeToParent: change.nodeToParent,
1054
- nodeAliases: change.nodeAliases,
1055
- crossFieldKeys: change.crossFieldKeys,
1057
+ nodeToParent,
1058
+ nodeAliases,
1059
+ crossFieldKeys,
1056
1060
  maxId: maxId,
1057
1061
  revisions,
1058
1062
  constraintViolationCount,
@@ -1095,7 +1099,7 @@ function intoDelta(taggedChange, fieldKinds) {
1095
1099
  const destroys = [];
1096
1100
  for (const [[major, minor], count] of change.destroys.entries()) {
1097
1101
  destroys.push({
1098
- id: (0, index_js_1.makeDetachedNodeId)(major, minor),
1102
+ id: (0, index_js_2.makeDetachedNodeId)(major, minor),
1099
1103
  count,
1100
1104
  });
1101
1105
  }
@@ -1113,7 +1117,7 @@ function copyDetachedNodes(detachedNodes) {
1113
1117
  if (chunk.topLevelLength > 0) {
1114
1118
  chunk.referenceAdded();
1115
1119
  copiedDetachedNodes.push({
1116
- id: (0, index_js_1.makeDetachedNodeId)(major, minor),
1120
+ id: (0, index_js_2.makeDetachedNodeId)(major, minor),
1117
1121
  trees: chunk,
1118
1122
  });
1119
1123
  }
@@ -1166,7 +1170,7 @@ function rebaseRevisionMetadataFromInfo(revInfos, revisionToRebase, baseRevision
1166
1170
  }
1167
1171
  const getBaseRevisions = () => filteredRevisions;
1168
1172
  return {
1169
- ...(0, index_js_1.revisionMetadataSourceFromInfo)(revInfos),
1173
+ ...(0, index_js_2.revisionMetadataSourceFromInfo)(revInfos),
1170
1174
  getRevisionToRebase: () => revisionToRebase,
1171
1175
  getBaseRevisions,
1172
1176
  };
@@ -1197,22 +1201,22 @@ function newComposeTable(baseChange, newChange, composedNodeToParent) {
1197
1201
  newChange,
1198
1202
  fieldToContext: new Map(),
1199
1203
  newFieldToBaseField: new Map(),
1200
- newToBaseNodeId: (0, index_js_2.newTupleBTree)(),
1204
+ newToBaseNodeId: (0, index_js_3.newTupleBTree)(),
1201
1205
  composedNodes: new Set(),
1202
1206
  composedNodeToParent,
1203
1207
  pendingCompositions: {
1204
1208
  nodeIdsToCompose: [],
1205
- affectedBaseFields: (0, index_js_2.newTupleBTree)(),
1206
- affectedNewFields: (0, index_js_2.newTupleBTree)(),
1209
+ affectedBaseFields: (0, index_js_3.newTupleBTree)(),
1210
+ affectedNewFields: (0, index_js_3.newTupleBTree)(),
1207
1211
  },
1208
1212
  };
1209
1213
  }
1210
1214
  function newCrossFieldTable() {
1211
1215
  return {
1212
- srcTable: (0, index_js_1.newChangeAtomIdRangeMap)(),
1213
- dstTable: (0, index_js_1.newChangeAtomIdRangeMap)(),
1214
- srcDependents: (0, index_js_1.newChangeAtomIdRangeMap)(),
1215
- dstDependents: (0, index_js_1.newChangeAtomIdRangeMap)(),
1216
+ srcTable: (0, index_js_2.newChangeAtomIdRangeMap)(),
1217
+ dstTable: (0, index_js_2.newChangeAtomIdRangeMap)(),
1218
+ srcDependents: (0, index_js_2.newChangeAtomIdRangeMap)(),
1219
+ dstDependents: (0, index_js_2.newChangeAtomIdRangeMap)(),
1216
1220
  invalidatedFields: new Set(),
1217
1221
  };
1218
1222
  }
@@ -1236,7 +1240,7 @@ class CrossFieldManagerI {
1236
1240
  if (dependentEntry.value !== undefined) {
1237
1241
  this.crossFieldTable.invalidatedFields.add(dependentEntry.value);
1238
1242
  }
1239
- firstId = (0, index_js_2.brand)(firstId + dependentEntry.length);
1243
+ firstId = (0, index_js_3.brand)(firstId + dependentEntry.length);
1240
1244
  }
1241
1245
  }
1242
1246
  (0, crossFieldQueries_js_1.setInCrossFieldMap)(this.getMap(target), revision, id, count, newValue);
@@ -1267,7 +1271,7 @@ class InvertManager extends CrossFieldManagerI {
1267
1271
  this.fieldId = fieldId;
1268
1272
  }
1269
1273
  onMoveIn(id) {
1270
- setInChangeAtomIdMap(this.table.invertedNodeToParent, id, this.fieldId);
1274
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(this.table.invertedNodeToParent, id, this.fieldId);
1271
1275
  }
1272
1276
  moveKey(target, revision, id, count) {
1273
1277
  (0, internal_1.assert)(false, 0x9c5 /* Keys should not be moved manually during invert */);
@@ -1302,7 +1306,7 @@ class RebaseManager extends CrossFieldManagerI {
1302
1306
  super.set(target, revision, id, count, newValue, invalidateDependents);
1303
1307
  }
1304
1308
  onMoveIn(id) {
1305
- setInChangeAtomIdMap(this.table.rebasedNodeToParent, id, this.fieldId);
1309
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(this.table.rebasedNodeToParent, id, this.fieldId);
1306
1310
  }
1307
1311
  moveKey(target, revision, id, count) {
1308
1312
  this.table.rebasedCrossFieldKeys.set({ target, revision, localId: id }, count, this.fieldId);
@@ -1344,7 +1348,7 @@ class ComposeManager extends CrossFieldManagerI {
1344
1348
  super.set(target, revision, id, count, newValue, invalidateDependents);
1345
1349
  }
1346
1350
  onMoveIn(id) {
1347
- setInChangeAtomIdMap(this.table.composedNodeToParent, id, this.fieldId);
1351
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(this.table.composedNodeToParent, id, this.fieldId);
1348
1352
  }
1349
1353
  moveKey(target, revision, id, count) {
1350
1354
  throw new Error("Moving cross-field keys during compose is currently unsupported");
@@ -1358,16 +1362,16 @@ function makeModularChangeset(props = {
1358
1362
  }) {
1359
1363
  const changeset = {
1360
1364
  fieldChanges: props.fieldChanges ?? new Map(),
1361
- nodeChanges: props.nodeChanges ?? (0, index_js_2.newTupleBTree)(),
1362
- nodeToParent: props.nodeToParent ?? (0, index_js_2.newTupleBTree)(),
1363
- nodeAliases: props.nodeAliases ?? (0, index_js_2.newTupleBTree)(),
1365
+ nodeChanges: props.nodeChanges ?? (0, index_js_3.newTupleBTree)(),
1366
+ nodeToParent: props.nodeToParent ?? (0, index_js_3.newTupleBTree)(),
1367
+ nodeAliases: props.nodeAliases ?? (0, index_js_3.newTupleBTree)(),
1364
1368
  crossFieldKeys: props.crossFieldKeys ?? (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
1365
1369
  };
1366
1370
  if (props.revisions !== undefined && props.revisions.length > 0) {
1367
1371
  changeset.revisions = props.revisions;
1368
1372
  }
1369
1373
  if (props.maxId >= 0) {
1370
- changeset.maxId = (0, index_js_2.brand)(props.maxId);
1374
+ changeset.maxId = (0, index_js_3.brand)(props.maxId);
1371
1375
  }
1372
1376
  if (props.constraintViolationCount !== undefined && props.constraintViolationCount > 0) {
1373
1377
  changeset.constraintViolationCount = props.constraintViolationCount;
@@ -1376,6 +1380,12 @@ function makeModularChangeset(props = {
1376
1380
  props.constraintViolationCountOnRevert > 0) {
1377
1381
  changeset.constraintViolationCountOnRevert = props.constraintViolationCountOnRevert;
1378
1382
  }
1383
+ if (props.noChangeConstraint !== undefined) {
1384
+ changeset.noChangeConstraint = props.noChangeConstraint;
1385
+ }
1386
+ if (props.noChangeConstraintOnRevert !== undefined) {
1387
+ changeset.noChangeConstraintOnRevert = props.noChangeConstraintOnRevert;
1388
+ }
1379
1389
  if (props.builds !== undefined && props.builds.size > 0) {
1380
1390
  changeset.builds = props.builds;
1381
1391
  }
@@ -1387,24 +1397,25 @@ function makeModularChangeset(props = {
1387
1397
  }
1388
1398
  return changeset;
1389
1399
  }
1390
- class ModularEditBuilder extends index_js_1.EditBuilder {
1391
- constructor(family, fieldKinds, changeReceiver) {
1400
+ class ModularEditBuilder extends index_js_2.EditBuilder {
1401
+ constructor(family, fieldKinds, changeReceiver, codecOptions) {
1392
1402
  super(family, changeReceiver);
1393
1403
  this.fieldKinds = fieldKinds;
1394
1404
  this.transactionDepth = 0;
1395
- this.idAllocator = (0, index_js_2.idAllocatorFromMaxId)();
1405
+ this.idAllocator = (0, index_js_3.idAllocatorFromMaxId)();
1406
+ this.codecOptions = codecOptions;
1396
1407
  }
1397
1408
  enterTransaction() {
1398
1409
  this.transactionDepth += 1;
1399
1410
  if (this.transactionDepth === 1) {
1400
- this.idAllocator = (0, index_js_2.idAllocatorFromMaxId)();
1411
+ this.idAllocator = (0, index_js_3.idAllocatorFromMaxId)();
1401
1412
  }
1402
1413
  }
1403
1414
  exitTransaction() {
1404
1415
  (0, internal_1.assert)(this.transactionDepth > 0, 0x5b9 /* Cannot exit inexistent transaction */);
1405
1416
  this.transactionDepth -= 1;
1406
1417
  if (this.transactionDepth === 0) {
1407
- this.idAllocator = (0, index_js_2.idAllocatorFromMaxId)();
1418
+ this.idAllocator = (0, index_js_3.idAllocatorFromMaxId)();
1408
1419
  }
1409
1420
  }
1410
1421
  /**
@@ -1422,7 +1433,7 @@ class ModularEditBuilder extends index_js_1.EditBuilder {
1422
1433
  }
1423
1434
  // This content will be added to a GlobalEditDescription whose lifetime exceeds the scope of this function.
1424
1435
  content.referenceAdded();
1425
- const builds = (0, index_js_2.newTupleBTree)();
1436
+ const builds = (0, index_js_3.newTupleBTree)();
1426
1437
  builds.set([revision, firstId], content);
1427
1438
  return {
1428
1439
  type: "global",
@@ -1442,24 +1453,24 @@ class ModularEditBuilder extends index_js_1.EditBuilder {
1442
1453
  const modularChange = buildModularChangesetFromField({
1443
1454
  path: field,
1444
1455
  fieldChange: { fieldKind, change },
1445
- nodeChanges: (0, index_js_2.newTupleBTree)(),
1446
- nodeToParent: (0, index_js_2.newTupleBTree)(),
1456
+ nodeChanges: (0, index_js_3.newTupleBTree)(),
1457
+ nodeToParent: (0, index_js_3.newTupleBTree)(),
1447
1458
  crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
1448
1459
  idAllocator: this.idAllocator,
1449
1460
  localCrossFieldKeys,
1450
1461
  revision,
1451
1462
  });
1452
- this.applyChange((0, index_js_1.tagChange)(modularChange, revision));
1463
+ this.applyChange((0, index_js_2.tagChange)(modularChange, revision));
1453
1464
  }
1454
1465
  submitChanges(changes, revision) {
1455
1466
  const modularChange = this.buildChanges(changes);
1456
- this.applyChange((0, index_js_1.tagChange)(modularChange, revision));
1467
+ this.applyChange((0, index_js_2.tagChange)(modularChange, revision));
1457
1468
  }
1458
1469
  buildChanges(changes) {
1459
1470
  const revisions = new Set();
1460
1471
  const changeMaps = changes.map((change) => {
1461
1472
  revisions.add(change.revision);
1462
- return (0, index_js_1.makeAnonChange)(change.type === "global"
1473
+ return (0, index_js_2.makeAnonChange)(change.type === "global"
1463
1474
  ? makeModularChangeset({
1464
1475
  maxId: this.idAllocator.getMaxId(),
1465
1476
  builds: change.builds,
@@ -1471,37 +1482,37 @@ class ModularEditBuilder extends index_js_1.EditBuilder {
1471
1482
  fieldKind: change.fieldKind,
1472
1483
  change: change.change,
1473
1484
  },
1474
- nodeChanges: (0, index_js_2.newTupleBTree)(),
1475
- nodeToParent: (0, index_js_2.newTupleBTree)(),
1485
+ nodeChanges: (0, index_js_3.newTupleBTree)(),
1486
+ nodeToParent: (0, index_js_3.newTupleBTree)(),
1476
1487
  crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
1477
1488
  idAllocator: this.idAllocator,
1478
1489
  localCrossFieldKeys: getChangeHandler(this.fieldKinds, change.fieldKind).getCrossFieldKeys(change.change),
1479
1490
  revision: change.revision,
1480
1491
  }));
1481
1492
  });
1482
- const revInfo = Array.from(revisions).map((revision) => ({ revision }));
1493
+ const revInfo = [...revisions].map((revision) => ({ revision }));
1483
1494
  const composedChange = {
1484
1495
  ...this.changeFamily.rebaser.compose(changeMaps),
1485
1496
  revisions: revInfo,
1486
1497
  };
1487
- const maxId = (0, index_js_2.brand)(this.idAllocator.getMaxId());
1498
+ const maxId = (0, index_js_3.brand)(this.idAllocator.getMaxId());
1488
1499
  if (maxId >= 0) {
1489
1500
  composedChange.maxId = maxId;
1490
1501
  }
1491
1502
  return composedChange;
1492
1503
  }
1493
1504
  generateId(count) {
1494
- return (0, index_js_2.brand)(this.idAllocator.allocate(count));
1505
+ return (0, index_js_3.brand)(this.idAllocator.allocate(count));
1495
1506
  }
1496
1507
  addNodeExistsConstraint(path, revision) {
1497
1508
  const nodeChange = {
1498
1509
  nodeExistsConstraint: { violated: false },
1499
1510
  };
1500
- this.applyChange((0, index_js_1.tagChange)(buildModularChangesetFromNode({
1511
+ this.applyChange((0, index_js_2.tagChange)(buildModularChangesetFromNode({
1501
1512
  path,
1502
1513
  nodeChange,
1503
- nodeChanges: (0, index_js_2.newTupleBTree)(),
1504
- nodeToParent: (0, index_js_2.newTupleBTree)(),
1514
+ nodeChanges: (0, index_js_3.newTupleBTree)(),
1515
+ nodeToParent: (0, index_js_3.newTupleBTree)(),
1505
1516
  crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
1506
1517
  idAllocator: this.idAllocator,
1507
1518
  revision,
@@ -1511,27 +1522,47 @@ class ModularEditBuilder extends index_js_1.EditBuilder {
1511
1522
  const nodeChange = {
1512
1523
  nodeExistsConstraintOnRevert: { violated: false },
1513
1524
  };
1514
- this.applyChange((0, index_js_1.tagChange)(buildModularChangesetFromNode({
1525
+ this.applyChange((0, index_js_2.tagChange)(buildModularChangesetFromNode({
1515
1526
  path,
1516
1527
  nodeChange,
1517
- nodeChanges: (0, index_js_2.newTupleBTree)(),
1518
- nodeToParent: (0, index_js_2.newTupleBTree)(),
1528
+ nodeChanges: (0, index_js_3.newTupleBTree)(),
1529
+ nodeToParent: (0, index_js_3.newTupleBTree)(),
1519
1530
  crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
1520
1531
  idAllocator: this.idAllocator,
1521
1532
  revision,
1522
1533
  }), revision));
1523
1534
  }
1535
+ addNoChangeConstraint(revision) {
1536
+ if ((0, semver_ts_1.lt)(this.codecOptions.minVersionForCollab, index_js_1.FluidClientVersion.v2_80)) {
1537
+ throw new internal_2.UsageError(`No change constraints require min client version of at least ${index_js_1.FluidClientVersion.v2_80}`);
1538
+ }
1539
+ const changeset = makeModularChangeset({
1540
+ maxId: -1,
1541
+ noChangeConstraint: { violated: false },
1542
+ });
1543
+ this.applyChange((0, index_js_2.tagChange)(changeset, revision));
1544
+ }
1545
+ addNoChangeConstraintOnRevert(revision) {
1546
+ if ((0, semver_ts_1.lt)(this.codecOptions.minVersionForCollab, index_js_1.FluidClientVersion.v2_80)) {
1547
+ throw new internal_2.UsageError(`No change constraints require min client version of at least ${index_js_1.FluidClientVersion.v2_80}`);
1548
+ }
1549
+ const changeset = makeModularChangeset({
1550
+ maxId: -1,
1551
+ noChangeConstraintOnRevert: { violated: false },
1552
+ });
1553
+ this.applyChange((0, index_js_2.tagChange)(changeset, revision));
1554
+ }
1524
1555
  }
1525
1556
  exports.ModularEditBuilder = ModularEditBuilder;
1526
1557
  function buildModularChangesetFromField(props) {
1527
- const { path, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator = (0, index_js_2.idAllocatorFromMaxId)(), localCrossFieldKeys = [], childId, revision, } = props;
1558
+ const { path, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator = (0, index_js_3.idAllocatorFromMaxId)(), localCrossFieldKeys = [], childId, revision, } = props;
1528
1559
  const fieldChanges = new Map([[path.field, fieldChange]]);
1529
1560
  if (path.parent === undefined) {
1530
1561
  for (const { key, count } of localCrossFieldKeys) {
1531
1562
  crossFieldKeys.set(key, count, { nodeId: undefined, field: path.field });
1532
1563
  }
1533
1564
  if (childId !== undefined) {
1534
- setInChangeAtomIdMap(nodeToParent, childId, {
1565
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeToParent, childId, {
1535
1566
  nodeId: undefined,
1536
1567
  field: path.field,
1537
1568
  });
@@ -1548,12 +1579,12 @@ function buildModularChangesetFromField(props) {
1548
1579
  const nodeChangeset = {
1549
1580
  fieldChanges,
1550
1581
  };
1551
- const parentId = { localId: (0, index_js_2.brand)(idAllocator.allocate()), revision };
1582
+ const parentId = { localId: (0, index_js_3.brand)(idAllocator.allocate()), revision };
1552
1583
  for (const { key, count } of localCrossFieldKeys) {
1553
1584
  crossFieldKeys.set(key, count, { nodeId: parentId, field: path.field });
1554
1585
  }
1555
1586
  if (childId !== undefined) {
1556
- setInChangeAtomIdMap(nodeToParent, childId, {
1587
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeToParent, childId, {
1557
1588
  nodeId: parentId,
1558
1589
  field: path.field,
1559
1590
  });
@@ -1570,8 +1601,8 @@ function buildModularChangesetFromField(props) {
1570
1601
  });
1571
1602
  }
1572
1603
  function buildModularChangesetFromNode(props) {
1573
- const { path, nodeId = { localId: (0, index_js_2.brand)(props.idAllocator.allocate()), revision: props.revision }, } = props;
1574
- setInChangeAtomIdMap(props.nodeChanges, nodeId, props.nodeChange);
1604
+ const { path, idAllocator, revision, nodeChanges, nodeChange, nodeId = { localId: (0, index_js_3.brand)(idAllocator.allocate()), revision }, } = props;
1605
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeChanges, nodeId, nodeChange);
1575
1606
  const fieldChangeset = genericFieldKind_js_1.genericFieldKind.changeHandler.editor.buildChildChanges([
1576
1607
  [path.parentIndex, nodeId],
1577
1608
  ]);
@@ -1590,15 +1621,20 @@ function buildModularChangesetFromNode(props) {
1590
1621
  function getRevInfoFromTaggedChanges(changes) {
1591
1622
  let maxId = -1;
1592
1623
  const revInfos = [];
1624
+ const revisions = new Set();
1593
1625
  for (const taggedChange of changes) {
1594
1626
  const change = taggedChange.change;
1595
1627
  maxId = Math.max(change.maxId ?? -1, maxId);
1596
- revInfos.push(...revisionInfoFromTaggedChange(taggedChange));
1628
+ const infosToAdd = revisionInfoFromTaggedChange(taggedChange);
1629
+ for (const info of infosToAdd) {
1630
+ if (!revisions.has(info.revision)) {
1631
+ revisions.add(info.revision);
1632
+ revInfos.push(info);
1633
+ }
1634
+ }
1597
1635
  }
1598
- const revisions = new Set();
1599
1636
  const rolledBackRevisions = [];
1600
1637
  for (const info of revInfos) {
1601
- revisions.add(info.revision);
1602
1638
  if (info.rollbackOf !== undefined) {
1603
1639
  rolledBackRevisions.push(info.rollbackOf);
1604
1640
  }
@@ -1609,7 +1645,7 @@ function getRevInfoFromTaggedChanges(changes) {
1609
1645
  revInfos.push({ revision });
1610
1646
  }
1611
1647
  }
1612
- return { maxId: (0, index_js_2.brand)(maxId), revInfos };
1648
+ return { maxId: (0, index_js_3.brand)(maxId), revInfos };
1613
1649
  }
1614
1650
  function revisionInfoFromTaggedChange(taggedChange) {
1615
1651
  const revInfos = [];
@@ -1644,15 +1680,15 @@ function rebasedFieldIdFromBaseId(table, baseId) {
1644
1680
  return { ...baseId, nodeId: rebasedNodeIdFromBaseNodeId(table, baseId.nodeId) };
1645
1681
  }
1646
1682
  function rebasedNodeIdFromBaseNodeId(table, baseId) {
1647
- return getFromChangeAtomIdMap(table.baseToRebasedNodeId, baseId) ?? baseId;
1683
+ return (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(table.baseToRebasedNodeId, baseId) ?? baseId;
1648
1684
  }
1649
1685
  function nodeChangeFromId(nodes, id) {
1650
- const node = getFromChangeAtomIdMap(nodes, id);
1686
+ const node = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(nodes, id);
1651
1687
  (0, internal_1.assert)(node !== undefined, 0x9ca /* Unknown node ID */);
1652
1688
  return node;
1653
1689
  }
1654
1690
  function fieldIdFromFieldIdKey([revision, localId, field]) {
1655
- const nodeId = localId !== undefined ? { revision, localId } : undefined;
1691
+ const nodeId = localId === undefined ? undefined : { revision, localId };
1656
1692
  return { nodeId, field };
1657
1693
  }
1658
1694
  function cloneNodeChangeset(nodeChangeset) {
@@ -1661,17 +1697,17 @@ function cloneNodeChangeset(nodeChangeset) {
1661
1697
  }
1662
1698
  return { ...nodeChangeset };
1663
1699
  }
1664
- function replaceFieldIdRevision(fieldId, oldRevisions, newRevision) {
1700
+ function replaceFieldIdRevision(fieldId, replacer) {
1665
1701
  if (fieldId.nodeId === undefined) {
1666
1702
  return fieldId;
1667
1703
  }
1668
1704
  return {
1669
1705
  ...fieldId,
1670
- nodeId: (0, index_js_1.replaceAtomRevisions)(fieldId.nodeId, oldRevisions, newRevision),
1706
+ nodeId: replacer.getUpdatedAtomId(fieldId.nodeId),
1671
1707
  };
1672
1708
  }
1673
1709
  function getParentFieldId(changeset, nodeId) {
1674
- const parentId = getFromChangeAtomIdMap(changeset.nodeToParent, nodeId);
1710
+ const parentId = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(changeset.nodeToParent, nodeId);
1675
1711
  (0, internal_1.assert)(parentId !== undefined, 0x9cb /* Parent field should be defined */);
1676
1712
  return normalizeFieldId(parentId, changeset.nodeAliases);
1677
1713
  }
@@ -1683,9 +1719,9 @@ function getFieldsForCrossFieldKey(changeset, key, count) {
1683
1719
  }
1684
1720
  // This is only exported for use in test utilities.
1685
1721
  function normalizeFieldId(fieldId, nodeAliases) {
1686
- return fieldId.nodeId !== undefined
1687
- ? { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) }
1688
- : fieldId;
1722
+ return fieldId.nodeId === undefined
1723
+ ? fieldId
1724
+ : { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) };
1689
1725
  }
1690
1726
  exports.normalizeFieldId = normalizeFieldId;
1691
1727
  /**
@@ -1695,7 +1731,7 @@ function normalizeNodeId(nodeId, nodeAliases) {
1695
1731
  let currentId = nodeId;
1696
1732
  // eslint-disable-next-line no-constant-condition
1697
1733
  while (true) {
1698
- const dealiased = getFromChangeAtomIdMap(nodeAliases, currentId);
1734
+ const dealiased = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(nodeAliases, currentId);
1699
1735
  if (dealiased === undefined) {
1700
1736
  return currentId;
1701
1737
  }
@@ -1705,13 +1741,7 @@ function normalizeNodeId(nodeId, nodeAliases) {
1705
1741
  function hasConflicts(change) {
1706
1742
  return (change.constraintViolationCount ?? 0) > 0;
1707
1743
  }
1708
- function getFromChangeAtomIdMap(map, id) {
1709
- return map.get([id.revision, id.localId]);
1710
- }
1711
- function setInChangeAtomIdMap(map, id, value) {
1712
- map.set([id.revision, id.localId], value);
1713
- }
1714
1744
  function areEqualFieldIds(a, b) {
1715
- return (0, index_js_1.areEqualChangeAtomIdOpts)(a.nodeId, b.nodeId) && a.field === b.field;
1745
+ return (0, index_js_2.areEqualChangeAtomIdOpts)(a.nodeId, b.nodeId) && a.field === b.field;
1716
1746
  }
1717
1747
  //# sourceMappingURL=modularChangeFamily.js.map