@fluidframework/tree 2.113.1 → 2.115.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/CHANGELOG.md +289 -0
  2. package/api-report/tree.alpha.api.md +127 -39
  3. package/dist/core/change-family/changeFamily.d.ts +15 -4
  4. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  5. package/dist/core/change-family/changeFamily.js.map +1 -1
  6. package/dist/core/change-family/editBuilder.d.ts +2 -3
  7. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  8. package/dist/core/change-family/editBuilder.js +1 -2
  9. package/dist/core/change-family/editBuilder.js.map +1 -1
  10. package/dist/core/change-family/index.d.ts +1 -1
  11. package/dist/core/change-family/index.d.ts.map +1 -1
  12. package/dist/core/change-family/index.js.map +1 -1
  13. package/dist/core/index.d.ts +4 -3
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/core/index.js +3 -2
  16. package/dist/core/index.js.map +1 -1
  17. package/dist/core/rebase/index.d.ts +1 -1
  18. package/dist/core/rebase/index.d.ts.map +1 -1
  19. package/dist/core/rebase/index.js +2 -1
  20. package/dist/core/rebase/index.js.map +1 -1
  21. package/dist/core/rebase/types.d.ts +110 -0
  22. package/dist/core/rebase/types.d.ts.map +1 -1
  23. package/dist/core/rebase/types.js +47 -1
  24. package/dist/core/rebase/types.js.map +1 -1
  25. package/dist/core/tree/delta.d.ts +62 -16
  26. package/dist/core/tree/delta.d.ts.map +1 -1
  27. package/dist/core/tree/delta.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.d.ts +7 -13
  29. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  30. package/dist/core/tree/detachedFieldIndex.js +32 -46
  31. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  32. package/dist/core/tree/index.d.ts +1 -0
  33. package/dist/core/tree/index.d.ts.map +1 -1
  34. package/dist/core/tree/index.js.map +1 -1
  35. package/dist/core/tree/visitorUtils.d.ts +2 -4
  36. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  37. package/dist/core/tree/visitorUtils.js +2 -2
  38. package/dist/core/tree/visitorUtils.js.map +1 -1
  39. package/dist/entrypoints/alpha.d.ts +1 -1
  40. package/dist/entrypoints/alpha.d.ts.map +1 -1
  41. package/dist/entrypoints/alpha.js +8 -3
  42. package/dist/entrypoints/alpha.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +9 -6
  44. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/codec/codecs.js +16 -13
  46. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  48. package/dist/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  49. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  50. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  51. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  52. package/dist/feature-libraries/comparison-forest/comparisonForest.js +98 -0
  53. package/dist/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  54. package/dist/feature-libraries/comparison-forest/index.d.ts +6 -0
  55. package/dist/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  56. package/dist/feature-libraries/comparison-forest/index.js +10 -0
  57. package/dist/feature-libraries/comparison-forest/index.js.map +1 -0
  58. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  59. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  60. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  61. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  62. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  63. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  64. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  65. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  66. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  67. package/dist/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  68. package/dist/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  69. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  70. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  71. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +18 -6
  72. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  73. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  74. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  75. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  76. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  77. package/dist/feature-libraries/index.d.ts +4 -3
  78. package/dist/feature-libraries/index.d.ts.map +1 -1
  79. package/dist/feature-libraries/index.js +77 -72
  80. package/dist/feature-libraries/index.js.map +1 -1
  81. package/dist/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  82. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  83. package/dist/feature-libraries/mitigatedChangeFamily.js +12 -0
  84. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  85. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  86. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  87. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  88. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  89. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  90. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  91. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  92. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  93. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  94. package/dist/feature-libraries/modular-schema/invert.d.ts +15 -0
  95. package/dist/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  96. package/dist/feature-libraries/modular-schema/invert.js +159 -0
  97. package/dist/feature-libraries/modular-schema/invert.js.map +1 -0
  98. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  99. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  100. package/dist/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  101. package/dist/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  102. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  103. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  104. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  105. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  106. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  107. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  108. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  109. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  110. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  111. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  112. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  113. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  114. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +53 -406
  115. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  116. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  117. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  118. package/dist/feature-libraries/modular-schema/modularChangeUtils.js +205 -0
  119. package/dist/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  120. package/dist/feature-libraries/modular-schema/prune.d.ts +10 -0
  121. package/dist/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  122. package/dist/feature-libraries/modular-schema/prune.js +49 -0
  123. package/dist/feature-libraries/modular-schema/prune.js.map +1 -0
  124. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  125. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  126. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  127. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  128. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  129. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  130. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  131. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  132. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  133. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  134. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  135. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  136. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  137. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  138. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  139. package/dist/feature-libraries/treeTextCursor.d.ts +15 -0
  140. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  141. package/dist/feature-libraries/treeTextCursor.js +64 -1
  142. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  143. package/dist/index.d.ts +6 -4
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +10 -5
  146. package/dist/index.js.map +1 -1
  147. package/dist/packageVersion.d.ts +1 -1
  148. package/dist/packageVersion.js +1 -1
  149. package/dist/packageVersion.js.map +1 -1
  150. package/dist/shared-tree/serializedChange.d.ts +2 -2
  151. package/dist/shared-tree/serializedChange.d.ts.map +1 -1
  152. package/dist/shared-tree/serializedChange.js.map +1 -1
  153. package/dist/shared-tree/sharedTree.d.ts +11 -3
  154. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  155. package/dist/shared-tree/sharedTree.js +9 -7
  156. package/dist/shared-tree/sharedTree.js.map +1 -1
  157. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  158. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  159. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  160. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  161. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  162. package/dist/shared-tree/sharedTreeChangeFamily.js +57 -1
  163. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  164. package/dist/shared-tree/transactionMinimize.d.ts.map +1 -1
  165. package/dist/shared-tree/transactionMinimize.js +2 -2
  166. package/dist/shared-tree/transactionMinimize.js.map +1 -1
  167. package/dist/shared-tree/transactionPostProcessor.d.ts +2 -1
  168. package/dist/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  169. package/dist/shared-tree/transactionPostProcessor.js.map +1 -1
  170. package/dist/shared-tree/treeCheckout.d.ts +13 -7
  171. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  172. package/dist/shared-tree/treeCheckout.js +59 -13
  173. package/dist/shared-tree/treeCheckout.js.map +1 -1
  174. package/dist/shared-tree-core/branch.d.ts +24 -9
  175. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  176. package/dist/shared-tree-core/branch.js +7 -0
  177. package/dist/shared-tree-core/branch.js.map +1 -1
  178. package/dist/shared-tree-core/editManager.d.ts +4 -4
  179. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  180. package/dist/shared-tree-core/editManager.js +2 -0
  181. package/dist/shared-tree-core/editManager.js.map +1 -1
  182. package/dist/shared-tree-core/editManagerCodecs.d.ts +3 -14
  183. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  184. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  185. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  186. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  187. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  188. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  189. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  190. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  191. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  192. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  193. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  194. package/dist/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  195. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  196. package/dist/shared-tree-core/editManagerSummarizer.js +0 -1
  197. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  198. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  199. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  200. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  201. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  202. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  203. package/dist/shared-tree-core/messageCodecs.d.ts +8 -1
  204. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  205. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  206. package/dist/shared-tree-core/sharedTreeCore.d.ts +5 -5
  207. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  208. package/dist/shared-tree-core/sharedTreeCore.js +1 -1
  209. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  210. package/dist/shared-tree-core/transaction.d.ts +10 -10
  211. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  212. package/dist/shared-tree-core/transaction.js +6 -3
  213. package/dist/shared-tree-core/transaction.js.map +1 -1
  214. package/dist/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  215. package/dist/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  216. package/dist/simple-tree/api/eraseSchemaDetails.js +15 -0
  217. package/dist/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  218. package/dist/simple-tree/api/index.d.ts +1 -1
  219. package/dist/simple-tree/api/index.d.ts.map +1 -1
  220. package/dist/simple-tree/api/index.js +2 -3
  221. package/dist/simple-tree/api/index.js.map +1 -1
  222. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +3 -3
  223. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  224. package/dist/simple-tree/api/schemaStatics.d.ts +6 -7
  225. package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
  226. package/dist/simple-tree/api/schemaStatics.js.map +1 -1
  227. package/dist/simple-tree/api/treeNodeApi.d.ts +20 -24
  228. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  229. package/dist/simple-tree/api/treeNodeApi.js +48 -49
  230. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  231. package/dist/simple-tree/core/treeNode.d.ts +5 -6
  232. package/dist/simple-tree/core/treeNode.d.ts.map +1 -1
  233. package/dist/simple-tree/core/treeNode.js +2 -4
  234. package/dist/simple-tree/core/treeNode.js.map +1 -1
  235. package/dist/simple-tree/core/withType.d.ts +20 -7
  236. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  237. package/dist/simple-tree/core/withType.js +4 -7
  238. package/dist/simple-tree/core/withType.js.map +1 -1
  239. package/dist/simple-tree/index.d.ts +2 -2
  240. package/dist/simple-tree/index.d.ts.map +1 -1
  241. package/dist/simple-tree/index.js +3 -4
  242. package/dist/simple-tree/index.js.map +1 -1
  243. package/dist/simple-tree/leafNodeSchema.d.ts +6 -1
  244. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  245. package/dist/simple-tree/leafNodeSchema.js +0 -1
  246. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  247. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +53 -5
  248. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  249. package/dist/simple-tree/node-kinds/array/arrayNode.js +91 -10
  250. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  251. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +90 -0
  252. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  253. package/dist/simple-tree/node-kinds/map/mapNode.js +26 -1
  254. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  255. package/dist/simple-tree/node-kinds/object/objectNode.js +2 -2
  256. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  257. package/dist/simple-tree/node-kinds/record/recordNode.js +2 -2
  258. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  259. package/dist/text/codePointUtils.d.ts +2 -2
  260. package/dist/text/codePointUtils.js +2 -2
  261. package/dist/text/codePointUtils.js.map +1 -1
  262. package/dist/text/index.d.ts +3 -3
  263. package/dist/text/index.d.ts.map +1 -1
  264. package/dist/text/index.js +4 -4
  265. package/dist/text/index.js.map +1 -1
  266. package/dist/text/textDomain.d.ts +30 -18
  267. package/dist/text/textDomain.d.ts.map +1 -1
  268. package/dist/text/textDomain.js +44 -23
  269. package/dist/text/textDomain.js.map +1 -1
  270. package/dist/text/textDomainFormatted.d.ts +180 -82
  271. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  272. package/dist/text/textDomainFormatted.js +164 -84
  273. package/dist/text/textDomainFormatted.js.map +1 -1
  274. package/dist/text/textDomainFormattedDefault.d.ts +48 -25
  275. package/dist/text/textDomainFormattedDefault.d.ts.map +1 -1
  276. package/dist/text/textDomainFormattedDefault.js +24 -19
  277. package/dist/text/textDomainFormattedDefault.js.map +1 -1
  278. package/dist/treeDataStore.d.ts +49 -0
  279. package/dist/treeDataStore.d.ts.map +1 -0
  280. package/dist/treeDataStore.js +57 -0
  281. package/dist/treeDataStore.js.map +1 -0
  282. package/dist/treeFactory.d.ts +8 -3
  283. package/dist/treeFactory.d.ts.map +1 -1
  284. package/dist/treeFactory.js +6 -1
  285. package/dist/treeFactory.js.map +1 -1
  286. package/dist/util/compressedIds.d.ts +22 -2
  287. package/dist/util/compressedIds.d.ts.map +1 -1
  288. package/dist/util/compressedIds.js +22 -1
  289. package/dist/util/compressedIds.js.map +1 -1
  290. package/lib/core/change-family/changeFamily.d.ts +15 -4
  291. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  292. package/lib/core/change-family/changeFamily.js.map +1 -1
  293. package/lib/core/change-family/editBuilder.d.ts +2 -3
  294. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  295. package/lib/core/change-family/editBuilder.js +1 -2
  296. package/lib/core/change-family/editBuilder.js.map +1 -1
  297. package/lib/core/change-family/index.d.ts +1 -1
  298. package/lib/core/change-family/index.d.ts.map +1 -1
  299. package/lib/core/change-family/index.js.map +1 -1
  300. package/lib/core/index.d.ts +4 -3
  301. package/lib/core/index.d.ts.map +1 -1
  302. package/lib/core/index.js +2 -2
  303. package/lib/core/index.js.map +1 -1
  304. package/lib/core/rebase/index.d.ts +1 -1
  305. package/lib/core/rebase/index.d.ts.map +1 -1
  306. package/lib/core/rebase/index.js +1 -1
  307. package/lib/core/rebase/index.js.map +1 -1
  308. package/lib/core/rebase/types.d.ts +110 -0
  309. package/lib/core/rebase/types.d.ts.map +1 -1
  310. package/lib/core/rebase/types.js +46 -0
  311. package/lib/core/rebase/types.js.map +1 -1
  312. package/lib/core/tree/delta.d.ts +62 -16
  313. package/lib/core/tree/delta.d.ts.map +1 -1
  314. package/lib/core/tree/delta.js.map +1 -1
  315. package/lib/core/tree/detachedFieldIndex.d.ts +7 -13
  316. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  317. package/lib/core/tree/detachedFieldIndex.js +7 -21
  318. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  319. package/lib/core/tree/index.d.ts +1 -0
  320. package/lib/core/tree/index.d.ts.map +1 -1
  321. package/lib/core/tree/index.js.map +1 -1
  322. package/lib/core/tree/visitorUtils.d.ts +2 -4
  323. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  324. package/lib/core/tree/visitorUtils.js +2 -2
  325. package/lib/core/tree/visitorUtils.js.map +1 -1
  326. package/lib/entrypoints/alpha.d.ts +1 -1
  327. package/lib/entrypoints/alpha.d.ts.map +1 -1
  328. package/lib/entrypoints/alpha.js +1 -1
  329. package/lib/entrypoints/alpha.js.map +1 -1
  330. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +9 -6
  331. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  332. package/lib/feature-libraries/chunked-forest/codec/codecs.js +16 -13
  333. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  334. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  335. package/lib/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  336. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  337. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  338. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  339. package/lib/feature-libraries/comparison-forest/comparisonForest.js +94 -0
  340. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  341. package/lib/feature-libraries/comparison-forest/index.d.ts +6 -0
  342. package/lib/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  343. package/lib/feature-libraries/comparison-forest/index.js +6 -0
  344. package/lib/feature-libraries/comparison-forest/index.js.map +1 -0
  345. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  346. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  347. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  348. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  349. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  350. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  351. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  352. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  353. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  354. package/lib/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  355. package/lib/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  356. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  357. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  358. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +16 -4
  359. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  360. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  361. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  362. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  363. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  364. package/lib/feature-libraries/index.d.ts +4 -3
  365. package/lib/feature-libraries/index.d.ts.map +1 -1
  366. package/lib/feature-libraries/index.js +2 -1
  367. package/lib/feature-libraries/index.js.map +1 -1
  368. package/lib/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  369. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  370. package/lib/feature-libraries/mitigatedChangeFamily.js +12 -0
  371. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  372. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  373. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  374. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  375. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  376. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  377. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  378. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  379. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  380. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  381. package/lib/feature-libraries/modular-schema/invert.d.ts +15 -0
  382. package/lib/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  383. package/lib/feature-libraries/modular-schema/invert.js +155 -0
  384. package/lib/feature-libraries/modular-schema/invert.js.map +1 -0
  385. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  386. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  387. package/lib/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  388. package/lib/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  389. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  390. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  391. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  392. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  393. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  394. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  395. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  396. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  397. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  398. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  399. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  400. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  401. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +16 -367
  402. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  403. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  404. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  405. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +192 -0
  406. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  407. package/lib/feature-libraries/modular-schema/prune.d.ts +10 -0
  408. package/lib/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  409. package/lib/feature-libraries/modular-schema/prune.js +45 -0
  410. package/lib/feature-libraries/modular-schema/prune.js.map +1 -0
  411. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  412. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  413. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  414. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  415. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  416. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  417. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  418. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  419. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  420. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  421. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  422. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  423. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  424. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  425. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  426. package/lib/feature-libraries/treeTextCursor.d.ts +15 -0
  427. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  428. package/lib/feature-libraries/treeTextCursor.js +62 -1
  429. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  430. package/lib/index.d.ts +6 -4
  431. package/lib/index.d.ts.map +1 -1
  432. package/lib/index.js +4 -3
  433. package/lib/index.js.map +1 -1
  434. package/lib/packageVersion.d.ts +1 -1
  435. package/lib/packageVersion.js +1 -1
  436. package/lib/packageVersion.js.map +1 -1
  437. package/lib/shared-tree/serializedChange.d.ts +2 -2
  438. package/lib/shared-tree/serializedChange.d.ts.map +1 -1
  439. package/lib/shared-tree/serializedChange.js.map +1 -1
  440. package/lib/shared-tree/sharedTree.d.ts +11 -3
  441. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  442. package/lib/shared-tree/sharedTree.js +10 -8
  443. package/lib/shared-tree/sharedTree.js.map +1 -1
  444. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  445. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  446. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  447. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  448. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  449. package/lib/shared-tree/sharedTreeChangeFamily.js +55 -0
  450. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  451. package/lib/shared-tree/transactionMinimize.d.ts.map +1 -1
  452. package/lib/shared-tree/transactionMinimize.js +3 -3
  453. package/lib/shared-tree/transactionMinimize.js.map +1 -1
  454. package/lib/shared-tree/transactionPostProcessor.d.ts +2 -1
  455. package/lib/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  456. package/lib/shared-tree/transactionPostProcessor.js.map +1 -1
  457. package/lib/shared-tree/treeCheckout.d.ts +13 -7
  458. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  459. package/lib/shared-tree/treeCheckout.js +61 -15
  460. package/lib/shared-tree/treeCheckout.js.map +1 -1
  461. package/lib/shared-tree-core/branch.d.ts +24 -9
  462. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  463. package/lib/shared-tree-core/branch.js +7 -0
  464. package/lib/shared-tree-core/branch.js.map +1 -1
  465. package/lib/shared-tree-core/editManager.d.ts +4 -4
  466. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  467. package/lib/shared-tree-core/editManager.js +2 -0
  468. package/lib/shared-tree-core/editManager.js.map +1 -1
  469. package/lib/shared-tree-core/editManagerCodecs.d.ts +3 -14
  470. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  471. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  472. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  473. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  474. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  475. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  476. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  477. package/lib/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
  478. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  479. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  480. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  481. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -1
  482. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  483. package/lib/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  484. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  485. package/lib/shared-tree-core/editManagerSummarizer.js +0 -1
  486. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  487. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  488. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  489. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  490. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  491. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  492. package/lib/shared-tree-core/messageCodecs.d.ts +8 -1
  493. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  494. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  495. package/lib/shared-tree-core/sharedTreeCore.d.ts +5 -5
  496. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  497. package/lib/shared-tree-core/sharedTreeCore.js +1 -1
  498. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  499. package/lib/shared-tree-core/transaction.d.ts +10 -10
  500. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  501. package/lib/shared-tree-core/transaction.js +6 -3
  502. package/lib/shared-tree-core/transaction.js.map +1 -1
  503. package/lib/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  504. package/lib/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  505. package/lib/simple-tree/api/eraseSchemaDetails.js +15 -0
  506. package/lib/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  507. package/lib/simple-tree/api/index.d.ts +1 -1
  508. package/lib/simple-tree/api/index.d.ts.map +1 -1
  509. package/lib/simple-tree/api/index.js +1 -1
  510. package/lib/simple-tree/api/index.js.map +1 -1
  511. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +3 -3
  512. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  513. package/lib/simple-tree/api/schemaStatics.d.ts +6 -7
  514. package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
  515. package/lib/simple-tree/api/schemaStatics.js.map +1 -1
  516. package/lib/simple-tree/api/treeNodeApi.d.ts +20 -24
  517. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  518. package/lib/simple-tree/api/treeNodeApi.js +46 -46
  519. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  520. package/lib/simple-tree/core/treeNode.d.ts +5 -6
  521. package/lib/simple-tree/core/treeNode.d.ts.map +1 -1
  522. package/lib/simple-tree/core/treeNode.js +2 -4
  523. package/lib/simple-tree/core/treeNode.js.map +1 -1
  524. package/lib/simple-tree/core/withType.d.ts +20 -7
  525. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  526. package/lib/simple-tree/core/withType.js +4 -7
  527. package/lib/simple-tree/core/withType.js.map +1 -1
  528. package/lib/simple-tree/index.d.ts +2 -2
  529. package/lib/simple-tree/index.d.ts.map +1 -1
  530. package/lib/simple-tree/index.js +1 -1
  531. package/lib/simple-tree/index.js.map +1 -1
  532. package/lib/simple-tree/leafNodeSchema.d.ts +6 -1
  533. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  534. package/lib/simple-tree/leafNodeSchema.js +0 -1
  535. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  536. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +53 -5
  537. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  538. package/lib/simple-tree/node-kinds/array/arrayNode.js +93 -12
  539. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  540. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +90 -0
  541. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  542. package/lib/simple-tree/node-kinds/map/mapNode.js +27 -2
  543. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  544. package/lib/simple-tree/node-kinds/object/objectNode.js +3 -3
  545. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  546. package/lib/simple-tree/node-kinds/record/recordNode.js +3 -3
  547. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  548. package/lib/text/codePointUtils.d.ts +2 -2
  549. package/lib/text/codePointUtils.js +2 -2
  550. package/lib/text/codePointUtils.js.map +1 -1
  551. package/lib/text/index.d.ts +3 -3
  552. package/lib/text/index.d.ts.map +1 -1
  553. package/lib/text/index.js +3 -3
  554. package/lib/text/index.js.map +1 -1
  555. package/lib/text/textDomain.d.ts +30 -18
  556. package/lib/text/textDomain.d.ts.map +1 -1
  557. package/lib/text/textDomain.js +41 -22
  558. package/lib/text/textDomain.js.map +1 -1
  559. package/lib/text/textDomainFormatted.d.ts +180 -82
  560. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  561. package/lib/text/textDomainFormatted.js +165 -86
  562. package/lib/text/textDomainFormatted.js.map +1 -1
  563. package/lib/text/textDomainFormattedDefault.d.ts +48 -25
  564. package/lib/text/textDomainFormattedDefault.d.ts.map +1 -1
  565. package/lib/text/textDomainFormattedDefault.js +25 -20
  566. package/lib/text/textDomainFormattedDefault.js.map +1 -1
  567. package/lib/treeDataStore.d.ts +49 -0
  568. package/lib/treeDataStore.d.ts.map +1 -0
  569. package/lib/treeDataStore.js +52 -0
  570. package/lib/treeDataStore.js.map +1 -0
  571. package/lib/treeFactory.d.ts +8 -3
  572. package/lib/treeFactory.d.ts.map +1 -1
  573. package/lib/treeFactory.js +5 -0
  574. package/lib/treeFactory.js.map +1 -1
  575. package/lib/util/compressedIds.d.ts +22 -2
  576. package/lib/util/compressedIds.d.ts.map +1 -1
  577. package/lib/util/compressedIds.js +22 -1
  578. package/lib/util/compressedIds.js.map +1 -1
  579. package/package.json +32 -24
  580. package/src/core/change-family/changeFamily.ts +32 -4
  581. package/src/core/change-family/editBuilder.ts +1 -2
  582. package/src/core/change-family/index.ts +2 -0
  583. package/src/core/index.ts +11 -6
  584. package/src/core/rebase/index.ts +2 -0
  585. package/src/core/rebase/types.ts +113 -0
  586. package/src/core/tree/delta.ts +62 -16
  587. package/src/core/tree/detachedFieldIndex.ts +7 -38
  588. package/src/core/tree/index.ts +2 -0
  589. package/src/core/tree/visitorUtils.ts +3 -17
  590. package/src/entrypoints/alpha.ts +9 -1
  591. package/src/feature-libraries/chunked-forest/codec/codecs.ts +17 -14
  592. package/src/feature-libraries/chunked-forest/uniformChunk.ts +11 -1
  593. package/src/feature-libraries/comparison-forest/comparisonForest.ts +140 -0
  594. package/src/feature-libraries/comparison-forest/index.ts +6 -0
  595. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +20 -6
  596. package/src/feature-libraries/default-schema/index.ts +1 -0
  597. package/src/feature-libraries/default-schema/noChangeCodecs.ts +11 -3
  598. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +33 -5
  599. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -3
  600. package/src/feature-libraries/index.ts +5 -0
  601. package/src/feature-libraries/mitigatedChangeFamily.ts +21 -3
  602. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -1
  603. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +9 -4
  604. package/src/feature-libraries/modular-schema/index.ts +1 -0
  605. package/src/feature-libraries/modular-schema/invert.ts +338 -0
  606. package/src/feature-libraries/modular-schema/minimizeModularChange.ts +3 -5
  607. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +16 -13
  608. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +3 -1
  609. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +2 -1
  610. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +45 -644
  611. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +340 -0
  612. package/src/feature-libraries/modular-schema/prune.ts +69 -0
  613. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +4 -2
  614. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -2
  615. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +4 -2
  616. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
  617. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +6 -3
  618. package/src/feature-libraries/treeTextCursor.ts +66 -1
  619. package/src/index.ts +11 -4
  620. package/src/packageVersion.ts +1 -1
  621. package/src/shared-tree/serializedChange.ts +2 -2
  622. package/src/shared-tree/sharedTree.ts +40 -15
  623. package/src/shared-tree/sharedTreeChangeCodecs.ts +11 -3
  624. package/src/shared-tree/sharedTreeChangeFamily.ts +77 -2
  625. package/src/shared-tree/transactionMinimize.ts +7 -3
  626. package/src/shared-tree/transactionPostProcessor.ts +5 -1
  627. package/src/shared-tree/treeCheckout.ts +136 -30
  628. package/src/shared-tree-core/branch.ts +41 -12
  629. package/src/shared-tree-core/editManager.ts +46 -25
  630. package/src/shared-tree-core/editManagerCodecs.ts +9 -21
  631. package/src/shared-tree-core/editManagerCodecsCommons.ts +14 -2
  632. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +18 -21
  633. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +18 -20
  634. package/src/shared-tree-core/editManagerSummarizer.ts +9 -6
  635. package/src/shared-tree-core/messageCodecV1ToV4.ts +3 -3
  636. package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -2
  637. package/src/shared-tree-core/messageCodecs.ts +12 -2
  638. package/src/shared-tree-core/sharedTreeCore.ts +16 -7
  639. package/src/shared-tree-core/transaction.ts +47 -25
  640. package/src/simple-tree/api/eraseSchemaDetails.ts +15 -0
  641. package/src/simple-tree/api/index.ts +0 -1
  642. package/src/simple-tree/api/schemaStatics.ts +2 -2
  643. package/src/simple-tree/api/treeNodeApi.ts +64 -48
  644. package/src/simple-tree/core/treeNode.ts +13 -10
  645. package/src/simple-tree/core/withType.ts +20 -7
  646. package/src/simple-tree/index.ts +1 -2
  647. package/src/simple-tree/leafNodeSchema.ts +6 -1
  648. package/src/simple-tree/node-kinds/array/arrayNode.ts +130 -16
  649. package/src/simple-tree/node-kinds/map/mapNode.ts +137 -5
  650. package/src/simple-tree/node-kinds/object/objectNode.ts +3 -3
  651. package/src/simple-tree/node-kinds/record/recordNode.ts +3 -3
  652. package/src/text/README.md +1 -1
  653. package/src/text/codePointUtils.ts +2 -2
  654. package/src/text/index.ts +3 -3
  655. package/src/text/textDomain.ts +50 -27
  656. package/src/text/textDomainFormatted.ts +384 -163
  657. package/src/text/textDomainFormattedDefault.ts +32 -32
  658. package/src/treeDataStore.ts +125 -0
  659. package/src/treeFactory.ts +11 -3
  660. package/src/util/compressedIds.ts +36 -3
