@fluidframework/tree 2.80.0 → 2.81.0-374083

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (914) hide show
  1. package/api-report/tree.alpha.api.md +43 -7
  2. package/dist/alpha.d.ts +5 -0
  3. package/dist/core/change-family/changeFamily.d.ts +4 -1
  4. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  5. package/dist/core/change-family/changeFamily.js.map +1 -1
  6. package/dist/core/change-family/index.d.ts +1 -1
  7. package/dist/core/change-family/index.d.ts.map +1 -1
  8. package/dist/core/change-family/index.js.map +1 -1
  9. package/dist/core/index.d.ts +3 -3
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +6 -4
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/rebase/changeRebaser.d.ts +6 -1
  14. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  15. package/dist/core/rebase/changeRebaser.js.map +1 -1
  16. package/dist/core/rebase/index.d.ts +1 -1
  17. package/dist/core/rebase/index.d.ts.map +1 -1
  18. package/dist/core/rebase/index.js +2 -1
  19. package/dist/core/rebase/index.js.map +1 -1
  20. package/dist/core/rebase/types.d.ts +46 -8
  21. package/dist/core/rebase/types.d.ts.map +1 -1
  22. package/dist/core/rebase/types.js +5 -1
  23. package/dist/core/rebase/types.js.map +1 -1
  24. package/dist/core/rebase/utils.d.ts.map +1 -1
  25. package/dist/core/rebase/utils.js +30 -8
  26. package/dist/core/rebase/utils.js.map +1 -1
  27. package/dist/core/tree/anchorSet.js +1 -0
  28. package/dist/core/tree/anchorSet.js.map +1 -1
  29. package/dist/core/tree/detachedFieldIndex.d.ts +6 -0
  30. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  31. package/dist/core/tree/detachedFieldIndex.js +9 -0
  32. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  33. package/dist/core/tree/index.d.ts +1 -1
  34. package/dist/core/tree/index.d.ts.map +1 -1
  35. package/dist/core/tree/index.js +4 -3
  36. package/dist/core/tree/index.js.map +1 -1
  37. package/dist/core/tree/pathTree.d.ts +11 -3
  38. package/dist/core/tree/pathTree.d.ts.map +1 -1
  39. package/dist/core/tree/pathTree.js +14 -2
  40. package/dist/core/tree/pathTree.js.map +1 -1
  41. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  42. package/dist/core/tree/visitDelta.js +3 -2
  43. package/dist/core/tree/visitDelta.js.map +1 -1
  44. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  45. package/dist/core/tree/visitorUtils.js +58 -18
  46. package/dist/core/tree/visitorUtils.js.map +1 -1
  47. package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -4
  48. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  49. package/dist/feature-libraries/changeAtomIdBTree.js +16 -2
  50. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  52. package/dist/feature-libraries/chunked-forest/basicChunk.js +7 -0
  53. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  54. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/chunkTree.js +4 -1
  56. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -1
  59. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  60. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
  61. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  62. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
  63. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  64. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +238 -69
  65. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  66. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  67. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  68. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -2
  69. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  70. package/dist/feature-libraries/default-schema/index.d.ts +2 -1
  71. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  72. package/dist/feature-libraries/default-schema/index.js +5 -2
  73. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  74. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +38 -0
  75. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  76. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +132 -0
  77. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  78. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  79. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  80. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  81. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  82. package/dist/feature-libraries/deltaUtils.d.ts +1 -0
  83. package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
  84. package/dist/feature-libraries/deltaUtils.js +6 -1
  85. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  86. package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
  87. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  88. package/dist/feature-libraries/flex-tree/context.js +6 -0
  89. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  90. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  91. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  92. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  93. package/dist/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  94. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  95. package/dist/feature-libraries/flex-tree/lazyField.js +40 -9
  96. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  97. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  98. package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -1
  99. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  100. package/dist/feature-libraries/index.d.ts +3 -3
  101. package/dist/feature-libraries/index.d.ts.map +1 -1
  102. package/dist/feature-libraries/index.js +8 -3
  103. package/dist/feature-libraries/index.js.map +1 -1
  104. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  105. package/dist/feature-libraries/mapTreeCursor.js +1 -0
  106. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  107. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  108. package/dist/feature-libraries/mitigatedChangeFamily.js +2 -2
  109. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  110. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  111. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  112. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +4 -7
  113. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  114. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -51
  115. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  116. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  117. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  118. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -9
  119. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  120. package/dist/feature-libraries/modular-schema/index.d.ts +4 -4
  121. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  122. package/dist/feature-libraries/modular-schema/index.js +2 -2
  123. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  124. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
  125. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  126. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +255 -161
  127. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  128. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  129. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  130. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js +393 -0
  131. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  132. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  133. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
  134. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  135. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
  136. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  137. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1350 -476
  138. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  139. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  140. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  141. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +146 -0
  142. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  143. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
  144. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  145. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
  146. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  147. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +3 -3
  148. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  149. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  150. package/dist/feature-libraries/object-forest/objectForest.js +3 -1
  151. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  152. package/dist/feature-libraries/optional-field/index.d.ts +2 -2
  153. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  154. package/dist/feature-libraries/optional-field/index.js +1 -2
  155. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  156. package/dist/feature-libraries/optional-field/optionalField.d.ts +5 -26
  157. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  158. package/dist/feature-libraries/optional-field/optionalField.js +221 -443
  159. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  160. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  161. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  162. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +31 -0
  163. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  164. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  165. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  166. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  167. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  168. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  169. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
  170. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  171. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  172. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  173. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js +57 -0
  174. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  175. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  176. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  177. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  178. package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
  179. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  180. package/dist/feature-libraries/sequence-field/compose.js +83 -259
  181. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  182. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  183. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  184. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  185. package/dist/feature-libraries/sequence-field/index.d.ts +2 -3
  186. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  187. package/dist/feature-libraries/sequence-field/index.js +1 -3
  188. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  189. package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
  190. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  191. package/dist/feature-libraries/sequence-field/invert.js +65 -167
  192. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  193. package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  194. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  195. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  196. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  197. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  198. package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -90
  199. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  200. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
  201. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  202. package/dist/feature-libraries/sequence-field/rebase.js +107 -114
  203. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  204. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  205. package/dist/feature-libraries/sequence-field/replaceRevisions.js +18 -31
  206. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  207. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  208. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  209. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  210. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  211. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  212. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +365 -187
  213. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  214. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  215. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -62
  216. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  217. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  218. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  219. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  220. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  221. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  222. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  223. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  224. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  225. package/dist/feature-libraries/sequence-field/types.d.ts +30 -59
  226. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  227. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  228. package/dist/feature-libraries/sequence-field/utils.d.ts +15 -24
  229. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  230. package/dist/feature-libraries/sequence-field/utils.js +116 -305
  231. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  232. package/dist/index.d.ts +3 -2
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +4 -1
  235. package/dist/index.js.map +1 -1
  236. package/dist/packageVersion.d.ts +1 -1
  237. package/dist/packageVersion.d.ts.map +1 -1
  238. package/dist/packageVersion.js +1 -1
  239. package/dist/packageVersion.js.map +1 -1
  240. package/dist/shared-tree/index.d.ts +1 -1
  241. package/dist/shared-tree/index.d.ts.map +1 -1
  242. package/dist/shared-tree/index.js.map +1 -1
  243. package/dist/shared-tree/schematizeTree.d.ts +4 -4
  244. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  245. package/dist/shared-tree/schematizeTree.js +2 -1
  246. package/dist/shared-tree/schematizeTree.js.map +1 -1
  247. package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
  248. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  249. package/dist/shared-tree/schematizingTreeView.js +38 -35
  250. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  251. package/dist/shared-tree/sharedTree.d.ts +9 -3
  252. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  253. package/dist/shared-tree/sharedTree.js +11 -0
  254. package/dist/shared-tree/sharedTree.js.map +1 -1
  255. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  256. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  257. package/dist/shared-tree/sharedTreeChangeCodecs.js +1 -0
  258. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  259. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  260. package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
  261. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  262. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
  263. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  264. package/dist/shared-tree/sharedTreeChangeFamily.js +10 -4
  265. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  266. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  267. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  268. package/dist/shared-tree/sharedTreeEditBuilder.js +14 -7
  269. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  270. package/dist/shared-tree/treeCheckout.d.ts +9 -10
  271. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  272. package/dist/shared-tree/treeCheckout.js +63 -8
  273. package/dist/shared-tree/treeCheckout.js.map +1 -1
  274. package/dist/shared-tree-core/branch.d.ts +3 -2
  275. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  276. package/dist/shared-tree-core/branch.js +9 -4
  277. package/dist/shared-tree-core/branch.js.map +1 -1
  278. package/dist/shared-tree-core/editManager.d.ts +2 -2
  279. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  280. package/dist/shared-tree-core/editManager.js +20 -14
  281. package/dist/shared-tree-core/editManager.js.map +1 -1
  282. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
  283. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  284. package/dist/shared-tree-core/editManagerCodecs.js +10 -2
  285. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  286. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  287. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  288. package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
  289. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  290. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  291. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  292. package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  293. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  294. package/dist/shared-tree-core/index.d.ts +2 -2
  295. package/dist/shared-tree-core/index.d.ts.map +1 -1
  296. package/dist/shared-tree-core/index.js +3 -1
  297. package/dist/shared-tree-core/index.js.map +1 -1
  298. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  299. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  300. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  301. package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
  302. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  303. package/dist/shared-tree-core/messageCodecs.js +10 -2
  304. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  305. package/dist/shared-tree-core/messageFormat.d.ts +1 -0
  306. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  307. package/dist/shared-tree-core/messageFormat.js +6 -0
  308. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  309. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  310. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  311. package/dist/shared-tree-core/messageFormatV1ToV4.js +1 -0
  312. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  313. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
  314. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  315. package/dist/shared-tree-core/sharedTreeCore.js +1 -1
  316. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  317. package/dist/simple-tree/api/index.d.ts +1 -1
  318. package/dist/simple-tree/api/index.d.ts.map +1 -1
  319. package/dist/simple-tree/api/index.js +2 -1
  320. package/dist/simple-tree/api/index.js.map +1 -1
  321. package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -1
  322. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  323. package/dist/simple-tree/api/schemaFactoryBeta.js +1 -1
  324. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  325. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
  326. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  327. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
  328. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  329. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +297 -1
  330. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  331. package/dist/simple-tree/api/tree.d.ts +3 -1
  332. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  333. package/dist/simple-tree/api/tree.js.map +1 -1
  334. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  335. package/dist/simple-tree/core/treeNodeKernel.js +6 -2
  336. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  337. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  338. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  339. package/dist/simple-tree/core/unhydratedFlexTree.js +59 -8
  340. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  341. package/dist/simple-tree/fieldSchema.d.ts +4 -4
  342. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  343. package/dist/simple-tree/fieldSchema.js.map +1 -1
  344. package/dist/simple-tree/index.d.ts +3 -3
  345. package/dist/simple-tree/index.d.ts.map +1 -1
  346. package/dist/simple-tree/index.js +4 -3
  347. package/dist/simple-tree/index.js.map +1 -1
  348. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  349. package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -5
  350. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  351. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  352. package/dist/simple-tree/node-kinds/common.js +1 -1
  353. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  354. package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
  355. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  356. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  357. package/dist/simple-tree/node-kinds/object/objectNode.js +19 -19
  358. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  359. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  360. package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
  361. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  362. package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
  363. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  364. package/dist/simple-tree/prepareForInsertion.js +184 -126
  365. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  366. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  367. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  368. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +31 -13
  369. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  370. package/dist/text/index.d.ts +6 -0
  371. package/dist/text/index.d.ts.map +1 -0
  372. package/dist/text/index.js +10 -0
  373. package/dist/text/index.js.map +1 -0
  374. package/dist/text/textDomain.d.ts +138 -0
  375. package/dist/text/textDomain.d.ts.map +1 -0
  376. package/dist/text/textDomain.js +121 -0
  377. package/dist/text/textDomain.js.map +1 -0
  378. package/dist/treeFactory.d.ts.map +1 -1
  379. package/dist/treeFactory.js +12 -2
  380. package/dist/treeFactory.js.map +1 -1
  381. package/dist/util/bTreeUtils.d.ts +12 -4
  382. package/dist/util/bTreeUtils.d.ts.map +1 -1
  383. package/dist/util/bTreeUtils.js +14 -18
  384. package/dist/util/bTreeUtils.js.map +1 -1
  385. package/dist/util/index.d.ts +1 -1
  386. package/dist/util/index.d.ts.map +1 -1
  387. package/dist/util/index.js +2 -1
  388. package/dist/util/index.js.map +1 -1
  389. package/dist/util/nestedMap.js +12 -12
  390. package/dist/util/nestedMap.js.map +1 -1
  391. package/dist/util/rangeMap.d.ts +24 -12
  392. package/dist/util/rangeMap.d.ts.map +1 -1
  393. package/dist/util/rangeMap.js +46 -6
  394. package/dist/util/rangeMap.js.map +1 -1
  395. package/docs/user-facing/merge-semantics.md +3 -2
  396. package/eslint.config.mts +4 -32
  397. package/lib/alpha.d.ts +5 -0
  398. package/lib/core/change-family/changeFamily.d.ts +4 -1
  399. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  400. package/lib/core/change-family/changeFamily.js.map +1 -1
  401. package/lib/core/change-family/index.d.ts +1 -1
  402. package/lib/core/change-family/index.d.ts.map +1 -1
  403. package/lib/core/change-family/index.js.map +1 -1
  404. package/lib/core/index.d.ts +3 -3
  405. package/lib/core/index.d.ts.map +1 -1
  406. package/lib/core/index.js +2 -2
  407. package/lib/core/index.js.map +1 -1
  408. package/lib/core/rebase/changeRebaser.d.ts +6 -1
  409. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  410. package/lib/core/rebase/changeRebaser.js.map +1 -1
  411. package/lib/core/rebase/index.d.ts +1 -1
  412. package/lib/core/rebase/index.d.ts.map +1 -1
  413. package/lib/core/rebase/index.js +1 -1
  414. package/lib/core/rebase/index.js.map +1 -1
  415. package/lib/core/rebase/types.d.ts +46 -8
  416. package/lib/core/rebase/types.d.ts.map +1 -1
  417. package/lib/core/rebase/types.js +3 -0
  418. package/lib/core/rebase/types.js.map +1 -1
  419. package/lib/core/rebase/utils.d.ts.map +1 -1
  420. package/lib/core/rebase/utils.js +30 -8
  421. package/lib/core/rebase/utils.js.map +1 -1
  422. package/lib/core/tree/anchorSet.js +1 -0
  423. package/lib/core/tree/anchorSet.js.map +1 -1
  424. package/lib/core/tree/detachedFieldIndex.d.ts +6 -0
  425. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  426. package/lib/core/tree/detachedFieldIndex.js +10 -1
  427. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  428. package/lib/core/tree/index.d.ts +1 -1
  429. package/lib/core/tree/index.d.ts.map +1 -1
  430. package/lib/core/tree/index.js +1 -1
  431. package/lib/core/tree/index.js.map +1 -1
  432. package/lib/core/tree/pathTree.d.ts +11 -3
  433. package/lib/core/tree/pathTree.d.ts.map +1 -1
  434. package/lib/core/tree/pathTree.js +12 -1
  435. package/lib/core/tree/pathTree.js.map +1 -1
  436. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  437. package/lib/core/tree/visitDelta.js +3 -2
  438. package/lib/core/tree/visitDelta.js.map +1 -1
  439. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  440. package/lib/core/tree/visitorUtils.js +58 -18
  441. package/lib/core/tree/visitorUtils.js.map +1 -1
  442. package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -4
  443. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  444. package/lib/feature-libraries/changeAtomIdBTree.js +14 -1
  445. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
  446. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  447. package/lib/feature-libraries/chunked-forest/basicChunk.js +8 -1
  448. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  449. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  450. package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -1
  451. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  452. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  453. package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -1
  454. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  455. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
  456. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  457. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
  458. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  459. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +236 -70
  460. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  461. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
  462. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  463. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -2
  464. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  465. package/lib/feature-libraries/default-schema/index.d.ts +2 -1
  466. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  467. package/lib/feature-libraries/default-schema/index.js +2 -1
  468. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  469. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +38 -0
  470. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  471. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +128 -0
  472. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  473. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  474. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  475. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  476. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  477. package/lib/feature-libraries/deltaUtils.d.ts +1 -0
  478. package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
  479. package/lib/feature-libraries/deltaUtils.js +5 -1
  480. package/lib/feature-libraries/deltaUtils.js.map +1 -1
  481. package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
  482. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  483. package/lib/feature-libraries/flex-tree/context.js +6 -0
  484. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  485. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  486. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  487. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  488. package/lib/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  489. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  490. package/lib/feature-libraries/flex-tree/lazyField.js +41 -10
  491. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  492. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  493. package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -1
  494. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  495. package/lib/feature-libraries/index.d.ts +3 -3
  496. package/lib/feature-libraries/index.d.ts.map +1 -1
  497. package/lib/feature-libraries/index.js +2 -2
  498. package/lib/feature-libraries/index.js.map +1 -1
  499. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  500. package/lib/feature-libraries/mapTreeCursor.js +2 -1
  501. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  502. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  503. package/lib/feature-libraries/mitigatedChangeFamily.js +2 -2
  504. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  505. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  506. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  507. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +3 -5
  508. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  509. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -51
  510. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  511. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  512. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  513. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -9
  514. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  515. package/lib/feature-libraries/modular-schema/index.d.ts +4 -4
  516. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  517. package/lib/feature-libraries/modular-schema/index.js +2 -2
  518. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  519. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
  520. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  521. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +247 -143
  522. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  523. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  524. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  525. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js +389 -0
  526. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  527. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  528. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
  529. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  530. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
  531. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  532. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1344 -479
  533. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  534. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  535. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  536. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +146 -0
  537. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  538. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +29 -0
  539. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  540. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
  541. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  542. package/lib/feature-libraries/modular-schema/modularChangeTypes.js +1 -1
  543. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  544. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  545. package/lib/feature-libraries/object-forest/objectForest.js +3 -1
  546. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  547. package/lib/feature-libraries/optional-field/index.d.ts +2 -2
  548. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  549. package/lib/feature-libraries/optional-field/index.js +1 -1
  550. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  551. package/lib/feature-libraries/optional-field/optionalField.d.ts +5 -26
  552. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  553. package/lib/feature-libraries/optional-field/optionalField.js +221 -441
  554. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  555. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  556. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  557. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +27 -0
  558. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  559. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  560. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  561. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  562. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  563. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  564. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
  565. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  566. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  567. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  568. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js +53 -0
  569. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  570. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  571. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  572. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  573. package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
  574. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  575. package/lib/feature-libraries/sequence-field/compose.js +85 -261
  576. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  577. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  578. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  579. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  580. package/lib/feature-libraries/sequence-field/index.d.ts +2 -3
  581. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  582. package/lib/feature-libraries/sequence-field/index.js +0 -1
  583. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  584. package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
  585. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  586. package/lib/feature-libraries/sequence-field/invert.js +67 -169
  587. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  588. package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  589. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  590. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  591. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  592. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  593. package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -84
  594. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  595. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
  596. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  597. package/lib/feature-libraries/sequence-field/rebase.js +109 -116
  598. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  599. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  600. package/lib/feature-libraries/sequence-field/replaceRevisions.js +18 -31
  601. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  602. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  603. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  604. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  605. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  606. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  607. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +356 -182
  608. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  609. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  610. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -63
  611. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  612. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  613. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  614. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  615. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  616. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  617. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  618. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  619. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  620. package/lib/feature-libraries/sequence-field/types.d.ts +30 -59
  621. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  622. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  623. package/lib/feature-libraries/sequence-field/utils.d.ts +15 -24
  624. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  625. package/lib/feature-libraries/sequence-field/utils.js +112 -298
  626. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  627. package/lib/index.d.ts +3 -2
  628. package/lib/index.d.ts.map +1 -1
  629. package/lib/index.js +2 -1
  630. package/lib/index.js.map +1 -1
  631. package/lib/packageVersion.d.ts +1 -1
  632. package/lib/packageVersion.d.ts.map +1 -1
  633. package/lib/packageVersion.js +1 -1
  634. package/lib/packageVersion.js.map +1 -1
  635. package/lib/shared-tree/index.d.ts +1 -1
  636. package/lib/shared-tree/index.d.ts.map +1 -1
  637. package/lib/shared-tree/index.js.map +1 -1
  638. package/lib/shared-tree/schematizeTree.d.ts +4 -4
  639. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  640. package/lib/shared-tree/schematizeTree.js +3 -2
  641. package/lib/shared-tree/schematizeTree.js.map +1 -1
  642. package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
  643. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  644. package/lib/shared-tree/schematizingTreeView.js +41 -38
  645. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  646. package/lib/shared-tree/sharedTree.d.ts +9 -3
  647. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  648. package/lib/shared-tree/sharedTree.js +11 -0
  649. package/lib/shared-tree/sharedTree.js.map +1 -1
  650. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  651. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  652. package/lib/shared-tree/sharedTreeChangeCodecs.js +1 -0
  653. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  654. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  655. package/lib/shared-tree/sharedTreeChangeEnricher.js +2 -2
  656. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  657. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
  658. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  659. package/lib/shared-tree/sharedTreeChangeFamily.js +11 -5
  660. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  661. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  662. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  663. package/lib/shared-tree/sharedTreeEditBuilder.js +12 -6
  664. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  665. package/lib/shared-tree/treeCheckout.d.ts +9 -10
  666. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  667. package/lib/shared-tree/treeCheckout.js +66 -11
  668. package/lib/shared-tree/treeCheckout.js.map +1 -1
  669. package/lib/shared-tree-core/branch.d.ts +3 -2
  670. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  671. package/lib/shared-tree-core/branch.js +9 -4
  672. package/lib/shared-tree-core/branch.js.map +1 -1
  673. package/lib/shared-tree-core/editManager.d.ts +2 -2
  674. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  675. package/lib/shared-tree-core/editManager.js +20 -14
  676. package/lib/shared-tree-core/editManager.js.map +1 -1
  677. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
  678. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  679. package/lib/shared-tree-core/editManagerCodecs.js +8 -1
  680. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  681. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  682. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  683. package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
  684. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  685. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  686. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  687. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  688. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  689. package/lib/shared-tree-core/index.d.ts +2 -2
  690. package/lib/shared-tree-core/index.d.ts.map +1 -1
  691. package/lib/shared-tree-core/index.js +2 -2
  692. package/lib/shared-tree-core/index.js.map +1 -1
  693. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  694. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  695. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  696. package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
  697. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  698. package/lib/shared-tree-core/messageCodecs.js +8 -1
  699. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  700. package/lib/shared-tree-core/messageFormat.d.ts +1 -0
  701. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  702. package/lib/shared-tree-core/messageFormat.js +6 -0
  703. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  704. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  705. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  706. package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -0
  707. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  708. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
  709. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  710. package/lib/shared-tree-core/sharedTreeCore.js +1 -1
  711. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  712. package/lib/simple-tree/api/index.d.ts +1 -1
  713. package/lib/simple-tree/api/index.d.ts.map +1 -1
  714. package/lib/simple-tree/api/index.js +1 -1
  715. package/lib/simple-tree/api/index.js.map +1 -1
  716. package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -1
  717. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  718. package/lib/simple-tree/api/schemaFactoryBeta.js +1 -1
  719. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  720. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
  721. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  722. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
  723. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  724. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +270 -0
  725. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  726. package/lib/simple-tree/api/tree.d.ts +3 -1
  727. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  728. package/lib/simple-tree/api/tree.js.map +1 -1
  729. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  730. package/lib/simple-tree/core/treeNodeKernel.js +6 -2
  731. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  732. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  733. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  734. package/lib/simple-tree/core/unhydratedFlexTree.js +58 -8
  735. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  736. package/lib/simple-tree/fieldSchema.d.ts +4 -4
  737. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  738. package/lib/simple-tree/fieldSchema.js.map +1 -1
  739. package/lib/simple-tree/index.d.ts +3 -3
  740. package/lib/simple-tree/index.d.ts.map +1 -1
  741. package/lib/simple-tree/index.js +2 -2
  742. package/lib/simple-tree/index.js.map +1 -1
  743. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  744. package/lib/simple-tree/node-kinds/array/arrayNode.js +8 -6
  745. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  746. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  747. package/lib/simple-tree/node-kinds/common.js +2 -2
  748. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  749. package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
  750. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  751. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  752. package/lib/simple-tree/node-kinds/object/objectNode.js +20 -20
  753. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  754. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  755. package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
  756. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  757. package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
  758. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  759. package/lib/simple-tree/prepareForInsertion.js +184 -125
  760. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  761. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  762. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  763. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +28 -11
  764. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  765. package/lib/text/index.d.ts +6 -0
  766. package/lib/text/index.d.ts.map +1 -0
  767. package/lib/text/index.js +6 -0
  768. package/lib/text/index.js.map +1 -0
  769. package/lib/text/textDomain.d.ts +138 -0
  770. package/lib/text/textDomain.d.ts.map +1 -0
  771. package/lib/text/textDomain.js +118 -0
  772. package/lib/text/textDomain.js.map +1 -0
  773. package/lib/treeFactory.d.ts.map +1 -1
  774. package/lib/treeFactory.js +13 -3
  775. package/lib/treeFactory.js.map +1 -1
  776. package/lib/util/bTreeUtils.d.ts +12 -4
  777. package/lib/util/bTreeUtils.d.ts.map +1 -1
  778. package/lib/util/bTreeUtils.js +15 -19
  779. package/lib/util/bTreeUtils.js.map +1 -1
  780. package/lib/util/index.d.ts +1 -1
  781. package/lib/util/index.d.ts.map +1 -1
  782. package/lib/util/index.js +1 -1
  783. package/lib/util/index.js.map +1 -1
  784. package/lib/util/nestedMap.js +12 -12
  785. package/lib/util/nestedMap.js.map +1 -1
  786. package/lib/util/rangeMap.d.ts +24 -12
  787. package/lib/util/rangeMap.d.ts.map +1 -1
  788. package/lib/util/rangeMap.js +44 -5
  789. package/lib/util/rangeMap.js.map +1 -1
  790. package/package.json +25 -25
  791. package/src/core/change-family/changeFamily.ts +5 -0
  792. package/src/core/change-family/index.ts +1 -0
  793. package/src/core/index.ts +6 -1
  794. package/src/core/rebase/changeRebaser.ts +6 -1
  795. package/src/core/rebase/index.ts +3 -0
  796. package/src/core/rebase/types.ts +65 -21
  797. package/src/core/rebase/utils.ts +39 -11
  798. package/src/core/tree/anchorSet.ts +1 -0
  799. package/src/core/tree/detachedFieldIndex.ts +17 -1
  800. package/src/core/tree/index.ts +2 -1
  801. package/src/core/tree/pathTree.ts +16 -4
  802. package/src/core/tree/visitDelta.ts +6 -2
  803. package/src/core/tree/visitorUtils.ts +55 -19
  804. package/src/feature-libraries/changeAtomIdBTree.ts +37 -5
  805. package/src/feature-libraries/chunked-forest/basicChunk.ts +7 -1
  806. package/src/feature-libraries/chunked-forest/chunkTree.ts +6 -1
  807. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -1
  808. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -0
  809. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +399 -127
  810. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -5
  811. package/src/feature-libraries/default-schema/index.ts +17 -5
  812. package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +188 -0
  813. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
  814. package/src/feature-libraries/deltaUtils.ts +6 -1
  815. package/src/feature-libraries/flex-tree/context.ts +17 -0
  816. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
  817. package/src/feature-libraries/flex-tree/lazyField.ts +68 -25
  818. package/src/feature-libraries/forest-summary/forestSummarizer.ts +3 -1
  819. package/src/feature-libraries/index.ts +22 -8
  820. package/src/feature-libraries/mapTreeCursor.ts +2 -1
  821. package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
  822. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +142 -44
  823. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +32 -58
  824. package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -18
  825. package/src/feature-libraries/modular-schema/index.ts +16 -15
  826. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +560 -351
  827. package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +760 -0
  828. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -1
  829. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2620 -782
  830. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
  831. package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +62 -0
  832. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +58 -11
  833. package/src/feature-libraries/object-forest/objectForest.ts +3 -1
  834. package/src/feature-libraries/optional-field/index.ts +1 -3
  835. package/src/feature-libraries/optional-field/optionalField.ts +318 -562
  836. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
  837. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +24 -38
  838. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
  839. package/src/feature-libraries/optional-field/optionalFieldCodecV3.ts +94 -0
  840. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -1
  841. package/src/feature-libraries/sequence-field/compose.ts +139 -522
  842. package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
  843. package/src/feature-libraries/sequence-field/index.ts +0 -9
  844. package/src/feature-libraries/sequence-field/invert.ts +103 -228
  845. package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
  846. package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -195
  847. package/src/feature-libraries/sequence-field/rebase.ts +169 -205
  848. package/src/feature-libraries/sequence-field/replaceRevisions.ts +25 -47
  849. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +0 -2
  850. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +648 -228
  851. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
  852. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +25 -27
  853. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +19 -129
  854. package/src/feature-libraries/sequence-field/types.ts +34 -64
  855. package/src/feature-libraries/sequence-field/utils.ts +139 -353
  856. package/src/index.ts +7 -0
  857. package/src/packageVersion.ts +1 -1
  858. package/src/shared-tree/index.ts +3 -2
  859. package/src/shared-tree/schematizeTree.ts +21 -8
  860. package/src/shared-tree/schematizingTreeView.ts +56 -70
  861. package/src/shared-tree/sharedTree.ts +20 -3
  862. package/src/shared-tree/sharedTreeChangeCodecs.ts +5 -1
  863. package/src/shared-tree/sharedTreeChangeEnricher.ts +2 -0
  864. package/src/shared-tree/sharedTreeChangeFamily.ts +15 -5
  865. package/src/shared-tree/sharedTreeEditBuilder.ts +39 -8
  866. package/src/shared-tree/treeCheckout.ts +95 -24
  867. package/src/shared-tree-core/branch.ts +13 -3
  868. package/src/shared-tree-core/editManager.ts +42 -28
  869. package/src/shared-tree-core/editManagerCodecs.ts +11 -1
  870. package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
  871. package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
  872. package/src/shared-tree-core/index.ts +2 -0
  873. package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
  874. package/src/shared-tree-core/messageCodecs.ts +11 -1
  875. package/src/shared-tree-core/messageFormat.ts +6 -0
  876. package/src/shared-tree-core/messageFormatV1ToV4.ts +3 -1
  877. package/src/shared-tree-core/sharedTreeCore.ts +4 -1
  878. package/src/simple-tree/api/index.ts +3 -0
  879. package/src/simple-tree/api/schemaFactoryAlpha.ts +1 -1
  880. package/src/simple-tree/api/schemaFactoryBeta.ts +1 -1
  881. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +4 -4
  882. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +501 -0
  883. package/src/simple-tree/api/tree.ts +3 -1
  884. package/src/simple-tree/core/treeNodeKernel.ts +6 -2
  885. package/src/simple-tree/core/unhydratedFlexTree.ts +87 -36
  886. package/src/simple-tree/fieldSchema.ts +6 -4
  887. package/src/simple-tree/index.ts +5 -1
  888. package/src/simple-tree/node-kinds/array/arrayNode.ts +9 -7
  889. package/src/simple-tree/node-kinds/common.ts +2 -5
  890. package/src/simple-tree/node-kinds/map/mapNode.ts +4 -4
  891. package/src/simple-tree/node-kinds/object/objectNode.ts +26 -26
  892. package/src/simple-tree/node-kinds/record/recordNode.ts +10 -9
  893. package/src/simple-tree/prepareForInsertion.ts +343 -201
  894. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +43 -15
  895. package/src/text/README.md +8 -0
  896. package/src/text/index.ts +6 -0
  897. package/src/text/textDomain.ts +199 -0
  898. package/src/treeFactory.ts +14 -4
  899. package/src/util/bTreeUtils.ts +33 -22
  900. package/src/util/index.ts +3 -0
  901. package/src/util/nestedMap.ts +12 -12
  902. package/src/util/rangeMap.ts +72 -18
  903. package/.eslintrc.cjs +0 -125
  904. package/assertTagging.config.mjs +0 -14
  905. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  906. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  907. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
  908. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  909. package/docs/main/sequence-field/move-composition.md +0 -46
  910. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  911. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  912. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
  913. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  914. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeCodecV1.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecV1.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAAwE;AAGxE,mDAO8B;AAW9B,kDAO6B;AAC7B,yDAKoC;AACpC,wEAAqE;AAOrE,+DAAyD;AACzD,yEAQoC;AACpC,mEAQiC;AAyBjC,SAAgB,sBAAsB,CACrC,SAA8B,EAC9B,oBAA0C;IAK1C,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,IAAA,iBAAM,EAAC,KAAK,KAAK,SAAS,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC;AACd,CAAC;AAVD,wDAUC;AAED,SAAgB,yBAAyB,CACxC,MAAsB,EACtB,OAA8B,EAC9B,WAA6C,EAC7C,oBAA0C;IAE1C,MAAM,YAAY,GAA+B;QAChD,WAAW,EAAE,OAAO;QAEpB,UAAU,EAAE,CAAC,MAAc,EAAwB,EAAE;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,IAAA,iBAAM,EAAC,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxD,OAAO,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;QAC3E,CAAC;QAED,UAAU,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC,KAAK,CAAC,mDAAmD,CAAC;KACjF,CAAC;IAEF,OAAO,0BAA0B,CAAC,MAAM,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAC/E,CAAC;AAnBD,8DAmBC;AAED,SAAgB,0BAA0B,CACzC,MAAsB,EACtB,OAAmC,EACnC,oBAA0C;IAE1C,MAAM,aAAa,GAA0B,EAAE,CAAC;IAEhD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,sBAAsB,CACvD,WAAW,CAAC,SAAS,EACrB,oBAAoB,CACpB,CAAC;QACF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1E,IAAA,eAAI,EAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAa,KAAK,CAAC;QACjC,MAAM,YAAY,GAAuB;YACxC,QAAQ;YACR,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,MAAM,EAAE,aAAa;SACrB,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC;AA5BD,gEA4BC;AAED,SAAgB,wBAAwB,CACvC,MAAqB,EACrB,OAAmC,EACnC,oBAA0C;IAE1C,MAAM,aAAa,GAAyB,EAAE,CAAC;IAC/C,kIAAkI;IAClI,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,CAAC,YAAY,GAAG,0BAA0B,CACtD,YAAY,EACZ,OAAO,EACP,oBAAoB,CACpB,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACxC,aAAa,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAC3D,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC;AAtBD,4DAsBC;AAED,SAAgB,0BAA0B,CACzC,aAAoC,EACpC,QAA4B,EAC5B,OAAyB,EACzB,OAA8B,EAC9B,WAAwB,EACxB,UAAkC,EAClC,oBAA0C;IAE1C,MAAM,aAAa,GAAmB,IAAI,GAAG,EAAE,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,sBAAsB,CACvD,KAAK,CAAC,SAAS,EACf,oBAAoB,CACpB,CAAC;QACF,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,IAAA,eAAI,EAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAY;YACxB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,KAAK,CAAC,QAAQ;SACrB,CAAC;QAEF,MAAM,YAAY,GAA+B;YAChD,WAAW,EAAE,OAAO;YAEpB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC,KAAK,CAAC,mDAAmD,CAAC;YAEjF,UAAU,EAAE,CAAC,WAAiC,EAAU,EAAE;gBACzD,MAAM,MAAM,GAAW;oBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,IAAA,gBAAK,EAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;iBACtC,CAAC;gBAEF,MAAM,IAAI,GAAG,2BAA2B,CACvC,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,oBAAoB,CACpB,CAAC;gBAEF,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,OAAO,MAAM,CAAC;YACf,CAAC;SACD,CAAC;QAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAErE,MAAM,cAAc,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,iBAAiB,CACrF,cAAc,CACd,CAAC;QAEF,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,cAAc,EAAE,CAAC;YAC7C,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAa,IAAA,gBAAK,EAAW,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE3D,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,IAAA,gBAAK,EAAC,cAAc,CAAC;SAC7B,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC;AAtED,gEAsEC;AAED,SAAgB,2BAA2B,CAC1C,aAAmC,EACnC,EAAU,EACV,OAAyB,EACzB,OAA8B,EAC9B,WAAwB,EACxB,UAAkC,EAClC,oBAA0C;IAE1C,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAAC;IAE7D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,CAAC,YAAY,GAAG,0BAA0B,CACtD,YAAY,EACZ,EAAE,EACF,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,oBAAoB,CACpB,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACxC,aAAa,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAC3D,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC;AA7BD,kEA6BC;AAED,SAAgB,mBAAmB,CAClC,aAAuD,EACvD,OAA8B,EAC9B,gBAKC,EACD,WAA4B,EAC5B,wBAAiD;IAEjD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAA6B,EAAE,CAAC;IACnD,MAAM,WAAW,GAAuB,EAAE,CAAC;IAE3C,IAAI,iBAGQ,CAAC;IAEb,KAAK,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/E,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;YACjF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACrC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,iBAAiB,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAClF,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACnC,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC;QAC9B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACA,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE;gBACxC,UAAU,EAAE,wBAAwB;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,YAAY,EAAE,OAAO,CAAC,YAAY;aAClC,CAAC;SACF,CAAC;AACL,CAAC;AAvDD,kDAuDC;AAED,SAAgB,mBAAmB,CAClC,OAAkC,EAClC,OAA8B,EAC9B,gBAKC,EACD,WAA4B,EAC5B,wBAAiD;IAEjD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;QAChD,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;KAClC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAa,EAAE;QAC7C,IAAA,iBAAM,EAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/E,OAAO,IAAA,2BAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAA,cAAG,GAAE,EAAE;YAC/C,MAAM,EAAE,6BAAkB;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,GAAG,GAA+B,IAAA,wBAAa,GAAE,CAAC;IACxD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAChC,sFAAsF;QACtF,MAAM,QAAQ,GACb,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAExF,MAAM,aAAa,GAAoC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/E,CAAC;YACD,QAAQ,CAAC,CAAC,CAAC;SACX,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACZ,CAAC;AA9CD,kDA8CC;AAED,SAAgB,mBAAmB,CAClC,SAAkC,EAClC,OAA8B,EAC9B,gBAKC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,IAAA,iBAAM,EACL,SAAS,CAAC,MAAM,KAAK,CAAC;YACrB,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS;YAC1B,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAC1C,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,EACtC,KAAK,CAAC,6DAA6D,CACnE,CAAC;QAEF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,eAAe,GAAiC;YACrD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC7D,CAAC;QAEF,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,eAAe,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpF,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,gBAAgB,CAAC;AACzB,CAAC;AApCD,kDAoCC;AAED,SAAgB,mBAAmB,CAClC,SAAqD,EACrD,OAA8B,EAC9B,gBAKC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,eAAe,GAA0B;YAC9C,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC7D,CAAC;QAEF,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,eAAe,CAAC,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpF,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,gBAAgB,CAAC;AACzB,CAAC;AA5BD,kDA4BC;AAED,SAAgB,YAAY,CAC3B,MAAwB,EACxB,OAA8B,EAC9B,oBAMC,EACD,gBAKC,EACD,WAA4B,EAC5B,wBAAiD;IAEjD,oEAAoE;IACpE,IAAA,iBAAM,EAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EACR,MAAM,CAAC,SAAS,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC;QACpE,OAAO,EAAE,yBAAyB,CACjC,MAAM,CAAC,YAAY,EACnB,OAAO,EACP,MAAM,CAAC,WAAW,EAClB,oBAAoB,CACpB;QACD,MAAM,EAAE,mBAAmB,CAC1B,MAAM,CAAC,MAAM,EACb,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB;QACD,UAAU,EAAE,mBAAmB,CAC9B,MAAM,CAAC,UAAU,EACjB,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB;QACD,UAAU,EAAE,MAAM,CAAC,wBAAwB;KAC3C,CAAC;AACH,CAAC;AAjDD,oCAiDC;AAED,SAAgB,YAAY,CAC3B,aAAwC,EACxC,OAA8B,EAC9B,UAAkC,EAClC,oBAMC,EACD,gBAKC,EACD,WAA4B,EAC5B,wBAAiD;IAEjD,MAAM,OAAO,GAA8B;QAC1C,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAA,wBAAa,GAAE;QAC5B,YAAY,EAAE,IAAA,wBAAa,GAAE;QAC7B,WAAW,EAAE,IAAA,wBAAa,GAAE;QAC5B,cAAc,EAAE,IAAA,6CAAqB,GAAE;KACvC,CAAC;IAEF,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAChD,aAAa,CAAC,OAAO,EACrB,SAAS,EACT,OAAO,EACP,OAAO,EACP,IAAA,+BAAoB,EAAC,aAAa,CAAC,KAAK,CAAC,EACzC,UAAU,EACV,oBAAoB,CACpB,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,GAAG,mBAAmB,CACnC,aAAa,CAAC,MAAM,EACpB,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,UAAU,GAAG,mBAAmB,CACvC,aAAa,CAAC,UAAU,EACxB,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,wBAAwB,GAAG,aAAa,CAAC,UAAU,CAAC;IAC7D,CAAC;IAED,MAAM,eAAe,GAAG,mBAAmB,CAC1C,aAAa,CAAC,SAAS,EACvB,OAAO,EACP,gBAAgB,CAChB,CAAC;IACF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;IACrC,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAzED,oCAyEC;AAED,SAAgB,uBAAuB,CACtC,UAAkC,EAClC,gBAKC,EACD,YAA2B;IAK3B,4EAA4E;IAC5E,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAA+B,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxF,OAAO;YACN,KAAK;YACL,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;gBACvC,CAAC,CAAC,IAAA,+BAAoB,EAAC,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBACpF,CAAC,CAAC,SAAS;SACZ,CAAC;IACH,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,6BAA6B,GAAG,CAAC,CAAC;IACxC,MAAM,oBAAoB,GAMtB,IAAI,GAAG,CAAC;QACX;YACC,sCAAgB,CAAC,UAAU;YAC3B,WAAW,CAAC,EAAE,IAAI,EAAE,sCAAgB,EAAE,aAAa,EAAE,6BAA6B,EAAE,CAAC;SACrF;KACD,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACxC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC;AAC7B,CAAC;AA9CD,0DA8CC;AAED,SAAgB,wBAAwB,CACvC,UAAkC,EAClC,gBAKC,EACD,WAA4B,EAC5B,YAA2B,EAC3B,2BAAoD,iDAAuB,CAAC,UAAU;IAEtF,MAAM,oBAAoB,GAAG,uBAAuB,CACnD,UAAU,EACV,gBAAgB,EAChB,YAAY,CACZ,CAAC;IAEF,MAAM,kBAAkB,GAAuB;QAC9C,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAC3B,YAAY,CACX,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB;QACF,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAClC,YAAY,CACX,aAAa,EACb,OAAO,EACP,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,wBAAwB,CACxB;KACF,CAAC;IAEF,OAAO,IAAA,+BAAoB,EAC1B,oDAAyB,EACzB,kBAAkB,EAClB,YAAY,CAAC,aAAa,CAC1B,CAAC;AACH,CAAC;AA7CD,4DA6CC;AAED,SAAS,gBAAgB,CACxB,UAAkC,EAClC,SAA8B;IAE9B,IAAI,SAAS,KAAK,sCAAgB,CAAC,UAAU,EAAE,CAAC;QAC/C,OAAO,sCAAgB,CAAC,aAAa,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;IAC9D,IAAA,iBAAM,EAAC,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACzB,aAKC,EACD,QAAiC,EACjC,OAA8B;IAE9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5F,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, oob, fail } from \"@fluidframework/core-utils/internal\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\n\nimport {\n\ttype ICodecOptions,\n\ttype IJsonCodec,\n\ttype IMultiFormatCodec,\n\ttype SchemaValidationFunction,\n\textractJsonValidator,\n\twithSchemaValidation,\n} from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tChangesetLocalId,\n\tEncodedRevisionTag,\n\tFieldKey,\n\tFieldKindIdentifier,\n\tITreeCursorSynchronous,\n\tRevisionInfo,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport {\n\ttype IdAllocator,\n\ttype JsonCompatibleReadOnly,\n\ttype Mutable,\n\tbrand,\n\tidAllocatorFromMaxId,\n\tnewTupleBTree,\n} from \"../../util/index.js\";\nimport {\n\ttype FieldBatchCodec,\n\ttype TreeChunk,\n\tchunkFieldSingle,\n\tdefaultChunkPolicy,\n} from \"../chunked-forest/index.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\n\nimport type { FieldChangeEncodingContext, FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\ttype EncodedBuilds,\n\ttype EncodedBuildsArray,\n\ttype EncodedFieldChange,\n\ttype EncodedFieldChangeMap,\n\tEncodedModularChangesetV1,\n\ttype EncodedNodeChangeset,\n\ttype EncodedRevisionInfo,\n} from \"./modularChangeFormatV1.js\";\nimport {\n\ttype FieldChangeset,\n\tnewCrossFieldKeyTable,\n\ttype FieldChangeMap,\n\ttype FieldId,\n\ttype ModularChangeset,\n\ttype NodeChangeset,\n\ttype NodeId,\n} from \"./modularChangeTypes.js\";\nimport type { ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\n\ntype ModularChangeCodec = IJsonCodec<\n\tModularChangeset,\n\tEncodedModularChangesetV1,\n\tEncodedModularChangesetV1,\n\tChangeEncodingContext\n>;\n\ntype FieldCodec = IMultiFormatCodec<\n\tFieldChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext\n>;\n\ntype FieldChangesetCodecs = Map<\n\tFieldKindIdentifier,\n\t{\n\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\tcodec: FieldCodec;\n\t}\n>;\n\nexport function getFieldChangesetCodec(\n\tfieldKind: FieldKindIdentifier,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): {\n\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\tcodec: FieldCodec;\n} {\n\tconst entry = fieldChangesetCodecs.get(fieldKind);\n\tassert(entry !== undefined, 0x5ea /* Tried to encode unsupported fieldKind */);\n\treturn entry;\n}\n\nexport function encodeFieldChangesForJson(\n\tchange: FieldChangeMap,\n\tcontext: ChangeEncodingContext,\n\tnodeChanges: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): EncodedFieldChangeMap {\n\tconst fieldContext: FieldChangeEncodingContext = {\n\t\tbaseContext: context,\n\n\t\tencodeNode: (nodeId: NodeId): EncodedNodeChangeset => {\n\t\t\tconst node = nodeChanges.get([nodeId.revision, nodeId.localId]);\n\t\t\tassert(node !== undefined, 0x92e /* Unknown node ID */);\n\t\t\treturn encodeNodeChangesForJson(node, fieldContext, fieldChangesetCodecs);\n\t\t},\n\n\t\tdecodeNode: () => fail(0xb1e /* Should not decode nodes during field encoding */),\n\t};\n\n\treturn encodeFieldChangesForJsonI(change, fieldContext, fieldChangesetCodecs);\n}\n\nexport function encodeFieldChangesForJsonI(\n\tchange: FieldChangeMap,\n\tcontext: FieldChangeEncodingContext,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): EncodedFieldChangeMap {\n\tconst encodedFields: EncodedFieldChangeMap = [];\n\n\tfor (const [field, fieldChange] of change) {\n\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(\n\t\t\tfieldChange.fieldKind,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t\tconst encodedChange = codec.json.encode(fieldChange.change, context);\n\t\tif (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {\n\t\t\tfail(0xb1f /* Encoded change didn't pass schema validation. */);\n\t\t}\n\n\t\tconst fieldKey: FieldKey = field;\n\t\tconst encodedField: EncodedFieldChange = {\n\t\t\tfieldKey,\n\t\t\tfieldKind: fieldChange.fieldKind,\n\t\t\tchange: encodedChange,\n\t\t};\n\n\t\tencodedFields.push(encodedField);\n\t}\n\n\treturn encodedFields;\n}\n\nexport function encodeNodeChangesForJson(\n\tchange: NodeChangeset,\n\tcontext: FieldChangeEncodingContext,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): EncodedNodeChangeset {\n\tconst encodedChange: EncodedNodeChangeset = {};\n\t// Note: revert constraints are ignored for now because they would only be needed if we supported reverting changes made by peers.\n\tconst { fieldChanges, nodeExistsConstraint } = change;\n\n\tif (fieldChanges !== undefined) {\n\t\tencodedChange.fieldChanges = encodeFieldChangesForJsonI(\n\t\t\tfieldChanges,\n\t\t\tcontext,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t}\n\n\tif (nodeExistsConstraint !== undefined) {\n\t\tencodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t}\n\n\treturn encodedChange;\n}\n\nexport function decodeFieldChangesFromJson(\n\tencodedChange: EncodedFieldChangeMap,\n\tparentId: NodeId | undefined,\n\tdecoded: ModularChangeset,\n\tcontext: ChangeEncodingContext,\n\tidAllocator: IdAllocator,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): FieldChangeMap {\n\tconst decodedFields: FieldChangeMap = new Map();\n\tfor (const field of encodedChange) {\n\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(\n\t\t\tfield.fieldKind,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t\tif (compiledSchema !== undefined && !compiledSchema.check(field.change)) {\n\t\t\tfail(0xb20 /* Encoded change didn't pass schema validation. */);\n\t\t}\n\n\t\tconst fieldId: FieldId = {\n\t\t\tnodeId: parentId,\n\t\t\tfield: field.fieldKey,\n\t\t};\n\n\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\tbaseContext: context,\n\n\t\t\tencodeNode: () => fail(0xb21 /* Should not encode nodes during field decoding */),\n\n\t\t\tdecodeNode: (encodedNode: EncodedNodeChangeset): NodeId => {\n\t\t\t\tconst nodeId: NodeId = {\n\t\t\t\t\trevision: context.revision,\n\t\t\t\t\tlocalId: brand(idAllocator.allocate()),\n\t\t\t\t};\n\n\t\t\t\tconst node = decodeNodeChangesetFromJson(\n\t\t\t\t\tencodedNode,\n\t\t\t\t\tnodeId,\n\t\t\t\t\tdecoded,\n\t\t\t\t\tcontext,\n\t\t\t\t\tidAllocator,\n\t\t\t\t\tfieldKinds,\n\t\t\t\t\tfieldChangesetCodecs,\n\t\t\t\t);\n\n\t\t\t\tdecoded.nodeChanges.set([nodeId.revision, nodeId.localId], node);\n\t\t\t\tdecoded.nodeToParent.set([nodeId.revision, nodeId.localId], fieldId);\n\t\t\t\treturn nodeId;\n\t\t\t},\n\t\t};\n\n\t\tconst fieldChangeset = codec.json.decode(field.change, fieldContext);\n\n\t\tconst crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(\n\t\t\tfieldChangeset,\n\t\t);\n\n\t\tfor (const { key, count } of crossFieldKeys) {\n\t\t\tdecoded.crossFieldKeys.set(key, count, fieldId);\n\t\t}\n\n\t\tconst fieldKey: FieldKey = brand<FieldKey>(field.fieldKey);\n\n\t\tdecodedFields.set(fieldKey, {\n\t\t\tfieldKind: field.fieldKind,\n\t\t\tchange: brand(fieldChangeset),\n\t\t});\n\t}\n\n\treturn decodedFields;\n}\n\nexport function decodeNodeChangesetFromJson(\n\tencodedChange: EncodedNodeChangeset,\n\tid: NodeId,\n\tdecoded: ModularChangeset,\n\tcontext: ChangeEncodingContext,\n\tidAllocator: IdAllocator,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): NodeChangeset {\n\tconst decodedChange: NodeChangeset = {};\n\tconst { fieldChanges, nodeExistsConstraint } = encodedChange;\n\n\tif (fieldChanges !== undefined) {\n\t\tdecodedChange.fieldChanges = decodeFieldChangesFromJson(\n\t\t\tfieldChanges,\n\t\t\tid,\n\t\t\tdecoded,\n\t\t\tcontext,\n\t\t\tidAllocator,\n\t\t\tfieldKinds,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t}\n\n\tif (nodeExistsConstraint !== undefined) {\n\t\tdecodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t}\n\n\treturn decodedChange;\n}\n\nexport function encodeDetachedNodes(\n\tdetachedNodes: ChangeAtomIdBTree<TreeChunk> | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): EncodedBuilds | undefined {\n\tif (detachedNodes === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst treesToEncode: ITreeCursorSynchronous[] = [];\n\tconst buildsArray: EncodedBuildsArray = [];\n\n\tlet buildsForRevision:\n\t\t| [[ChangesetLocalId, number][], EncodedRevisionTag]\n\t\t| [[ChangesetLocalId, number][]]\n\t\t| undefined;\n\n\tfor (const [[revision, id], chunk] of detachedNodes.entries()) {\n\t\tconst encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);\n\n\t\tif (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {\n\t\t\tif (buildsForRevision !== undefined) {\n\t\t\t\tbuildsArray.push(buildsForRevision);\n\t\t\t}\n\n\t\t\tbuildsForRevision = encodedRevision === undefined ? [[]] : [[], encodedRevision];\n\t\t}\n\n\t\ttreesToEncode.push(chunk.cursor());\n\t\tconst treeIndexInBatch = treesToEncode.length - 1;\n\t\tbuildsForRevision?.[0].push([id, treeIndexInBatch]);\n\t}\n\n\tif (buildsForRevision !== undefined) {\n\t\tbuildsArray.push(buildsForRevision);\n\t}\n\n\treturn buildsArray.length === 0\n\t\t? undefined\n\t\t: {\n\t\t\t\tbuilds: buildsArray,\n\t\t\t\ttrees: fieldsCodec.encode(treesToEncode, {\n\t\t\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\t\t\tschema: context.schema,\n\t\t\t\t\toriginatorId: context.originatorId,\n\t\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t\t}),\n\t\t\t};\n}\n\nexport function decodeDetachedNodes(\n\tencoded: EncodedBuilds | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): ChangeAtomIdBTree<TreeChunk> | undefined {\n\tif (encoded === undefined || encoded.builds.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst chunks = fieldsCodec.decode(encoded.trees, {\n\t\tencodeType: chunkCompressionStrategy,\n\t\toriginatorId: context.originatorId,\n\t\tidCompressor: context.idCompressor,\n\t});\n\tconst getChunk = (index: number): TreeChunk => {\n\t\tassert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);\n\t\treturn chunkFieldSingle(chunks[index] ?? oob(), {\n\t\t\tpolicy: defaultChunkPolicy,\n\t\t\tidCompressor: context.idCompressor,\n\t\t});\n\t};\n\n\tconst map: ModularChangeset[\"builds\"] = newTupleBTree();\n\tencoded.builds.forEach((build) => {\n\t\t// EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple\n\t\tconst revision =\n\t\t\tbuild[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);\n\n\t\tconst decodedChunks: [ChangesetLocalId, TreeChunk][] = build[0].map(([i, n]) => [\n\t\t\ti,\n\t\t\tgetChunk(n),\n\t\t]);\n\n\t\tfor (const [id, chunk] of decodedChunks) {\n\t\t\tmap.set([revision, id], chunk);\n\t\t}\n\t});\n\n\treturn map;\n}\n\nexport function encodeRevisionInfos(\n\trevisions: readonly RevisionInfo[],\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n): EncodedRevisionInfo[] | undefined {\n\tif (context.revision !== undefined) {\n\t\tassert(\n\t\t\trevisions.length === 1 &&\n\t\t\t\trevisions[0] !== undefined &&\n\t\t\t\trevisions[0].revision === context.revision &&\n\t\t\t\trevisions[0].rollbackOf === undefined,\n\t\t\t0x964 /* A tagged change should only contain the tagged revision */,\n\t\t);\n\n\t\treturn undefined;\n\t}\n\n\tconst encodedRevisions = [];\n\tfor (const revision of revisions) {\n\t\tconst encodedRevision: Mutable<EncodedRevisionInfo> = {\n\t\t\trevision: revisionTagCodec.encode(revision.revision, context),\n\t\t};\n\n\t\tif (revision.rollbackOf !== undefined) {\n\t\t\tencodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);\n\t\t}\n\n\t\tencodedRevisions.push(encodedRevision);\n\t}\n\n\treturn encodedRevisions;\n}\n\nexport function decodeRevisionInfos(\n\trevisions: readonly EncodedRevisionInfo[] | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n): RevisionInfo[] | undefined {\n\tif (revisions === undefined) {\n\t\treturn context.revision === undefined ? undefined : [{ revision: context.revision }];\n\t}\n\n\tconst decodedRevisions = [];\n\tfor (const revision of revisions) {\n\t\tconst decodedRevision: Mutable<RevisionInfo> = {\n\t\t\trevision: revisionTagCodec.decode(revision.revision, context),\n\t\t};\n\n\t\tif (revision.rollbackOf !== undefined) {\n\t\t\tdecodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);\n\t\t}\n\n\t\tdecodedRevisions.push(decodedRevision);\n\t}\n\n\treturn decodedRevisions;\n}\n\nexport function encodeChange(\n\tchange: ModularChangeset,\n\tcontext: ChangeEncodingContext,\n\tfieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): EncodedModularChangesetV1 {\n\t// Destroys only exist in rollback changesets, which are never sent.\n\tassert(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);\n\treturn {\n\t\tmaxId: change.maxId,\n\t\trevisions:\n\t\t\tchange.revisions === undefined\n\t\t\t\t? undefined\n\t\t\t\t: encodeRevisionInfos(change.revisions, context, revisionTagCodec),\n\t\tchanges: encodeFieldChangesForJson(\n\t\t\tchange.fieldChanges,\n\t\t\tcontext,\n\t\t\tchange.nodeChanges,\n\t\t\tfieldChangesetCodecs,\n\t\t),\n\t\tbuilds: encodeDetachedNodes(\n\t\t\tchange.builds,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t),\n\t\trefreshers: encodeDetachedNodes(\n\t\t\tchange.refreshers,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t),\n\t\tviolations: change.constraintViolationCount,\n\t};\n}\n\nexport function decodeChange(\n\tencodedChange: EncodedModularChangesetV1,\n\tcontext: ChangeEncodingContext,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): Mutable<ModularChangeset> {\n\tconst decoded: Mutable<ModularChangeset> = {\n\t\tfieldChanges: new Map(),\n\t\tnodeChanges: newTupleBTree(),\n\t\tnodeToParent: newTupleBTree(),\n\t\tnodeAliases: newTupleBTree(),\n\t\tcrossFieldKeys: newCrossFieldKeyTable(),\n\t};\n\n\tdecoded.fieldChanges = decodeFieldChangesFromJson(\n\t\tencodedChange.changes,\n\t\tundefined,\n\t\tdecoded,\n\t\tcontext,\n\t\tidAllocatorFromMaxId(encodedChange.maxId),\n\t\tfieldKinds,\n\t\tfieldChangesetCodecs,\n\t);\n\n\tif (encodedChange.builds !== undefined) {\n\t\tdecoded.builds = decodeDetachedNodes(\n\t\t\tencodedChange.builds,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t);\n\t}\n\tif (encodedChange.refreshers !== undefined) {\n\t\tdecoded.refreshers = decodeDetachedNodes(\n\t\t\tencodedChange.refreshers,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t);\n\t}\n\n\tif (encodedChange.violations !== undefined) {\n\t\tdecoded.constraintViolationCount = encodedChange.violations;\n\t}\n\n\tconst decodedRevInfos = decodeRevisionInfos(\n\t\tencodedChange.revisions,\n\t\tcontext,\n\t\trevisionTagCodec,\n\t);\n\tif (decodedRevInfos !== undefined) {\n\t\tdecoded.revisions = decodedRevInfos;\n\t}\n\tif (encodedChange.maxId !== undefined) {\n\t\tdecoded.maxId = encodedChange.maxId;\n\t}\n\treturn decoded;\n}\n\nexport function getFieldChangesetCodecs(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tcodecOptions: ICodecOptions,\n): Map<\n\tFieldKindIdentifier,\n\t{ compiledSchema?: SchemaValidationFunction<TAnySchema>; codec: FieldCodec }\n> {\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tconst getMapEntry = ({ kind, formatVersion }: FieldKindConfigurationEntry) => {\n\t\tconst codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);\n\t\treturn {\n\t\t\tcodec,\n\t\t\tcompiledSchema: codec.json.encodedSchema\n\t\t\t\t? extractJsonValidator(codecOptions.jsonValidator).compile(codec.json.encodedSchema)\n\t\t\t\t: undefined,\n\t\t};\n\t};\n\n\t/**\n\t * The codec version for the generic field kind.\n\t */\n\tconst genericFieldKindFormatVersion = 1;\n\tconst fieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t> = new Map([\n\t\t[\n\t\t\tgenericFieldKind.identifier,\n\t\t\tgetMapEntry({ kind: genericFieldKind, formatVersion: genericFieldKindFormatVersion }),\n\t\t],\n\t]);\n\n\tfieldKinds.forEach((entry, identifier) => {\n\t\tfieldChangesetCodecs.set(identifier, getMapEntry(entry));\n\t});\n\n\treturn fieldChangesetCodecs;\n}\n\nexport function makeModularChangeCodecV1(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tcodecOptions: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ModularChangeCodec {\n\tconst fieldChangesetCodecs = getFieldChangesetCodecs(\n\t\tfieldKinds,\n\t\trevisionTagCodec,\n\t\tcodecOptions,\n\t);\n\n\tconst modularChangeCodec: ModularChangeCodec = {\n\t\tencode: (change, context) =>\n\t\t\tencodeChange(\n\t\t\t\tchange,\n\t\t\t\tcontext,\n\t\t\t\tfieldChangesetCodecs,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\t\tdecode: (encodedChange, context) =>\n\t\t\tdecodeChange(\n\t\t\t\tencodedChange,\n\t\t\t\tcontext,\n\t\t\t\tfieldKinds,\n\t\t\t\tfieldChangesetCodecs,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\t};\n\n\treturn withSchemaValidation(\n\t\tEncodedModularChangesetV1,\n\t\tmodularChangeCodec,\n\t\tcodecOptions.jsonValidator,\n\t);\n}\n\nfunction getChangeHandler(\n\tfieldKinds: FieldKindConfiguration,\n\tfieldKind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\tif (fieldKind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind.changeHandler;\n\t}\n\n\tconst handler = fieldKinds.get(fieldKind)?.kind.changeHandler;\n\tassert(handler !== undefined, 0x9c1 /* Unknown field kind */);\n\treturn handler;\n}\n\nfunction encodeRevisionOpt(\n\trevisionCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\trevision: RevisionTag | undefined,\n\tcontext: ChangeEncodingContext,\n): EncodedRevisionTag | undefined {\n\tif (revision === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn revision === context.revision ? undefined : revisionCodec.encode(revision, context);\n}\n"]}