@@ -27,6 +27,7 @@ export {
27
27
  type MinimalFieldMap,
28
28
  } from "./mapTreeCursor.js";
29
29
  export { buildForest } from "./object-forest/index.js";
30
+ export { ComparisonForest } from "./comparison-forest/index.js";
30
31
  export {
31
32
  SchemaSummarizer,
32
33
  schemaCodecBuilder,
@@ -45,6 +46,8 @@ export {
45
46
  jsonableTreeFromCursor,
46
47
  jsonableTreeFromFieldCursor,
47
48
  jsonableTreeFromForest,
49
+ forestsEqual,
50
+ assertForestsEqual,
48
51
  } from "./treeTextCursor.js";
49
52
  export {
50
53
  buildNodeComparator,
@@ -88,6 +91,7 @@ export {
88
91
  updateRefreshers,
89
92
  type NodeId,
90
93
  type FieldChangeEncodingContext,
94
+ type FieldChangeDecodingContext,
91
95
  type FieldKindConfiguration,
92
96
  type FieldKindConfigurationEntry,
93
97
  isNeverTree,
@@ -133,6 +137,7 @@ export {
133
137
 
134
138
  export {
135
139
  FieldKinds,
140
+ type DefaultChangeProcessingContext,
136
141
  type DefaultChangeset,
137
142
  DefaultChangeFamily,
138
143
  DefaultEditBuilder,
@@ -7,6 +7,7 @@ import type {
7
7
  ChangeFamily,
8
8
  ChangeFamilyEditor,
9
9
  ChangeRebaser,
10
+ ProcessChangeFn,
10
11
  RevisionMetadataSource,
11
12
  RevisionReplacer,
12
13
  RevisionTag,
@@ -27,11 +28,15 @@ import type {
27
28
  * @param onError - A callback invoked for each error thrown.
28
29
  * @returns a mitigated change family.
29
30
  */
30
- export function makeMitigatedChangeFamily<TEditor extends ChangeFamilyEditor, TChange>(
31
- unmitigatedChangeFamily: ChangeFamily<TEditor, TChange>,
31
+ export function makeMitigatedChangeFamily<
32
+ TEditor extends ChangeFamilyEditor,
33
+ TChange,
34
+ TChangeProcessingContext,
35
+ >(
36
+ unmitigatedChangeFamily: ChangeFamily<TEditor, TChange, TChangeProcessingContext>,
32
37
  fallbackChange: TChange,
33
38
  onError: (error: unknown) => void,
34
- ): ChangeFamily<TEditor, TChange> {
39
+ ): ChangeFamily<TEditor, TChange, TChangeProcessingContext> {
35
40
  return {
36
41
  buildEditor: (
37
42
  mintRevisionTag: () => RevisionTag,
@@ -41,6 +46,19 @@ export function makeMitigatedChangeFamily<TEditor extends ChangeFamilyEditor, TC
41
46
  },
42
47
  rebaser: makeMitigatedRebaser(unmitigatedChangeFamily.rebaser, fallbackChange, onError),
43
48
  codecs: unmitigatedChangeFamily.codecs,
49
+ buildProcessor: (
50
+ processFn: ProcessChangeFn<TChange, TChangeProcessingContext>,
51
+ ): ((change: TChange) => TChange) => {
52
+ const unmitigatedProcessor = unmitigatedChangeFamily.buildProcessor(processFn);
53
+ return (change: TChange): TChange => {
54
+ try {
55
+ return unmitigatedProcessor(change);
56
+ } catch (error: unknown) {
57
+ onError(error);
58
+ return fallbackChange;
59
+ }
60
+ };
61
+ },
44
62
  };
45
63
  }
46
64
 
@@ -63,7 +63,7 @@ export interface FieldChangeHandler<
63
63
  typeof RevisionTagSchema,
64
64
  ChangeEncodingContext
65
65
  >,
66
- ) => ICodecFamily<TChangeset, FieldChangeEncodingContext>;
66
+ ) => ICodecFamily<TChangeset, FieldChangeEncodingContext, FieldChangeDecodingContext>;
67
67
  readonly editor: TEditor;
68
68
  intoDelta(change: TChangeset, deltaFromChild: ToDelta): FieldChangeDelta;
69
69
  /**
@@ -302,5 +302,14 @@ export interface RebaseRevisionMetadata extends RevisionMetadataSource {
302
302
  export interface FieldChangeEncodingContext {
303
303
  readonly baseContext: ChangeEncodingContext;
304
304
  encodeNode(nodeId: NodeId): EncodedNodeChangeset;
305
+ }
306
+
307
+ /**
308
+ * Context provided to field change codecs when decoding.
309
+ * @remarks
310
+ * The decode-side counterpart of {@link FieldChangeEncodingContext}.
311
+ */
312
+ export interface FieldChangeDecodingContext {
313
+ readonly baseContext: ChangeEncodingContext;
305
314
  decodeNode(encodedNode: EncodedNodeChangeset): NodeId;
306
315
  }
@@ -5,14 +5,18 @@
5
5
 
6
6
  import { type ICodecFamily, type IJsonCodec, makeCodecFamily } from "../../codec/index.js";
7
7
 
8
- import type { FieldChangeEncodingContext } from "./fieldChangeHandler.js";
8
+ import type {
9
+ FieldChangeEncodingContext,
10
+ FieldChangeDecodingContext,
11
+ } from "./fieldChangeHandler.js";
9
12
  import { EncodedGenericChangeset } from "./genericFieldKindFormat.js";
10
13
  import { newGenericChangeset, type GenericChangeset } from "./genericFieldKindTypes.js";
11
14
  import { EncodedNodeChangeset } from "./modularChangeFormatV1.js";
12
15
 
13
16
  export function makeGenericChangeCodec(): ICodecFamily<
14
17
  GenericChangeset,
15
- FieldChangeEncodingContext
18
+ FieldChangeEncodingContext,
19
+ FieldChangeDecodingContext
16
20
  > {
17
21
  return makeCodecFamily([[1, makeV1Codec()]]);
18
22
  }
@@ -21,7 +25,8 @@ function makeV1Codec(): IJsonCodec<
21
25
  GenericChangeset,
22
26
  EncodedGenericChangeset,
23
27
  EncodedGenericChangeset,
24
- FieldChangeEncodingContext
28
+ FieldChangeEncodingContext,
29
+ FieldChangeDecodingContext
25
30
  > {
26
31
  return {
27
32
  encode: (
@@ -35,7 +40,7 @@ function makeV1Codec(): IJsonCodec<
35
40
  },
36
41
  decode: (
37
42
  encoded: EncodedGenericChangeset,
38
- context: FieldChangeEncodingContext,
43
+ context: FieldChangeDecodingContext,
39
44
  ): GenericChangeset => {
40
45
  return newGenericChangeset(
41
46
  encoded.map(([index, nodeChange]) => [index, context.decodeNode(nodeChange)]),
@@ -34,6 +34,7 @@ export {
34
34
  type FieldChangeHandler,
35
35
  type FieldChangeDelta,
36
36
  type FieldChangeEncodingContext,
37
+ type FieldChangeDecodingContext,
37
38
  type FieldChangeRebaser,
38
39
  type FieldEditor,
39
40
  type NestedChangesIndices,
@@ -0,0 +1,338 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
+ import {
8
+ revisionMetadataSourceFromInfo,
9
+ type ChangeAtomId,
10
+ type ChangesetLocalId,
11
+ type FieldKindIdentifier,
12
+ type RevisionInfo,
13
+ type RevisionMetadataSource,
14
+ type RevisionTag,
15
+ type TaggedChange,
16
+ type TreeChunk,
17
+ } from "../../core/index.js";
18
+ import { brand, idAllocatorFromMaxId, type IdAllocator } from "../../util/index.js";
19
+ import {
20
+ newChangeAtomIdBTree,
21
+ setInChangeAtomIdMap,
22
+ type ChangeAtomIdBTree,
23
+ } from "../changeAtomIdBTree.js";
24
+ import {
25
+ newCrossFieldKeyTable,
26
+ type CrossFieldKeyTable,
27
+ type FieldChange,
28
+ type FieldChangeMap,
29
+ type FieldId,
30
+ type ModularChangeset,
31
+ type NodeChangeset,
32
+ type NodeId,
33
+ } from "./modularChangeTypes.js";
34
+ import {
35
+ CrossFieldManagerI,
36
+ getChangeHandler,
37
+ getRevInfoFromTaggedChanges,
38
+ hasConflicts,
39
+ makeModularChangeset,
40
+ newConstraintState,
41
+ newCrossFieldTable,
42
+ updateConstraintsForFields,
43
+ type CrossFieldTable,
44
+ } from "./modularChangeUtils.js";
45
+ import type { CrossFieldTarget } from "./crossFieldQueries.js";
46
+ import type { FlexFieldKind } from "./fieldKind.js";
47
+ import { NodeAttachState } from "./fieldChangeHandler.js";
48
+
49
+ /**
50
+ * @param change - The change to invert.
51
+ * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
52
+ * performing a sandwich rebase.
53
+ * @param revisionForInvert - The revision for the invert changeset.
54
+ */
55
+ export function invertModularChange(
56
+ change: TaggedChange<ModularChangeset>,
57
+ isRollback: boolean,
58
+ revisionForInvert: RevisionTag,
59
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
60
+ ): ModularChangeset {
61
+ // Rollback changesets destroy the nodes created by the change being rolled back.
62
+ const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;
63
+
64
+ // Destroys only occur in rollback changesets, which are never inverted.
65
+ assert(
66
+ change.change.destroys === undefined,
67
+ 0x89a /* Unexpected destroys in change to invert */,
68
+ );
69
+
70
+ const revInfos: RevisionInfo[] = isRollback
71
+ ? [{ revision: revisionForInvert, rollbackOf: change.revision }]
72
+ : [{ revision: revisionForInvert }];
73
+
74
+ const noChangeConstraint = change.change.noChangeConstraintOnRevert;
75
+ const noChangeConstraintOnRevert = change.change.noChangeConstraint;
76
+
77
+ if (hasConflicts(change.change)) {
78
+ return makeModularChangeset({
79
+ maxId: change.change.maxId as number,
80
+ revisions: revInfos,
81
+ destroys,
82
+ });
83
+ }
84
+
85
+ const genId: IdAllocator = idAllocatorFromMaxId(change.change.maxId ?? -1);
86
+
87
+ const crossFieldTable: InvertTable = {
88
+ ...newCrossFieldTable<FieldChange>(),
89
+ originalFieldToContext: new Map(),
90
+ invertedNodeToParent: brand(change.change.nodeToParent.clone()),
91
+ };
92
+ const { revInfos: oldRevInfos } = getRevInfoFromTaggedChanges([change]);
93
+ const revisionMetadata = revisionMetadataSourceFromInfo(oldRevInfos);
94
+
95
+ const invertedFields = invertFieldMap(
96
+ change.change.fieldChanges,
97
+ undefined,
98
+ isRollback,
99
+ genId,
100
+ crossFieldTable,
101
+ revisionMetadata,
102
+ revisionForInvert,
103
+ fieldKinds,
104
+ );
105
+
106
+ const invertedNodes = newChangeAtomIdBTree<NodeChangeset>();
107
+ change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
108
+ invertedNodes.set(
109
+ [revision, localId],
110
+ invertNodeChange(
111
+ nodeChangeset,
112
+ { revision, localId },
113
+ isRollback,
114
+ genId,
115
+ crossFieldTable,
116
+ revisionMetadata,
117
+ revisionForInvert,
118
+ fieldKinds,
119
+ ),
120
+ );
121
+ });
122
+
123
+ if (crossFieldTable.invalidatedFields.size > 0) {
124
+ const fieldsToUpdate = crossFieldTable.invalidatedFields;
125
+ crossFieldTable.invalidatedFields = new Set();
126
+ for (const fieldChange of fieldsToUpdate) {
127
+ const originalFieldChange = fieldChange.change;
128
+ const context = crossFieldTable.originalFieldToContext.get(fieldChange);
129
+ assert(
130
+ context !== undefined,
131
+ 0x851 /* Should have context for every invalidated field */,
132
+ );
133
+ const { invertedField, fieldId } = context;
134
+
135
+ const amendedChange = getChangeHandler(fieldKinds, fieldChange.fieldKind).rebaser.invert(
136
+ originalFieldChange,
137
+ isRollback,
138
+ genId,
139
+ revisionForInvert,
140
+ new InvertManager(crossFieldTable, fieldChange, fieldId),
141
+ revisionMetadata,
142
+ );
143
+ invertedField.change = brand(amendedChange);
144
+ }
145
+ }
146
+
147
+ const crossFieldKeys = makeCrossFieldKeyTable(invertedFields, invertedNodes, fieldKinds);
148
+
149
+ const constraintState = newConstraintState(0);
150
+ updateConstraintsForFields(
151
+ invertedFields,
152
+ NodeAttachState.Attached,
153
+ constraintState,
154
+ invertedNodes,
155
+ fieldKinds,
156
+ );
157
+
158
+ return makeModularChangeset({
159
+ fieldChanges: invertedFields,
160
+ nodeChanges: invertedNodes,
161
+ nodeToParent: crossFieldTable.invertedNodeToParent,
162
+ nodeAliases: change.change.nodeAliases,
163
+ crossFieldKeys,
164
+ maxId: genId.getMaxId(),
165
+ revisions: revInfos,
166
+ constraintViolationCount: constraintState.violationCount,
167
+ noChangeConstraint,
168
+ noChangeConstraintOnRevert,
169
+ destroys,
170
+ });
171
+ }
172
+
173
+ function invertFieldMap(
174
+ changes: FieldChangeMap,
175
+ parentId: NodeId | undefined,
176
+ isRollback: boolean,
177
+ genId: IdAllocator,
178
+ crossFieldTable: InvertTable,
179
+ revisionMetadata: RevisionMetadataSource,
180
+ revisionForInvert: RevisionTag,
181
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
182
+ ): FieldChangeMap {
183
+ const invertedFields: FieldChangeMap = new Map();
184
+
185
+ for (const [field, fieldChange] of changes) {
186
+ const fieldId = { nodeId: parentId, field };
187
+ const manager = new InvertManager(crossFieldTable, fieldChange, fieldId);
188
+ const invertedChange = getChangeHandler(fieldKinds, fieldChange.fieldKind).rebaser.invert(
189
+ fieldChange.change,
190
+ isRollback,
191
+ genId,
192
+ revisionForInvert,
193
+ manager,
194
+ revisionMetadata,
195
+ );
196
+
197
+ const invertedFieldChange: FieldChange = {
198
+ ...fieldChange,
199
+ change: brand(invertedChange),
200
+ };
201
+ invertedFields.set(field, invertedFieldChange);
202
+
203
+ crossFieldTable.originalFieldToContext.set(fieldChange, {
204
+ fieldId,
205
+ invertedField: invertedFieldChange,
206
+ });
207
+ }
208
+
209
+ return invertedFields;
210
+ }
211
+
212
+ function invertNodeChange(
213
+ change: NodeChangeset,
214
+ id: NodeId,
215
+ isRollback: boolean,
216
+ genId: IdAllocator,
217
+ crossFieldTable: InvertTable,
218
+ revisionMetadata: RevisionMetadataSource,
219
+ revisionForInvert: RevisionTag,
220
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
221
+ ): NodeChangeset {
222
+ const inverse: NodeChangeset = {};
223
+
224
+ // If the node has a constraint, it should be inverted to a node-exist-on-revert constraint. This ensure that if
225
+ // the inverse is inverted again, the original input constraint will be restored.
226
+ if (change.nodeExistsConstraint !== undefined) {
227
+ inverse.nodeExistsConstraintOnRevert = change.nodeExistsConstraint;
228
+ }
229
+
230
+ // The node-exist-on-revert constraint of a node is the constraint that should apply when the a change is reverted.
231
+ // So, it should become the constraint in the inverse. If this constraint is violated when applying the inverse,
232
+ // it will be discarded.
233
+ if (change.nodeExistsConstraintOnRevert !== undefined) {
234
+ inverse.nodeExistsConstraint = change.nodeExistsConstraintOnRevert;
235
+ }
236
+
237
+ if (change.fieldChanges !== undefined) {
238
+ inverse.fieldChanges = invertFieldMap(
239
+ change.fieldChanges,
240
+ id,
241
+ isRollback,
242
+ genId,
243
+ crossFieldTable,
244
+ revisionMetadata,
245
+ revisionForInvert,
246
+ fieldKinds,
247
+ );
248
+ }
249
+
250
+ return inverse;
251
+ }
252
+
253
+ function invertBuilds(
254
+ builds: ChangeAtomIdBTree<TreeChunk> | undefined,
255
+ ): ChangeAtomIdBTree<number> | undefined {
256
+ if (builds !== undefined) {
257
+ return brand(builds.mapValues((chunk) => chunk.topLevelLength));
258
+ }
259
+ return undefined;
260
+ }
261
+
262
+ interface InvertTable extends CrossFieldTable<FieldChange> {
263
+ originalFieldToContext: Map<FieldChange, InvertContext>;
264
+ invertedNodeToParent: ChangeAtomIdBTree<FieldId>;
265
+ }
266
+
267
+ interface InvertContext {
268
+ fieldId: FieldId;
269
+ invertedField: FieldChange;
270
+ }
271
+
272
+ class InvertManager extends CrossFieldManagerI<FieldChange> {
273
+ public constructor(
274
+ table: InvertTable,
275
+ field: FieldChange,
276
+ private readonly fieldId: FieldId,
277
+ allowInval = true,
278
+ ) {
279
+ super(table, field, allowInval);
280
+ }
281
+
282
+ public override onMoveIn(id: ChangeAtomId): void {
283
+ setInChangeAtomIdMap(this.table.invertedNodeToParent, id, this.fieldId);
284
+ }
285
+
286
+ public override moveKey(
287
+ target: CrossFieldTarget,
288
+ revision: RevisionTag | undefined,
289
+ id: ChangesetLocalId,
290
+ count: number,
291
+ ): void {
292
+ assert(false, 0x9c5 /* Keys should not be moved manually during invert */);
293
+ }
294
+
295
+ private get table(): InvertTable {
296
+ return this.crossFieldTable as InvertTable;
297
+ }
298
+ }
299
+
300
+ function makeCrossFieldKeyTable(
301
+ fields: FieldChangeMap,
302
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
303
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
304
+ ): CrossFieldKeyTable {
305
+ const keys: CrossFieldKeyTable = newCrossFieldKeyTable();
306
+ populateCrossFieldKeyTableForFieldMap(keys, fields, undefined, fieldKinds);
307
+ nodes.forEachPair(([revision, localId], node) => {
308
+ if (node.fieldChanges !== undefined) {
309
+ populateCrossFieldKeyTableForFieldMap(
310
+ keys,
311
+ node.fieldChanges,
312
+ {
313
+ revision,
314
+ localId,
315
+ },
316
+ fieldKinds,
317
+ );
318
+ }
319
+ });
320
+
321
+ return keys;
322
+ }
323
+
324
+ function populateCrossFieldKeyTableForFieldMap(
325
+ table: CrossFieldKeyTable,
326
+ fields: FieldChangeMap,
327
+ parent: NodeId | undefined,
328
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
329
+ ): void {
330
+ for (const [fieldKey, fieldChange] of fields) {
331
+ const keys = getChangeHandler(fieldKinds, fieldChange.fieldKind).getCrossFieldKeys(
332
+ fieldChange.change,
333
+ );
334
+ for (const { key, count } of keys) {
335
+ table.set(key, count, { nodeId: parent, field: fieldKey });
336
+ }
337
+ }
338
+ }
@@ -3,9 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { FieldKindIdentifier } from "../../core/index.js";
7
-
8
- import type { FlexFieldKind } from "./fieldKind.js";
6
+ import type { ModularChangeFamily } from "./modularChangeFamily.js";
9
7
  import type { ModularChangeset } from "./modularChangeTypes.js";
10
8
 
11
9
  /**
@@ -22,11 +20,11 @@ import type { ModularChangeset } from "./modularChangeTypes.js";
22
20
  * future change.
23
21
  *
24
22
  * @param change - The change to minimize.
25
- * @param fieldKinds - The field kinds to delegate to when computing the change's delta.
23
+ * @param changeFamily - The change family used to compute the change's delta and identify built nodes.
26
24
  */
27
25
  export function minimizeModularChangeset(
28
26
  change: ModularChangeset,
29
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
27
+ changeFamily: ModularChangeFamily,
30
28
  ): ModularChangeset {
31
29
  // TODO: Actually minimize the change. For now this is a no-op that returns the change unchanged.
32
30
  return change;
@@ -16,6 +16,7 @@ import {
16
16
  } from "../../codec/index.js";
17
17
  import type {
18
18
  ChangeEncodingContext,
19
+ ChangeDecodingContext,
19
20
  ChangesetLocalId,
20
21
  EncodedRevisionTag,
21
22
  FieldKey,
@@ -42,7 +43,11 @@ import {
42
43
  } from "../chunked-forest/index.js";
43
44
  import { TreeCompressionStrategy } from "../treeCompressionUtils.js";
44
45
 
45
- import type { FieldChangeEncodingContext, FieldChangeHandler } from "./fieldChangeHandler.js";
46
+ import type {
47
+ FieldChangeEncodingContext,
48
+ FieldChangeDecodingContext,
49
+ FieldChangeHandler,
50
+ } from "./fieldChangeHandler.js";
46
51
  import type {
47
52
  FieldKindConfiguration,
48
53
  FieldKindConfigurationEntry,
@@ -71,14 +76,16 @@ type ModularChangeCodec = IJsonCodec<
71
76
  ModularChangeset,
72
77
  EncodedModularChangesetV1,
73
78
  EncodedModularChangesetV1,
74
- ChangeEncodingContext
79
+ ChangeEncodingContext,
80
+ ChangeDecodingContext
75
81
  >;
76
82
 
77
83
  type FieldCodec = IJsonCodec<
78
84
  FieldChangeset,
79
85
  JsonCompatibleReadOnly,
80
86
  JsonCompatibleReadOnly,
81
- FieldChangeEncodingContext
87
+ FieldChangeEncodingContext,
88
+ FieldChangeDecodingContext
82
89
  >;
83
90
 
84
91
  type FieldChangesetCodecs = Map<
@@ -115,8 +122,6 @@ export function encodeFieldChangesForJson(
115
122
  assert(node !== undefined, 0x92e /* Unknown node ID */);
116
123
  return encodeNodeChangesForJson(node, fieldContext, fieldChangesetCodecs);
117
124
  },
118
-
119
- decodeNode: () => fail(0xb1e /* Should not decode nodes during field encoding */),
120
125
  };
121
126
 
122
127
  return encodeFieldChangesForJsonI(change, fieldContext, fieldChangesetCodecs);
@@ -180,7 +185,7 @@ export function decodeFieldChangesFromJson(
180
185
  encodedChange: EncodedFieldChangeMap,
181
186
  parentId: NodeId | undefined,
182
187
  decoded: ModularChangeset,
183
- context: ChangeEncodingContext,
188
+ context: ChangeDecodingContext,
184
189
  idAllocator: IdAllocator,
185
190
  fieldKinds: FieldKindConfiguration,
186
191
  fieldChangesetCodecs: FieldChangesetCodecs,
@@ -200,11 +205,9 @@ export function decodeFieldChangesFromJson(
200
205
  field: field.fieldKey,
201
206
  };
202
207
 
203
- const fieldContext: FieldChangeEncodingContext = {
208
+ const fieldContext: FieldChangeDecodingContext = {
204
209
  baseContext: context,
205
210
 
206
- encodeNode: () => fail(0xb21 /* Should not encode nodes during field decoding */),
207
-
208
211
  decodeNode: (encodedNode: EncodedNodeChangeset): NodeId => {
209
212
  const nodeId: NodeId = {
210
213
  revision: context.revision,
@@ -252,7 +255,7 @@ export function decodeNodeChangesetFromJson(
252
255
  encodedChange: EncodedNodeChangeset,
253
256
  id: NodeId,
254
257
  decoded: ModularChangeset,
255
- context: ChangeEncodingContext,
258
+ context: ChangeDecodingContext,
256
259
  idAllocator: IdAllocator,
257
260
  fieldKinds: FieldKindConfiguration,
258
261
  fieldChangesetCodecs: FieldChangesetCodecs,
@@ -337,7 +340,7 @@ export function encodeDetachedNodes(
337
340
 
338
341
  export function decodeDetachedNodes(
339
342
  encoded: EncodedBuilds | undefined,
340
- context: ChangeEncodingContext,
343
+ context: ChangeDecodingContext,
341
344
  revisionTagCodec: JsonCodecPart<
342
345
  RevisionTag,
343
346
  typeof RevisionTagSchema,
@@ -430,7 +433,7 @@ export function encodeRevisionInfos(
430
433
 
431
434
  export function decodeRevisionInfos(
432
435
  revisions: readonly EncodedRevisionInfo[] | undefined,
433
- context: ChangeEncodingContext,
436
+ context: ChangeDecodingContext,
434
437
  revisionTagCodec: JsonCodecPart<
435
438
  RevisionTag,
436
439
  typeof RevisionTagSchema,
@@ -509,7 +512,7 @@ export function encodeChange(
509
512
 
510
513
  export function decodeChange(
511
514
  encodedChange: EncodedModularChangesetV1,
512
- context: ChangeEncodingContext,
515
+ context: ChangeDecodingContext,
513
516
  fieldKinds: FieldKindConfiguration,
514
517
  fieldChangesetCodecs: Map<
515
518
  FieldKindIdentifier,
@@ -11,6 +11,7 @@ import {
11
11
  } from "../../codec/index.js";
12
12
  import type {
13
13
  ChangeEncodingContext,
14
+ ChangeDecodingContext,
14
15
  RevisionTag,
15
16
  RevisionTagSchema,
16
17
  } from "../../core/index.js";
@@ -30,7 +31,8 @@ type ModularChangeCodec = IJsonCodec<
30
31
  ModularChangeset,
31
32
  EncodedModularChangesetV2,
32
33
  EncodedModularChangesetV2,
33
- ChangeEncodingContext
34
+ ChangeEncodingContext,
35
+ ChangeDecodingContext
34
36
  >;
35
37
 
36
38
  export function makeModularChangeCodecV2(
@@ -13,6 +13,7 @@ import {
13
13
  } from "../../codec/index.js";
14
14
  import type {
15
15
  ChangeEncodingContext,
16
+ ChangeDecodingContext,
16
17
  RevisionTag,
17
18
  RevisionTagSchema,
18
19
  } from "../../core/index.js";
@@ -35,7 +36,7 @@ export function makeModularChangeCodecFamily(
35
36
  fieldsCodec: FieldBatchCodec,
36
37
  codecOptions: ICodecOptions,
37
38
  chunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,
38
- ): ICodecFamily<ModularChangeset, ChangeEncodingContext> {
39
+ ): ICodecFamily<ModularChangeset, ChangeEncodingContext, ChangeDecodingContext> {
39
40
  return makeCodecFamily(
40
41
  Array.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => {
41
42
  switch (version) {