1
+ {"version":3,"file":"modularChangeCodecV1.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecV1.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, fail, oob } from \"@fluidframework/core-utils/internal\";\nimport {\n\textractJsonValidator,\n\twithSchemaValidation,\n\ttype ICodecOptions,\n\ttype IJsonCodec,\n\ttype IMultiFormatCodec,\n\ttype SchemaValidationFunction,\n} from \"../../codec/index.js\";\nimport {\n\tnewChangeAtomIdTransform,\n\ttype ChangeAtomId,\n\ttype ChangeAtomIdRangeMap,\n\ttype ChangeEncodingContext,\n\ttype ChangesetLocalId,\n\ttype EncodedRevisionTag,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype ITreeCursorSynchronous,\n\ttype RevisionInfo,\n\ttype RevisionTag,\n} from \"../../core/index.js\";\nimport {\n\tbrand,\n\tidAllocatorFromMaxId,\n\tnewTupleBTree,\n\ttype IdAllocator,\n\ttype JsonCompatibleReadOnly,\n\ttype Mutable,\n\ttype RangeQueryEntry,\n\ttype RangeQueryResult,\n\ttype TupleBTree,\n} from \"../../util/index.js\";\nimport {\n\tchunkFieldSingle,\n\tdefaultChunkPolicy,\n\ttype FieldBatchCodec,\n\ttype TreeChunk,\n} from \"../chunked-forest/index.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\nimport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nimport {\n\taddNodeRename,\n\tgetFirstAttachField,\n\tgetFirstDetachField,\n\tnewRootTable,\n\tnormalizeFieldId,\n\tvalidateChangeset,\n\ttype FieldIdKey,\n} from \"./modularChangeFamily.js\";\nimport {\n\tnewCrossFieldRangeTable,\n\ttype CrossFieldKeyTable,\n\ttype FieldChangeMap,\n\ttype FieldChangeset,\n\ttype FieldId,\n\ttype ModularChangeset,\n\ttype NodeChangeset,\n\ttype NodeId,\n\ttype NodeLocation,\n\ttype RootNodeTable,\n} from \"./modularChangeTypes.js\";\nimport type {\n\tEncodedBuilds,\n\tEncodedBuildsArray,\n\tEncodedFieldChange,\n\tEncodedFieldChangeMap,\n\tEncodedNodeChangeset,\n\tEncodedRevisionInfo,\n} from \"./modularChangeFormatV1.js\";\nimport { EncodedModularChangesetV1 } from \"./modularChangeFormatV1.js\";\nimport type { FieldChangeEncodingContext, FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\nimport { setInChangeAtomIdMap, type ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\n\ntype ModularChangeCodec = IJsonCodec<\n\tModularChangeset,\n\tEncodedModularChangesetV1,\n\tEncodedModularChangesetV1,\n\tChangeEncodingContext\n>;\n\ntype FieldCodec = IMultiFormatCodec<\n\tFieldChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext\n>;\n\ninterface FieldRootChanges {\n\treadonly nodeChanges: ChangeAtomIdBTree<NodeId>;\n\treadonly renames: ChangeAtomIdRangeMap<ChangeAtomId>;\n}\n\ntype FieldRootMap = TupleBTree<FieldIdKey, FieldRootChanges>;\n\ntype FieldChangesetCodecs = Map<\n\tFieldKindIdentifier,\n\t{\n\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\tcodec: FieldCodec;\n\t}\n>;\n\nexport function getFieldChangesetCodecs(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tcodecOptions: ICodecOptions,\n): Map<\n\tFieldKindIdentifier,\n\t{ compiledSchema?: SchemaValidationFunction<TAnySchema>; codec: FieldCodec }\n> {\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tconst getMapEntry = ({ kind, formatVersion }: FieldKindConfigurationEntry) => {\n\t\tconst codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);\n\t\treturn {\n\t\t\tcodec,\n\t\t\tcompiledSchema: codec.json.encodedSchema\n\t\t\t\t? extractJsonValidator(codecOptions.jsonValidator).compile(codec.json.encodedSchema)\n\t\t\t\t: undefined,\n\t\t};\n\t};\n\n\t/**\n\t * The codec version for the generic field kind.\n\t */\n\tconst genericFieldKindFormatVersion = 1;\n\tconst fieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t> = new Map([\n\t\t[\n\t\t\tgenericFieldKind.identifier,\n\t\t\tgetMapEntry({ kind: genericFieldKind, formatVersion: genericFieldKindFormatVersion }),\n\t\t],\n\t]);\n\n\t// eslint-disable-next-line unicorn/no-array-for-each -- Map.forEach with (value, key) signature; codec initialization\n\tfieldKinds.forEach((entry, identifier) => {\n\t\tfieldChangesetCodecs.set(identifier, getMapEntry(entry));\n\t});\n\n\treturn fieldChangesetCodecs;\n}\n\nfunction encodeFieldChangesForJson(\n\tchange: FieldChangeMap,\n\tparentId: NodeId | undefined,\n\tfieldToRoots: FieldRootMap,\n\tcontext: ChangeEncodingContext,\n\tencodeNode: NodeEncoder,\n\tgetInputRootId: ChangeAtomMappingQuery,\n\tisAttachId: ChangeAtomIdRangeQuery,\n\tisDetachId: ChangeAtomIdRangeQuery,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): EncodedFieldChangeMap {\n\tconst encodedFields: EncodedFieldChangeMap = [];\n\n\tfor (const [field, fieldChange] of change) {\n\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(\n\t\t\tfieldChange.fieldKind,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t\tconst rootChanges = fieldToRoots.get([parentId?.revision, parentId?.localId, field]);\n\n\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\tbaseContext: context,\n\t\t\trootNodeChanges: rootChanges?.nodeChanges ?? newTupleBTree(),\n\t\t\trootRenames: rootChanges?.renames ?? newChangeAtomIdTransform(),\n\n\t\t\tencodeNode,\n\t\t\tgetInputRootId,\n\t\t\tisAttachId,\n\t\t\tisDetachId,\n\t\t\tdecodeNode: () => fail(0xb1e /* Should not decode nodes during field encoding */),\n\t\t\tdecodeRootNodeChange: () => fail(\"Should not be called during encoding\"),\n\t\t\tdecodeRootRename: () => fail(\"Should not be called during encoding\"),\n\t\t\tdecodeMoveAndDetach: () => fail(\"Should not be called during encoding\"),\n\t\t\tgenerateId: () => fail(\"Should not be called during encoding\"),\n\t\t};\n\n\t\tconst encodedChange = codec.json.encode(fieldChange.change, fieldContext);\n\t\tif (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {\n\t\t\tfail(0xb1f /* Encoded change didn't pass schema validation. */);\n\t\t}\n\n\t\tconst fieldKey: FieldKey = field;\n\t\tconst encodedField: EncodedFieldChange = {\n\t\t\tfieldKey,\n\t\t\tfieldKind: fieldChange.fieldKind,\n\t\t\tchange: encodedChange,\n\t\t};\n\n\t\tencodedFields.push(encodedField);\n\t}\n\n\treturn encodedFields;\n}\n\ntype ChangeAtomMappingQuery = (\n\tid: ChangeAtomId,\n\tcount: number,\n) => RangeQueryResult<ChangeAtomId | undefined>;\n\ntype ChangeAtomIdRangeQuery = (id: ChangeAtomId, count: number) => RangeQueryResult<boolean>;\ntype NodeEncoder = (nodeId: NodeId) => EncodedNodeChangeset;\ntype NodeDecoder = (encoded: EncodedNodeChangeset, fieldId: NodeLocation) => NodeId;\n\nfunction encodeNodeChangesForJson(\n\tchange: NodeChangeset,\n\tid: NodeId,\n\tfieldToRoots: FieldRootMap,\n\tcontext: ChangeEncodingContext,\n\tencodeNode: NodeEncoder,\n\tgetInputRootId: ChangeAtomMappingQuery,\n\tisAttachId: ChangeAtomIdRangeQuery,\n\tisDetachId: ChangeAtomIdRangeQuery,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): EncodedNodeChangeset {\n\tconst encodedChange: EncodedNodeChangeset = {};\n\t// Note: revert constraints are ignored for now because they would only be needed if we supported reverting changes made by peers.\n\tconst { fieldChanges, nodeExistsConstraint } = change;\n\n\tif (fieldChanges !== undefined) {\n\t\tencodedChange.fieldChanges = encodeFieldChangesForJson(\n\t\t\tfieldChanges,\n\t\t\tid,\n\t\t\tfieldToRoots,\n\t\t\tcontext,\n\t\t\tencodeNode,\n\t\t\tgetInputRootId,\n\t\t\tisAttachId,\n\t\t\tisDetachId,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t}\n\n\tif (nodeExistsConstraint !== undefined) {\n\t\tencodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t}\n\n\treturn encodedChange;\n}\n\nfunction getFieldChangesetCodec(\n\tfieldKind: FieldKindIdentifier,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): {\n\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\tcodec: FieldCodec;\n} {\n\tconst entry = fieldChangesetCodecs.get(fieldKind);\n\tassert(entry !== undefined, 0x5ea /* Tried to encode unsupported fieldKind */);\n\treturn entry;\n}\n\nfunction decodeFieldChangesFromJson(\n\tencodedChange: EncodedFieldChangeMap,\n\tparentId: NodeId | undefined,\n\tdecodedCrossFieldKeys: CrossFieldKeyTable,\n\tdecodedRootTable: RootNodeTable,\n\tcontext: ChangeEncodingContext,\n\tdecodeNode: NodeDecoder,\n\tidAllocator: IdAllocator,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): FieldChangeMap {\n\tconst decodedFields: FieldChangeMap = new Map();\n\tfor (const field of encodedChange) {\n\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(\n\t\t\tfield.fieldKind,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t\tif (compiledSchema !== undefined && !compiledSchema.check(field.change)) {\n\t\t\tfail(0xb20 /* Encoded change didn't pass schema validation. */);\n\t\t}\n\n\t\tconst fieldId: FieldId = {\n\t\t\tnodeId: parentId,\n\t\t\tfield: field.fieldKey,\n\t\t};\n\n\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\tbaseContext: context,\n\t\t\trootNodeChanges: newTupleBTree(),\n\t\t\trootRenames: newChangeAtomIdTransform(),\n\n\t\t\tencodeNode: () => fail(0xb21 /* Should not encode nodes during field decoding */),\n\t\t\tgetInputRootId: () => fail(\"Should not query during decoding\"),\n\t\t\tisAttachId: () => fail(\"Should not query during decoding\"),\n\t\t\tisDetachId: () => fail(\"Should not query during decoding\"),\n\n\t\t\tdecodeNode: (encodedNode: EncodedNodeChangeset): NodeId => {\n\t\t\t\treturn decodeNode(encodedNode, { field: fieldId });\n\t\t\t},\n\n\t\t\tdecodeRootNodeChange: (detachId, encodedNode): void => {\n\t\t\t\tsetInChangeAtomIdMap(\n\t\t\t\t\tdecodedRootTable.nodeChanges,\n\t\t\t\t\tdetachId,\n\t\t\t\t\tdecodeNode(encodedNode, { root: detachId }),\n\t\t\t\t);\n\t\t\t\tdecodedRootTable.detachLocations.set(detachId, 1, fieldId);\n\t\t\t},\n\n\t\t\tdecodeRootRename: (oldId, newId, count): void => {\n\t\t\t\taddNodeRename(decodedRootTable, oldId, newId, count, fieldId);\n\t\t\t},\n\n\t\t\tdecodeMoveAndDetach: (detachId, count): void => {\n\t\t\t\tdecodedRootTable.outputDetachLocations.set(detachId, count, fieldId);\n\t\t\t},\n\n\t\t\tgenerateId: (): ChangeAtomId => ({\n\t\t\t\trevision: context.revision,\n\t\t\t\tlocalId: brand(idAllocator.allocate()),\n\t\t\t}),\n\t\t};\n\n\t\tconst fieldChangeset = codec.json.decode(field.change, fieldContext);\n\n\t\tconst crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(\n\t\t\tfieldChangeset,\n\t\t);\n\n\t\tfor (const { key, count } of crossFieldKeys) {\n\t\t\tdecodedCrossFieldKeys.set(key, count, fieldId);\n\t\t}\n\n\t\tconst fieldKey: FieldKey = brand<FieldKey>(field.fieldKey);\n\n\t\tdecodedFields.set(fieldKey, {\n\t\t\tfieldKind: field.fieldKind,\n\t\t\tchange: brand(fieldChangeset),\n\t\t});\n\t}\n\n\treturn decodedFields;\n}\n\nfunction decodeNodeChangesetFromJson(\n\tencodedChange: EncodedNodeChangeset,\n\tid: NodeId,\n\tdecodedCrossFieldKeys: CrossFieldKeyTable,\n\tdecodedRootTable: RootNodeTable,\n\tcontext: ChangeEncodingContext,\n\tdecodeNode: NodeDecoder,\n\tidAllocator: IdAllocator,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n): NodeChangeset {\n\tconst decodedChange: Mutable<NodeChangeset> = {};\n\tconst { fieldChanges, nodeExistsConstraint } = encodedChange;\n\n\tif (fieldChanges !== undefined) {\n\t\tdecodedChange.fieldChanges = decodeFieldChangesFromJson(\n\t\t\tfieldChanges,\n\t\t\tid,\n\t\t\tdecodedCrossFieldKeys,\n\t\t\tdecodedRootTable,\n\t\t\tcontext,\n\t\t\tdecodeNode,\n\t\t\tidAllocator,\n\t\t\tfieldKinds,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t}\n\n\tif (nodeExistsConstraint !== undefined) {\n\t\tdecodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t}\n\n\treturn decodedChange;\n}\n\nfunction decodeDetachedNodes(\n\tencoded: EncodedBuilds | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): ChangeAtomIdBTree<TreeChunk> | undefined {\n\tif (encoded === undefined || encoded.builds.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst chunks = fieldsCodec.decode(encoded.trees, {\n\t\tencodeType: chunkCompressionStrategy,\n\t\toriginatorId: context.originatorId,\n\t\tidCompressor: context.idCompressor,\n\t});\n\tconst getChunk = (index: number): TreeChunk => {\n\t\tassert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);\n\t\treturn chunkFieldSingle(chunks[index] ?? oob(), {\n\t\t\tpolicy: defaultChunkPolicy,\n\t\t\tidCompressor: context.idCompressor,\n\t\t});\n\t};\n\n\tconst map: ModularChangeset[\"builds\"] = newTupleBTree();\n\t// eslint-disable-next-line unicorn/no-array-for-each -- Codec internals: minimizing changes to serialization logic\n\tencoded.builds.forEach((build) => {\n\t\t// EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple\n\t\tconst revision =\n\t\t\tbuild[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);\n\n\t\tconst decodedChunks: [ChangesetLocalId, TreeChunk][] = build[0].map(([i, n]) => [\n\t\t\ti,\n\t\t\tgetChunk(n),\n\t\t]);\n\n\t\tfor (const [id, chunk] of decodedChunks) {\n\t\t\tmap.set([revision, id], chunk);\n\t\t}\n\t});\n\n\treturn map;\n}\n\nfunction decodeRevisionInfos(\n\trevisions: readonly EncodedRevisionInfo[] | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n): RevisionInfo[] | undefined {\n\tif (revisions === undefined) {\n\t\treturn context.revision === undefined ? undefined : [{ revision: context.revision }];\n\t}\n\n\tconst decodedRevisions = [];\n\tfor (const revision of revisions) {\n\t\tconst decodedRevision: Mutable<RevisionInfo> = {\n\t\t\trevision: revisionTagCodec.decode(revision.revision, context),\n\t\t};\n\n\t\tif (revision.rollbackOf !== undefined) {\n\t\t\tdecodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);\n\t\t}\n\n\t\tdecodedRevisions.push(decodedRevision);\n\t}\n\n\treturn decodedRevisions;\n}\n\nexport function makeModularChangeCodecV1(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tcodecOptions: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ModularChangeCodec {\n\tconst fieldChangesetCodecs = getFieldChangesetCodecs(\n\t\tfieldKinds,\n\t\trevisionTagCodec,\n\t\tcodecOptions,\n\t);\n\n\tconst modularChangeCodec: ModularChangeCodec = {\n\t\tencode: (change, context) =>\n\t\t\tencodeChange(\n\t\t\t\tchange,\n\t\t\t\tcontext,\n\t\t\t\tfieldChangesetCodecs,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\n\t\tdecode: (encodedChange, context) =>\n\t\t\tdecodeChange(\n\t\t\t\tencodedChange,\n\t\t\t\tcontext,\n\t\t\t\tfieldKinds,\n\t\t\t\tfieldChangesetCodecs,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\t};\n\n\treturn withSchemaValidation(\n\t\tEncodedModularChangesetV1,\n\t\tmodularChangeCodec,\n\t\tcodecOptions.jsonValidator,\n\t);\n}\n\nexport function encodeChange(\n\tchange: ModularChangeset,\n\tcontext: ChangeEncodingContext,\n\tfieldChangesetCodecs: FieldChangesetCodecs,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): EncodedModularChangesetV1 {\n\tconst fieldToRoots = getFieldToRoots(change.rootNodes, change.nodeAliases);\n\tconst isAttachId = (id: ChangeAtomId, count: number): RangeQueryResult<boolean> => {\n\t\tconst attachEntry = getFirstAttachField(change.crossFieldKeys, id, count);\n\t\treturn { ...attachEntry, value: attachEntry.value !== undefined };\n\t};\n\n\tconst isDetachId = (\n\t\tid: ChangeAtomId,\n\t\tcount: number,\n\t): RangeQueryEntry<ChangeAtomId, boolean> => {\n\t\tconst detachEntry = getFirstDetachField(change.crossFieldKeys, id, count);\n\t\tconst renameEntry = change.rootNodes.oldToNewId.getFirst(id, detachEntry.length);\n\t\tconst isDetach = (detachEntry.value ?? renameEntry.value) !== undefined;\n\t\treturn { start: id, value: isDetach, length: renameEntry.length };\n\t};\n\n\tconst getInputRootId = (\n\t\tid: ChangeAtomId,\n\t\tcount: number,\n\t): RangeQueryResult<ChangeAtomId | undefined> => {\n\t\treturn change.rootNodes.newToOldId.getFirst(id, count);\n\t};\n\n\tconst encodeNode = (nodeId: NodeId): EncodedNodeChangeset => {\n\t\t// TODO: Handle node aliasing.\n\t\tconst node = change.nodeChanges.get([nodeId.revision, nodeId.localId]);\n\t\tassert(node !== undefined, 0x92e /* Unknown node ID */);\n\t\treturn encodeNodeChangesForJson(\n\t\t\tnode,\n\t\t\tnodeId,\n\t\t\tfieldToRoots,\n\t\t\tcontext,\n\t\t\tencodeNode,\n\t\t\tgetInputRootId,\n\t\t\tisAttachId,\n\t\t\tisDetachId,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\t};\n\n\t// Destroys only exist in rollback changesets, which are never sent.\n\tassert(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);\n\tconst encoded: EncodedModularChangesetV1 = {\n\t\tmaxId: change.maxId,\n\t\trevisions:\n\t\t\tchange.revisions === undefined\n\t\t\t\t? undefined\n\t\t\t\t: encodeRevisionInfos(change.revisions, context, revisionTagCodec),\n\t\tchanges: encodeFieldChangesForJson(\n\t\t\tchange.fieldChanges,\n\t\t\tundefined,\n\t\t\tfieldToRoots,\n\t\t\tcontext,\n\t\t\tencodeNode,\n\t\t\tgetInputRootId,\n\t\t\tisAttachId,\n\t\t\tisDetachId,\n\t\t\tfieldChangesetCodecs,\n\t\t),\n\t\tbuilds: encodeDetachedNodes(\n\t\t\tchange.builds,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t),\n\t\trefreshers: encodeDetachedNodes(\n\t\t\tchange.refreshers,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t),\n\t\tviolations: change.constraintViolationCount,\n\t};\n\n\treturn encoded;\n}\n\nfunction encodeRevisionInfos(\n\trevisions: readonly RevisionInfo[],\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n): EncodedRevisionInfo[] | undefined {\n\tif (context.revision !== undefined) {\n\t\tassert(\n\t\t\trevisions.length === 1 &&\n\t\t\t\trevisions[0] !== undefined &&\n\t\t\t\trevisions[0].revision === context.revision &&\n\t\t\t\trevisions[0].rollbackOf === undefined,\n\t\t\t0x964 /* A tagged change should only contain the tagged revision */,\n\t\t);\n\n\t\treturn undefined;\n\t}\n\n\tconst encodedRevisions = [];\n\tfor (const revision of revisions) {\n\t\tconst encodedRevision: Mutable<EncodedRevisionInfo> = {\n\t\t\trevision: revisionTagCodec.encode(revision.revision, context),\n\t\t};\n\n\t\tif (revision.rollbackOf !== undefined) {\n\t\t\tencodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);\n\t\t}\n\n\t\tencodedRevisions.push(encodedRevision);\n\t}\n\n\treturn encodedRevisions;\n}\n\nfunction encodeDetachedNodes(\n\tdetachedNodes: ChangeAtomIdBTree<TreeChunk> | undefined,\n\tcontext: ChangeEncodingContext,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): EncodedBuilds | undefined {\n\tif (detachedNodes === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst treesToEncode: ITreeCursorSynchronous[] = [];\n\tconst buildsArray: EncodedBuildsArray = [];\n\n\tlet buildsForRevision:\n\t\t| [[ChangesetLocalId, number][], EncodedRevisionTag]\n\t\t| [[ChangesetLocalId, number][]]\n\t\t| undefined;\n\n\tfor (const [[revision, id], chunk] of detachedNodes.entries()) {\n\t\tconst encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);\n\n\t\tif (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {\n\t\t\tif (buildsForRevision !== undefined) {\n\t\t\t\tbuildsArray.push(buildsForRevision);\n\t\t\t}\n\n\t\t\tbuildsForRevision = encodedRevision === undefined ? [[]] : [[], encodedRevision];\n\t\t}\n\n\t\ttreesToEncode.push(chunk.cursor());\n\t\tconst treeIndexInBatch = treesToEncode.length - 1;\n\t\tbuildsForRevision?.[0].push([id, treeIndexInBatch]);\n\t}\n\n\tif (buildsForRevision !== undefined) {\n\t\tbuildsArray.push(buildsForRevision);\n\t}\n\n\treturn buildsArray.length === 0\n\t\t? undefined\n\t\t: {\n\t\t\t\tbuilds: buildsArray,\n\t\t\t\ttrees: fieldsCodec.encode(treesToEncode, {\n\t\t\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\t\t\tschema: context.schema,\n\t\t\t\t\toriginatorId: context.originatorId,\n\t\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t\t}),\n\t\t\t};\n}\n\nfunction getChangeHandler(\n\tfieldKinds: FieldKindConfiguration,\n\tfieldKind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\tif (fieldKind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind.changeHandler;\n\t}\n\n\tconst handler = fieldKinds.get(fieldKind)?.kind.changeHandler;\n\tassert(handler !== undefined, 0x9c1 /* Unknown field kind */);\n\treturn handler;\n}\n\nfunction encodeRevisionOpt(\n\trevisionCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\trevision: RevisionTag | undefined,\n\tcontext: ChangeEncodingContext,\n): EncodedRevisionTag | undefined {\n\tif (revision === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn revision === context.revision ? undefined : revisionCodec.encode(revision, context);\n}\n\nfunction getFieldToRoots(\n\trootTable: RootNodeTable,\n\taliases: ChangeAtomIdBTree<NodeId>,\n): FieldRootMap {\n\tconst fieldToRoots: FieldRootMap = newTupleBTree();\n\tfor (const [[revision, localId], nodeId] of rootTable.nodeChanges.entries()) {\n\t\tconst detachId: ChangeAtomId = { revision, localId };\n\t\tconst fieldId = rootTable.detachLocations.getFirst(detachId, 1).value;\n\t\tif (fieldId === undefined) {\n\t\t\tfail(\"Untracked root change\");\n\t\t} else {\n\t\t\tsetInChangeAtomIdMap(\n\t\t\t\tgetOrAddInFieldRootMap(fieldToRoots, normalizeFieldId(fieldId, aliases)).nodeChanges,\n\t\t\t\tdetachId,\n\t\t\t\tnodeId,\n\t\t\t);\n\t\t}\n\t}\n\n\tfor (const entry of rootTable.oldToNewId.entries()) {\n\t\tconst fieldId = rootTable.detachLocations.getFirst(entry.start, 1).value;\n\t\tif (fieldId === undefined) {\n\t\t\tfail(\"Untracked root change\");\n\t\t} else {\n\t\t\tgetOrAddInFieldRootMap(fieldToRoots, normalizeFieldId(fieldId, aliases)).renames.set(\n\t\t\t\tentry.start,\n\t\t\t\tentry.length,\n\t\t\t\tentry.value,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn fieldToRoots;\n}\n\nfunction getOrAddInFieldRootMap(map: FieldRootMap, fieldId: FieldId): FieldRootChanges {\n\tconst key: FieldIdKey = [fieldId.nodeId?.revision, fieldId.nodeId?.localId, fieldId.field];\n\tconst rootChanges = map.get(key);\n\tif (rootChanges !== undefined) {\n\t\treturn rootChanges;\n\t}\n\n\tconst newRootChanges: FieldRootChanges = {\n\t\tnodeChanges: newTupleBTree(),\n\t\trenames: newChangeAtomIdTransform(),\n\t};\n\tmap.set(key, newRootChanges);\n\treturn newRootChanges;\n}\n\nexport function decodeChange(\n\tencodedChange: EncodedModularChangesetV1,\n\tcontext: ChangeEncodingContext,\n\tfieldKinds: FieldKindConfiguration,\n\tfieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\tchunkCompressionStrategy: TreeCompressionStrategy,\n): Mutable<ModularChangeset> {\n\tconst idAllocator = idAllocatorFromMaxId(encodedChange.maxId);\n\tconst nodeChanges: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();\n\tconst nodeToParent: ChangeAtomIdBTree<NodeLocation> = newTupleBTree();\n\tconst crossFieldKeys: CrossFieldKeyTable = newCrossFieldRangeTable();\n\tconst rootNodes = newRootTable();\n\n\tconst decodeNode: NodeDecoder = (\n\t\tencodedNode: EncodedNodeChangeset,\n\t\tfieldId: NodeLocation,\n\t): NodeId => {\n\t\tconst nodeId: NodeId = {\n\t\t\trevision: context.revision,\n\t\t\tlocalId: brand(idAllocator.allocate()),\n\t\t};\n\n\t\tconst node = decodeNodeChangesetFromJson(\n\t\t\tencodedNode,\n\t\t\tnodeId,\n\t\t\tcrossFieldKeys,\n\t\t\trootNodes,\n\t\t\tcontext,\n\t\t\tdecodeNode,\n\t\t\tidAllocator,\n\t\t\tfieldKinds,\n\t\t\tfieldChangesetCodecs,\n\t\t);\n\n\t\tnodeChanges.set([nodeId.revision, nodeId.localId], node);\n\n\t\tif (fieldId !== undefined) {\n\t\t\tnodeToParent.set([nodeId.revision, nodeId.localId], fieldId);\n\t\t}\n\n\t\treturn nodeId;\n\t};\n\n\tconst decoded: Mutable<ModularChangeset> = {\n\t\trebaseVersion: 1,\n\t\tfieldChanges: decodeFieldChangesFromJson(\n\t\t\tencodedChange.changes,\n\t\t\tundefined,\n\t\t\tcrossFieldKeys,\n\t\t\trootNodes,\n\t\t\tcontext,\n\t\t\tdecodeNode,\n\t\t\tidAllocator,\n\t\t\tfieldKinds,\n\t\t\tfieldChangesetCodecs,\n\t\t),\n\t\tnodeChanges,\n\t\trootNodes,\n\t\tnodeToParent,\n\t\tnodeAliases: newTupleBTree(),\n\t\tcrossFieldKeys,\n\t};\n\n\tif (encodedChange.builds !== undefined) {\n\t\tdecoded.builds = decodeDetachedNodes(\n\t\t\tencodedChange.builds,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t);\n\t}\n\tif (encodedChange.refreshers !== undefined) {\n\t\tdecoded.refreshers = decodeDetachedNodes(\n\t\t\tencodedChange.refreshers,\n\t\t\tcontext,\n\t\t\trevisionTagCodec,\n\t\t\tfieldsCodec,\n\t\t\tchunkCompressionStrategy,\n\t\t);\n\t}\n\n\tif (encodedChange.violations !== undefined) {\n\t\tdecoded.constraintViolationCount = encodedChange.violations;\n\t}\n\n\tconst decodedRevInfos = decodeRevisionInfos(\n\t\tencodedChange.revisions,\n\t\tcontext,\n\t\trevisionTagCodec,\n\t);\n\tif (decodedRevInfos !== undefined) {\n\t\tdecoded.revisions = decodedRevInfos;\n\t}\n\tif (encodedChange.maxId !== undefined) {\n\t\tdecoded.maxId = encodedChange.maxId;\n\t}\n\n\t// XXX: This is an expensive assert which should be removed before merging.\n\tvalidateChangeset(decoded, fieldKindsFromConfiguration(fieldKinds));\n\treturn decoded;\n}\n\nfunction fieldKindsFromConfiguration(\n\tconfiguration: FieldKindConfiguration,\n): ReadonlyMap<FieldKindIdentifier, FlexFieldKind> {\n\tconst map = new Map();\n\tfor (const [id, entry] of configuration.entries()) {\n\t\tmap.set(id, entry.kind);\n\t}\n\treturn map;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { type ICodecOptions, type IJsonCodec } from "../../codec/index.js";
6
+ import { type ChangeEncodingContext, type EncodedRevisionTag, type RevisionTag } from "../../core/index.js";
7
+ import { type FieldBatchCodec } from "../chunked-forest/index.js";
8
+ import { TreeCompressionStrategy } from "../treeCompressionUtils.js";
9
+ import type { FieldKindConfiguration } from "./fieldKindConfiguration.js";
10
+ import { type ModularChangeset } from "./modularChangeTypes.js";
11
+ import { EncodedModularChangeset } from "./modularChangeFormatV3.js";
12
+ type ModularChangeCodec = IJsonCodec<ModularChangeset, EncodedModularChangeset, EncodedModularChangeset, ChangeEncodingContext>;
13
+ export declare function makeModularChangeCodecV3(fieldKinds: FieldKindConfiguration, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, fieldsCodec: FieldBatchCodec, codecOptions: ICodecOptions, chunkCompressionStrategy?: TreeCompressionStrategy): ModularChangeCodec;
14
+ export {};
15
+ //# sourceMappingURL=modularChangeCodecV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modularChangeCodecV3.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecV3.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,UAAU,EAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIN,KAAK,qBAAqB,EAE1B,KAAK,kBAAkB,EAKvB,KAAK,WAAW,EAChB,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EAGN,KAAK,eAAe,EAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAQ1E,OAAO,EAMN,KAAK,gBAAgB,EAKrB,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EACN,uBAAuB,EAGvB,MAAM,4BAA4B,CAAC;AAKpC,KAAK,kBAAkB,GAAG,UAAU,CACnC,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,CACrB,CAAC;AASF,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,sBAAsB,EAClC,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,aAAa,EAC3B,wBAAwB,GAAE,uBAA4D,GACpF,kBAAkB,CA0jBpB"}
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.makeModularChangeCodecV3 = void 0;
8
+ const internal_1 = require("@fluidframework/core-utils/internal");
9
+ const index_js_1 = require("../../codec/index.js");
10
+ const index_js_2 = require("../../core/index.js");
11
+ const index_js_3 = require("../../util/index.js");
12
+ const index_js_4 = require("../chunked-forest/index.js");
13
+ const treeCompressionUtils_js_1 = require("../treeCompressionUtils.js");
14
+ const modularChangeFamily_js_1 = require("./modularChangeFamily.js");
15
+ const modularChangeTypes_js_1 = require("./modularChangeTypes.js");
16
+ const genericFieldKind_js_1 = require("./genericFieldKind.js");
17
+ const modularChangeFormatV3_js_1 = require("./modularChangeFormatV3.js");
18
+ const changeAtomIdCodec_js_1 = require("../changeAtomIdCodec.js");
19
+ const changeAtomIdBTree_js_1 = require("../changeAtomIdBTree.js");
20
+ const modularChangeCodecV1_js_1 = require("./modularChangeCodecV1.js");
21
+ function makeModularChangeCodecV3(fieldKinds, revisionTagCodec, fieldsCodec, codecOptions, chunkCompressionStrategy = treeCompressionUtils_js_1.TreeCompressionStrategy.Compressed) {
22
+ const fieldChangesetCodecs = (0, modularChangeCodecV1_js_1.getFieldChangesetCodecs)(fieldKinds, revisionTagCodec, codecOptions);
23
+ const getFieldChangesetCodec = (fieldKind) => {
24
+ const entry = fieldChangesetCodecs.get(fieldKind);
25
+ (0, internal_1.assert)(entry !== undefined, "Tried to encode unsupported fieldKind");
26
+ return entry;
27
+ };
28
+ const changeAtomIdCodec = (0, changeAtomIdCodec_js_1.makeChangeAtomIdCodec)(revisionTagCodec);
29
+ function encodeFieldChangesForJson(change, parentId, fieldToRoots, context, encodeNode, getInputDetachId, isAttachId, isDetachId) {
30
+ const encodedFields = [];
31
+ for (const [field, fieldChange] of change) {
32
+ const { codec, compiledSchema } = getFieldChangesetCodec(fieldChange.fieldKind);
33
+ const rootChanges = fieldToRoots.get([parentId?.revision, parentId?.localId, field]);
34
+ const fieldContext = {
35
+ baseContext: context,
36
+ rootNodeChanges: rootChanges?.nodeChanges ?? (0, index_js_3.newTupleBTree)(),
37
+ rootRenames: rootChanges?.renames ?? (0, index_js_2.newChangeAtomIdTransform)(),
38
+ encodeNode,
39
+ getInputRootId: getInputDetachId,
40
+ isAttachId,
41
+ isDetachId,
42
+ decodeNode: () => (0, internal_1.fail)(0xb1e /* Should not decode nodes during field encoding */),
43
+ decodeRootNodeChange: () => (0, internal_1.fail)("Should not be called during encoding"),
44
+ decodeRootRename: () => (0, internal_1.fail)("Should not be called during encoding"),
45
+ decodeMoveAndDetach: () => (0, internal_1.fail)("Should not be called during encoding"),
46
+ generateId: () => (0, internal_1.fail)("Should not be called during encoding"),
47
+ };
48
+ const encodedChange = codec.json.encode(fieldChange.change, fieldContext);
49
+ if (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {
50
+ (0, internal_1.fail)(0xb1f /* Encoded change didn't pass schema validation. */);
51
+ }
52
+ const fieldKey = field;
53
+ const encodedField = {
54
+ fieldKey,
55
+ fieldKind: fieldChange.fieldKind,
56
+ change: encodedChange,
57
+ };
58
+ encodedFields.push(encodedField);
59
+ }
60
+ return encodedFields;
61
+ }
62
+ function encodeNodeChangesForJson(change, id, fieldToRoots, context, encodeNode, getInputDetachId, isAttachId, isDetachId) {
63
+ const encodedChange = {};
64
+ // Note: revert constraints are ignored for now because they would only be needed if we supported reverting changes made by peers.
65
+ const { fieldChanges, nodeExistsConstraint } = change;
66
+ if (fieldChanges !== undefined) {
67
+ encodedChange.fieldChanges = encodeFieldChangesForJson(fieldChanges, id, fieldToRoots, context, encodeNode, getInputDetachId, isAttachId, isDetachId);
68
+ }
69
+ if (nodeExistsConstraint !== undefined) {
70
+ encodedChange.nodeExistsConstraint = nodeExistsConstraint;
71
+ }
72
+ return encodedChange;
73
+ }
74
+ function encodeRootNodesForJson(roots, context, encodeNode) {
75
+ const encoded = [];
76
+ for (const [[revision, localId], nodeId] of roots.entries()) {
77
+ encoded.push({
78
+ detachId: changeAtomIdCodec.encode({ revision, localId }, context),
79
+ nodeChangeset: encodeNode(nodeId),
80
+ });
81
+ }
82
+ return encoded;
83
+ }
84
+ function encodeRenamesForJson(renames, context) {
85
+ const encoded = [];
86
+ for (const entry of renames.entries()) {
87
+ encoded.push({
88
+ oldId: changeAtomIdCodec.encode(entry.start, context),
89
+ newId: changeAtomIdCodec.encode(entry.value, context),
90
+ count: entry.length,
91
+ });
92
+ }
93
+ return encoded;
94
+ }
95
+ function decodeFieldChangesFromJson(encodedChange, parentId, decodedCrossFieldKeys, context, decodeNode, idAllocator) {
96
+ const decodedFields = new Map();
97
+ for (const field of encodedChange) {
98
+ const { codec, compiledSchema } = getFieldChangesetCodec(field.fieldKind);
99
+ if (compiledSchema !== undefined && !compiledSchema.check(field.change)) {
100
+ (0, internal_1.fail)(0xb20 /* Encoded change didn't pass schema validation. */);
101
+ }
102
+ const fieldId = {
103
+ nodeId: parentId,
104
+ field: field.fieldKey,
105
+ };
106
+ const fieldContext = {
107
+ baseContext: context,
108
+ rootNodeChanges: (0, index_js_3.newTupleBTree)(),
109
+ rootRenames: (0, index_js_2.newChangeAtomIdTransform)(),
110
+ encodeNode: () => (0, internal_1.fail)(0xb21 /* Should not encode nodes during field decoding */),
111
+ getInputRootId: () => (0, internal_1.fail)("Should not query during decoding"),
112
+ isAttachId: () => (0, internal_1.fail)("Should not query during decoding"),
113
+ isDetachId: () => (0, internal_1.fail)("Should not query during decoding"),
114
+ decodeNode: (encodedNode) => decodeNode(encodedNode, { field: fieldId }),
115
+ decodeRootNodeChange: (detachId, encodedNode) => { },
116
+ decodeRootRename: (oldId, newId, count) => { },
117
+ decodeMoveAndDetach: (detachId, count) => { },
118
+ generateId: () => ({
119
+ revision: context.revision,
120
+ localId: (0, index_js_3.brand)(idAllocator.allocate()),
121
+ }),
122
+ };
123
+ const fieldChangeset = codec.json.decode(field.change, fieldContext);
124
+ const crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(fieldChangeset);
125
+ for (const { key, count } of crossFieldKeys) {
126
+ decodedCrossFieldKeys.set(key, count, fieldId);
127
+ }
128
+ const fieldKey = (0, index_js_3.brand)(field.fieldKey);
129
+ decodedFields.set(fieldKey, {
130
+ fieldKind: field.fieldKind,
131
+ change: (0, index_js_3.brand)(fieldChangeset),
132
+ });
133
+ }
134
+ return decodedFields;
135
+ }
136
+ function decodeNodeChangesetFromJson(encodedChange, id, decodedCrossFieldKeys, decodedRootTable, context, decodeNode, idAllocator) {
137
+ const decodedChange = {};
138
+ const { fieldChanges, nodeExistsConstraint } = encodedChange;
139
+ if (fieldChanges !== undefined) {
140
+ decodedChange.fieldChanges = decodeFieldChangesFromJson(fieldChanges, id, decodedCrossFieldKeys, context, decodeNode, idAllocator);
141
+ }
142
+ if (nodeExistsConstraint !== undefined) {
143
+ decodedChange.nodeExistsConstraint = nodeExistsConstraint;
144
+ }
145
+ return decodedChange;
146
+ }
147
+ function encodeDetachedNodes(detachedNodes, context) {
148
+ if (detachedNodes === undefined) {
149
+ return undefined;
150
+ }
151
+ const treesToEncode = [];
152
+ const buildsArray = [];
153
+ let buildsForRevision;
154
+ for (const [[revision, id], chunk] of detachedNodes.entries()) {
155
+ const encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);
156
+ if (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {
157
+ if (buildsForRevision !== undefined) {
158
+ buildsArray.push(buildsForRevision);
159
+ }
160
+ buildsForRevision = encodedRevision === undefined ? [[]] : [[], encodedRevision];
161
+ }
162
+ treesToEncode.push(chunk.cursor());
163
+ const treeIndexInBatch = treesToEncode.length - 1;
164
+ buildsForRevision?.[0].push([id, treeIndexInBatch]);
165
+ }
166
+ if (buildsForRevision !== undefined) {
167
+ buildsArray.push(buildsForRevision);
168
+ }
169
+ return buildsArray.length === 0
170
+ ? undefined
171
+ : {
172
+ builds: buildsArray,
173
+ trees: fieldsCodec.encode(treesToEncode, {
174
+ encodeType: chunkCompressionStrategy,
175
+ schema: context.schema,
176
+ originatorId: context.originatorId,
177
+ idCompressor: context.idCompressor,
178
+ }),
179
+ };
180
+ }
181
+ function decodeDetachedNodes(encoded, context) {
182
+ if (encoded === undefined || encoded.builds.length === 0) {
183
+ return undefined;
184
+ }
185
+ const chunks = fieldsCodec.decode(encoded.trees, {
186
+ encodeType: chunkCompressionStrategy,
187
+ originatorId: context.originatorId,
188
+ idCompressor: context.idCompressor,
189
+ });
190
+ const getChunk = (index) => {
191
+ (0, internal_1.assert)(index < chunks.length, 0x898 /* out of bounds index for build chunk */);
192
+ return (0, index_js_4.chunkFieldSingle)(chunks[index] ?? (0, internal_1.oob)(), {
193
+ policy: index_js_4.defaultChunkPolicy,
194
+ idCompressor: context.idCompressor,
195
+ });
196
+ };
197
+ const map = (0, index_js_3.newTupleBTree)();
198
+ for (const build of encoded.builds) {
199
+ // EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple
200
+ const revision = build[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);
201
+ const decodedChunks = build[0].map(([i, n]) => [
202
+ i,
203
+ getChunk(n),
204
+ ]);
205
+ for (const [id, chunk] of decodedChunks) {
206
+ map.set([revision, id], chunk);
207
+ }
208
+ }
209
+ return map;
210
+ }
211
+ function encodeRevisionInfos(revisions, context) {
212
+ if (context.revision !== undefined) {
213
+ (0, internal_1.assert)(revisions.length === 1 &&
214
+ revisions[0] !== undefined &&
215
+ revisions[0].revision === context.revision &&
216
+ revisions[0].rollbackOf === undefined, 0x964 /* A tagged change should only contain the tagged revision */);
217
+ return undefined;
218
+ }
219
+ const encodedRevisions = [];
220
+ for (const revision of revisions) {
221
+ const encodedRevision = {
222
+ revision: revisionTagCodec.encode(revision.revision, context),
223
+ };
224
+ if (revision.rollbackOf !== undefined) {
225
+ encodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);
226
+ }
227
+ encodedRevisions.push(encodedRevision);
228
+ }
229
+ return encodedRevisions;
230
+ }
231
+ function decodeRevisionInfos(revisions, context) {
232
+ if (revisions === undefined) {
233
+ return context.revision === undefined ? undefined : [{ revision: context.revision }];
234
+ }
235
+ const decodedRevisions = [];
236
+ for (const revision of revisions) {
237
+ const decodedRevision = {
238
+ revision: revisionTagCodec.decode(revision.revision, context),
239
+ };
240
+ if (revision.rollbackOf !== undefined) {
241
+ decodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);
242
+ }
243
+ decodedRevisions.push(decodedRevision);
244
+ }
245
+ return decodedRevisions;
246
+ }
247
+ function decodeRootTable(encodedRoots, encodedRenames, context, decodeNode) {
248
+ const roots = (0, modularChangeFamily_js_1.newRootTable)();
249
+ if (encodedRoots !== undefined) {
250
+ for (const { detachId, nodeChangeset } of encodedRoots) {
251
+ const decodedId = changeAtomIdCodec.decode(detachId, context);
252
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(roots.nodeChanges, decodedId, decodeNode(nodeChangeset, { root: decodedId }));
253
+ }
254
+ }
255
+ if (encodedRenames !== undefined) {
256
+ for (const { oldId, newId, count } of encodedRenames) {
257
+ (0, modularChangeFamily_js_1.addNodeRename)(roots, changeAtomIdCodec.decode(oldId, context), changeAtomIdCodec.decode(newId, context), count, undefined);
258
+ }
259
+ }
260
+ return roots;
261
+ }
262
+ const modularChangeCodec = {
263
+ encode: (change, context) => {
264
+ const fieldToRoots = getFieldToRoots(change.rootNodes);
265
+ const isAttachId = (id, count) => {
266
+ const attachEntry = (0, modularChangeFamily_js_1.getFirstAttachField)(change.crossFieldKeys, id, count);
267
+ return { ...attachEntry, value: attachEntry.value !== undefined };
268
+ };
269
+ const isDetachId = (id, count) => {
270
+ const detachEntry = (0, modularChangeFamily_js_1.getFirstDetachField)(change.crossFieldKeys, id, count);
271
+ const renameEntry = change.rootNodes.oldToNewId.getFirst(id, detachEntry.length);
272
+ const isDetach = (detachEntry.value ?? renameEntry.value) !== undefined;
273
+ return { start: id, value: isDetach, length: renameEntry.length };
274
+ };
275
+ const getInputDetachId = (id, count) => {
276
+ return change.rootNodes.newToOldId.getFirst(id, count);
277
+ };
278
+ const encodeNode = (nodeId) => {
279
+ // TODO: Handle node aliasing.
280
+ const node = change.nodeChanges.get([nodeId.revision, nodeId.localId]);
281
+ (0, internal_1.assert)(node !== undefined, 0x92e /* Unknown node ID */);
282
+ return encodeNodeChangesForJson(node, nodeId, fieldToRoots, context, encodeNode, getInputDetachId, isAttachId, isDetachId);
283
+ };
284
+ // Destroys only exist in rollback changesets, which are never sent.
285
+ (0, internal_1.assert)(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);
286
+ const encoded = {
287
+ maxId: change.maxId,
288
+ revisions: change.revisions === undefined
289
+ ? undefined
290
+ : encodeRevisionInfos(change.revisions, context),
291
+ fieldChanges: encodeFieldChangesForJson(change.fieldChanges, undefined, fieldToRoots, context, encodeNode, getInputDetachId, isAttachId, isDetachId),
292
+ rootNodes: encodeRootNodesForJson(change.rootNodes.nodeChanges, context, encodeNode),
293
+ nodeRenames: encodeRenamesForJson(change.rootNodes.oldToNewId, context),
294
+ builds: encodeDetachedNodes(change.builds, context),
295
+ refreshers: encodeDetachedNodes(change.refreshers, context),
296
+ violations: change.constraintViolationCount,
297
+ };
298
+ return encoded;
299
+ },
300
+ decode: (encodedChange, context) => {
301
+ const idAllocator = (0, index_js_3.idAllocatorFromMaxId)(encodedChange.maxId);
302
+ const nodeChanges = (0, index_js_3.newTupleBTree)();
303
+ const nodeToParent = (0, index_js_3.newTupleBTree)();
304
+ const crossFieldKeys = (0, modularChangeTypes_js_1.newCrossFieldRangeTable)();
305
+ const rootNodes = (0, modularChangeFamily_js_1.newRootTable)();
306
+ const decodeNode = (encodedNode, fieldId) => {
307
+ const nodeId = {
308
+ revision: context.revision,
309
+ localId: (0, index_js_3.brand)(idAllocator.allocate()),
310
+ };
311
+ const node = decodeNodeChangesetFromJson(encodedNode, nodeId, crossFieldKeys, rootNodes, context, decodeNode, idAllocator);
312
+ nodeChanges.set([nodeId.revision, nodeId.localId], node);
313
+ if (fieldId !== undefined) {
314
+ nodeToParent.set([nodeId.revision, nodeId.localId], fieldId);
315
+ }
316
+ return nodeId;
317
+ };
318
+ const decoded = {
319
+ rebaseVersion: 2,
320
+ fieldChanges: decodeFieldChangesFromJson(encodedChange.fieldChanges, undefined, crossFieldKeys, context, decodeNode, idAllocator),
321
+ nodeChanges,
322
+ rootNodes: decodeRootTable(encodedChange.rootNodes, encodedChange.nodeRenames, context, decodeNode),
323
+ nodeToParent,
324
+ nodeAliases: (0, index_js_3.newTupleBTree)(),
325
+ crossFieldKeys,
326
+ };
327
+ if (encodedChange.builds !== undefined) {
328
+ decoded.builds = decodeDetachedNodes(encodedChange.builds, context);
329
+ }
330
+ if (encodedChange.refreshers !== undefined) {
331
+ decoded.refreshers = decodeDetachedNodes(encodedChange.refreshers, context);
332
+ }
333
+ if (encodedChange.violations !== undefined) {
334
+ decoded.constraintViolationCount = encodedChange.violations;
335
+ }
336
+ const decodedRevInfos = decodeRevisionInfos(encodedChange.revisions, context);
337
+ if (decodedRevInfos !== undefined) {
338
+ decoded.revisions = decodedRevInfos;
339
+ }
340
+ if (encodedChange.maxId !== undefined) {
341
+ decoded.maxId = encodedChange.maxId;
342
+ }
343
+ return decoded;
344
+ },
345
+ };
346
+ return (0, index_js_1.withSchemaValidation)(modularChangeFormatV3_js_1.EncodedModularChangeset, modularChangeCodec, codecOptions.jsonValidator);
347
+ }
348
+ exports.makeModularChangeCodecV3 = makeModularChangeCodecV3;
349
+ function getChangeHandler(fieldKinds, fieldKind) {
350
+ if (fieldKind === genericFieldKind_js_1.genericFieldKind.identifier) {
351
+ return genericFieldKind_js_1.genericFieldKind.changeHandler;
352
+ }
353
+ const handler = fieldKinds.get(fieldKind)?.kind.changeHandler;
354
+ (0, internal_1.assert)(handler !== undefined, 0x9c1 /* Unknown field kind */);
355
+ return handler;
356
+ }
357
+ function encodeRevisionOpt(revisionCodec, revision, context) {
358
+ if (revision === undefined) {
359
+ return undefined;
360
+ }
361
+ return revision === context.revision ? undefined : revisionCodec.encode(revision, context);
362
+ }
363
+ function getFieldToRoots(rootTable) {
364
+ const fieldToRoots = (0, index_js_3.newTupleBTree)();
365
+ for (const [[revision, localId], nodeId] of rootTable.nodeChanges.entries()) {
366
+ const detachId = { revision, localId };
367
+ const fieldId = rootTable.detachLocations.getFirst(detachId, 1).value;
368
+ if (fieldId !== undefined) {
369
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(getOrAddInFieldRootMap(fieldToRoots, fieldId).nodeChanges, detachId, nodeId);
370
+ }
371
+ }
372
+ for (const entry of rootTable.oldToNewId.entries()) {
373
+ const fieldId = rootTable.detachLocations.getFirst(entry.start, 1).value;
374
+ if (fieldId !== undefined) {
375
+ getOrAddInFieldRootMap(fieldToRoots, fieldId).renames.set(entry.start, entry.length, entry.value);
376
+ }
377
+ }
378
+ return fieldToRoots;
379
+ }
380
+ function getOrAddInFieldRootMap(map, fieldId) {
381
+ const key = [fieldId.nodeId?.revision, fieldId.nodeId?.localId, fieldId.field];
382
+ const rootChanges = map.get(key);
383
+ if (rootChanges !== undefined) {
384
+ return rootChanges;
385
+ }
386
+ const newRootChanges = {
387
+ nodeChanges: (0, index_js_3.newTupleBTree)(),
388
+ renames: (0, index_js_2.newChangeAtomIdTransform)(),
389
+ };
390
+ map.set(key, newRootChanges);
391
+ return newRootChanges;
392
+ }
393
+ //# sourceMappingURL=modularChangeCodecV3.js.map