@fluidframework/tree 2.118.1 → 3.0.1

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 (1234) hide show
  1. package/CHANGELOG.md +367 -75
  2. package/README.md +55 -52
  3. package/{api-extractor.json → api-extractor/api-extractor-model.json} +1 -1
  4. package/api-report/tree.alpha.api.md +130 -145
  5. package/api-report/tree.beta.api.md +122 -91
  6. package/api-report/tree.legacy.beta.api.md +122 -91
  7. package/api-report/tree.legacy.public.api.md +26 -43
  8. package/api-report/tree.public.api.md +26 -43
  9. package/dist/api.d.ts +9 -1
  10. package/dist/api.d.ts.map +1 -1
  11. package/dist/api.js +2 -3
  12. package/dist/api.js.map +1 -1
  13. package/dist/codec/codec.d.ts +2 -2
  14. package/dist/codec/codec.d.ts.map +1 -1
  15. package/dist/codec/codec.js +9 -7
  16. package/dist/codec/codec.js.map +1 -1
  17. package/dist/codec/discriminatedUnions.js +1 -0
  18. package/dist/codec/discriminatedUnions.js.map +1 -1
  19. package/dist/codec/versioned/codec.d.ts.map +1 -1
  20. package/dist/codec/versioned/codec.js +4 -2
  21. package/dist/codec/versioned/codec.js.map +1 -1
  22. package/dist/componentApi.d.ts.map +1 -1
  23. package/dist/componentApi.js +20 -17
  24. package/dist/componentApi.js.map +1 -1
  25. package/dist/core/change-family/editBuilder.js +1 -0
  26. package/dist/core/change-family/editBuilder.js.map +1 -1
  27. package/dist/core/forest/editableForest.js +1 -2
  28. package/dist/core/forest/editableForest.js.map +1 -1
  29. package/dist/core/forest/forest.js +3 -3
  30. package/dist/core/forest/forest.js.map +1 -1
  31. package/dist/core/index.d.ts +2 -2
  32. package/dist/core/index.d.ts.map +1 -1
  33. package/dist/core/index.js +9 -5
  34. package/dist/core/index.js.map +1 -1
  35. package/dist/core/rebase/changeRebaser.js +5 -5
  36. package/dist/core/rebase/changeRebaser.js.map +1 -1
  37. package/dist/core/rebase/index.d.ts +1 -1
  38. package/dist/core/rebase/index.d.ts.map +1 -1
  39. package/dist/core/rebase/index.js +2 -1
  40. package/dist/core/rebase/index.js.map +1 -1
  41. package/dist/core/rebase/revisionTagCodec.d.ts +1 -1
  42. package/dist/core/rebase/revisionTagCodec.d.ts.map +1 -1
  43. package/dist/core/rebase/revisionTagCodec.js +3 -1
  44. package/dist/core/rebase/revisionTagCodec.js.map +1 -1
  45. package/dist/core/rebase/types.d.ts +12 -1
  46. package/dist/core/rebase/types.d.ts.map +1 -1
  47. package/dist/core/rebase/types.js +19 -15
  48. package/dist/core/rebase/types.js.map +1 -1
  49. package/dist/core/rebase/utils.js +9 -10
  50. package/dist/core/rebase/utils.js.map +1 -1
  51. package/dist/core/schema-stored/schema.js +9 -4
  52. package/dist/core/schema-stored/schema.js.map +1 -1
  53. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  54. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  55. package/dist/core/schema-stored/storedSchemaRepository.js +6 -4
  56. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  57. package/dist/core/tree/anchorSet.d.ts +1 -1
  58. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  59. package/dist/core/tree/anchorSet.js +62 -55
  60. package/dist/core/tree/anchorSet.js.map +1 -1
  61. package/dist/core/tree/chunk.js +2 -2
  62. package/dist/core/tree/chunk.js.map +1 -1
  63. package/dist/core/tree/cursor.js +12 -12
  64. package/dist/core/tree/cursor.js.map +1 -1
  65. package/dist/core/tree/deltaUtil.d.ts +34 -9
  66. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  67. package/dist/core/tree/deltaUtil.js +51 -17
  68. package/dist/core/tree/deltaUtil.js.map +1 -1
  69. package/dist/core/tree/detachedFieldIndex.js +23 -21
  70. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  71. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +10 -10
  72. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  73. package/dist/core/tree/detachedFieldIndexCodecCommon.js +1 -2
  74. package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  75. package/dist/core/tree/detachedFieldIndexCodecV1.js +3 -2
  76. package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  77. package/dist/core/tree/detachedFieldIndexCodecV2.js +3 -2
  78. package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  79. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +3 -3
  80. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  81. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +1 -1
  82. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  83. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  84. package/dist/core/tree/index.d.ts +1 -1
  85. package/dist/core/tree/index.d.ts.map +1 -1
  86. package/dist/core/tree/index.js +7 -4
  87. package/dist/core/tree/index.js.map +1 -1
  88. package/dist/core/tree/mapTree.js +1 -2
  89. package/dist/core/tree/mapTree.js.map +1 -1
  90. package/dist/core/tree/pathTree.js +7 -8
  91. package/dist/core/tree/pathTree.js.map +1 -1
  92. package/dist/core/tree/persistedTreeTextFormat.d.ts +4 -4
  93. package/dist/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  94. package/dist/core/tree/sparseTree.js +17 -13
  95. package/dist/core/tree/sparseTree.js.map +1 -1
  96. package/dist/core/tree/treeTextFormat.js +4 -5
  97. package/dist/core/tree/treeTextFormat.js.map +1 -1
  98. package/dist/core/tree/types.js +3 -3
  99. package/dist/core/tree/types.js.map +1 -1
  100. package/dist/core/tree/visitDelta.js +1 -2
  101. package/dist/core/tree/visitDelta.js.map +1 -1
  102. package/dist/core/tree/visitorUtils.js +5 -6
  103. package/dist/core/tree/visitorUtils.js.map +1 -1
  104. package/dist/entrypoints/alpha.d.ts +1 -1
  105. package/dist/entrypoints/alpha.d.ts.map +1 -1
  106. package/dist/entrypoints/alpha.js +6 -4
  107. package/dist/entrypoints/alpha.js.map +1 -1
  108. package/dist/entrypoints/beta.d.ts +1 -1
  109. package/dist/entrypoints/beta.d.ts.map +1 -1
  110. package/dist/entrypoints/beta.js +2 -2
  111. package/dist/entrypoints/beta.js.map +1 -1
  112. package/dist/entrypoints/legacy.d.ts +1 -1
  113. package/dist/entrypoints/legacy.d.ts.map +1 -1
  114. package/dist/entrypoints/legacy.js +2 -2
  115. package/dist/entrypoints/legacy.js.map +1 -1
  116. package/dist/entrypoints/public.d.ts +1 -1
  117. package/dist/entrypoints/public.d.ts.map +1 -1
  118. package/dist/entrypoints/public.js +1 -2
  119. package/dist/entrypoints/public.js.map +1 -1
  120. package/dist/extensibleUnionNode.d.ts.map +1 -1
  121. package/dist/extensibleUnionNode.js +1 -1
  122. package/dist/extensibleUnionNode.js.map +1 -1
  123. package/dist/feature-libraries/changeAtomIdBTree.js +3 -4
  124. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  125. package/dist/feature-libraries/changeAtomIdCodec.js +1 -2
  126. package/dist/feature-libraries/changeAtomIdCodec.js.map +1 -1
  127. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  128. package/dist/feature-libraries/chunked-forest/basicChunk.js +14 -1
  129. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  130. package/dist/feature-libraries/chunked-forest/chunkTree.js +28 -20
  131. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  132. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  133. package/dist/feature-libraries/chunked-forest/chunkedForest.js +22 -16
  134. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  135. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +9 -11
  136. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  137. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +15 -7
  138. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  139. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +7 -3
  140. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  141. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +3 -2
  142. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  143. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  144. package/dist/feature-libraries/chunked-forest/codec/codecs.js +2 -0
  145. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  146. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +33 -17
  147. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  148. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +2 -2
  149. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  150. package/dist/feature-libraries/chunked-forest/codec/format/versions.js +2 -2
  151. package/dist/feature-libraries/chunked-forest/codec/format/versions.js.map +1 -1
  152. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js +11 -2
  153. package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
  154. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +5 -6
  155. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  156. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -3
  157. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  158. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +1 -0
  159. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  160. package/dist/feature-libraries/chunked-forest/uniformChunk.js +73 -15
  161. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  162. package/dist/feature-libraries/comparison-forest/comparisonForest.js +79 -79
  163. package/dist/feature-libraries/comparison-forest/comparisonForest.js.map +1 -1
  164. package/dist/feature-libraries/cursorComparator.d.ts +8 -0
  165. package/dist/feature-libraries/cursorComparator.d.ts.map +1 -1
  166. package/dist/feature-libraries/cursorComparator.js +43 -10
  167. package/dist/feature-libraries/cursorComparator.js.map +1 -1
  168. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  169. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  170. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +2 -2
  171. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  172. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +2 -0
  173. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  174. package/dist/feature-libraries/deltaUtils.js +2 -3
  175. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  176. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -0
  177. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  178. package/dist/feature-libraries/editableTreeBinder.js +1 -2
  179. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  180. package/dist/feature-libraries/flex-tree/context.js +19 -3
  181. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  182. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +2 -2
  183. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  184. package/dist/feature-libraries/flex-tree/lazyEntity.js +14 -14
  185. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  186. package/dist/feature-libraries/flex-tree/lazyField.js +28 -30
  187. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  188. package/dist/feature-libraries/flex-tree/lazyNode.js +24 -23
  189. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  190. package/dist/feature-libraries/flex-tree/observer.js +2 -2
  191. package/dist/feature-libraries/flex-tree/observer.js.map +1 -1
  192. package/dist/feature-libraries/flex-tree/utilities.js +5 -5
  193. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  194. package/dist/feature-libraries/forest-summary/forestSummarizer.js +122 -117
  195. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  196. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +49 -32
  197. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  198. package/dist/feature-libraries/forest-summary/summaryTypes.js +2 -3
  199. package/dist/feature-libraries/forest-summary/summaryTypes.js.map +1 -1
  200. package/dist/feature-libraries/indexing/anchorTreeIndex.js +35 -31
  201. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  202. package/dist/feature-libraries/mapTreeCursor.js +6 -7
  203. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  204. package/dist/feature-libraries/mitigatedChangeFamily.js +2 -3
  205. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  206. package/dist/feature-libraries/modular-schema/comparison.js +6 -7
  207. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  208. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +4 -4
  209. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  210. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +14 -12
  211. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  212. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +63 -10
  213. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  214. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +3 -3
  215. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  216. package/dist/feature-libraries/modular-schema/fieldKind.js +10 -0
  217. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  218. package/dist/feature-libraries/modular-schema/filterEdits.d.ts +13 -0
  219. package/dist/feature-libraries/modular-schema/filterEdits.d.ts.map +1 -0
  220. package/dist/feature-libraries/modular-schema/filterEdits.js +51 -0
  221. package/dist/feature-libraries/modular-schema/filterEdits.js.map +1 -0
  222. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  223. package/dist/feature-libraries/modular-schema/genericFieldKind.js +7 -4
  224. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  225. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +1 -2
  226. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  227. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +2 -2
  228. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  229. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js +1 -2
  230. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  231. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  232. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  233. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  234. package/dist/feature-libraries/modular-schema/invert.d.ts +1 -1
  235. package/dist/feature-libraries/modular-schema/invert.d.ts.map +1 -1
  236. package/dist/feature-libraries/modular-schema/invert.js +5 -30
  237. package/dist/feature-libraries/modular-schema/invert.js.map +1 -1
  238. package/dist/feature-libraries/modular-schema/isNeverTree.js +4 -5
  239. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  240. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts +5 -7
  241. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  242. package/dist/feature-libraries/modular-schema/minimizeModularChange.js +459 -10
  243. package/dist/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  244. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +14 -15
  245. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  246. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -2
  247. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  248. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +2 -2
  249. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  250. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -10
  251. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  252. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +30 -97
  253. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  254. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +9 -9
  255. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  256. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +4 -4
  257. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +1 -2
  258. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  259. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts +13 -1
  260. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -1
  261. package/dist/feature-libraries/modular-schema/modularChangeUtils.js +115 -12
  262. package/dist/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -1
  263. package/dist/feature-libraries/modular-schema/prune.d.ts +2 -3
  264. package/dist/feature-libraries/modular-schema/prune.d.ts.map +1 -1
  265. package/dist/feature-libraries/modular-schema/prune.js +25 -8
  266. package/dist/feature-libraries/modular-schema/prune.js.map +1 -1
  267. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -3
  268. package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  269. package/dist/feature-libraries/node-identifier/nodeIdentifier.js +2 -2
  270. package/dist/feature-libraries/node-identifier/nodeIdentifier.js.map +1 -1
  271. package/dist/feature-libraries/node-identifier/nodeIdentifierManager.js +3 -3
  272. package/dist/feature-libraries/node-identifier/nodeIdentifierManager.js.map +1 -1
  273. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  274. package/dist/feature-libraries/object-forest/objectForest.js +274 -267
  275. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  276. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  277. package/dist/feature-libraries/optional-field/optionalField.js +27 -35
  278. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  279. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +7 -7
  280. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  281. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +8 -8
  282. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  283. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +1 -2
  284. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  285. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  286. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +1 -2
  287. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  288. package/dist/feature-libraries/schema-index/schemaSummarizer.js +3 -0
  289. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  290. package/dist/feature-libraries/schemaChecker.js +5 -5
  291. package/dist/feature-libraries/schemaChecker.js.map +1 -1
  292. package/dist/feature-libraries/sequence-field/compose.js +8 -2
  293. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  294. package/dist/feature-libraries/sequence-field/filterEdits.d.ts +3 -3
  295. package/dist/feature-libraries/sequence-field/filterEdits.d.ts.map +1 -1
  296. package/dist/feature-libraries/sequence-field/filterEdits.js +29 -11
  297. package/dist/feature-libraries/sequence-field/filterEdits.js.map +1 -1
  298. package/dist/feature-libraries/sequence-field/formatV1.d.ts +102 -102
  299. package/dist/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
  300. package/dist/feature-libraries/sequence-field/formatV2.d.ts +79 -79
  301. package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  302. package/dist/feature-libraries/sequence-field/formatV3.d.ts +56 -56
  303. package/dist/feature-libraries/sequence-field/formatV3.d.ts.map +1 -1
  304. package/dist/feature-libraries/sequence-field/invert.js +1 -2
  305. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  306. package/dist/feature-libraries/sequence-field/markListFactory.js +3 -4
  307. package/dist/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  308. package/dist/feature-libraries/sequence-field/markQueue.js +4 -2
  309. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  310. package/dist/feature-libraries/sequence-field/moveEffectTable.js +9 -9
  311. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  312. package/dist/feature-libraries/sequence-field/prune.js +1 -2
  313. package/dist/feature-libraries/sequence-field/prune.js.map +1 -1
  314. package/dist/feature-libraries/sequence-field/rebase.js +7 -2
  315. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  316. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +1 -2
  317. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +1 -1
  318. package/dist/feature-libraries/sequence-field/replaceRevisions.js +1 -2
  319. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  320. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +2 -3
  321. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  322. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +1 -2
  323. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  324. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  325. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +9 -9
  326. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  327. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -2
  328. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  329. package/dist/feature-libraries/sequence-field/utils.d.ts +2 -2
  330. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  331. package/dist/feature-libraries/sequence-field/utils.js +54 -67
  332. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  333. package/dist/feature-libraries/treeCursorUtils.js +19 -15
  334. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  335. package/dist/feature-libraries/treeTextCursor.js +8 -8
  336. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  337. package/dist/feature-libraries/valueUtilities.js +4 -5
  338. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  339. package/dist/index.d.ts +4 -29
  340. package/dist/index.d.ts.map +1 -1
  341. package/dist/index.js +6 -9
  342. package/dist/index.js.map +1 -1
  343. package/dist/internalTypes.d.ts +1 -1
  344. package/dist/internalTypes.d.ts.map +1 -1
  345. package/dist/internalTypes.js.map +1 -1
  346. package/dist/packageVersion.d.ts +1 -1
  347. package/dist/packageVersion.d.ts.map +1 -1
  348. package/dist/packageVersion.js +1 -1
  349. package/dist/packageVersion.js.map +1 -1
  350. package/dist/serializableDomainSchema.d.ts +1 -1
  351. package/dist/shared-tree/history.d.ts.map +1 -1
  352. package/dist/shared-tree/history.js +32 -13
  353. package/dist/shared-tree/history.js.map +1 -1
  354. package/dist/shared-tree/independentView.d.ts +27 -3
  355. package/dist/shared-tree/independentView.d.ts.map +1 -1
  356. package/dist/shared-tree/independentView.js +36 -7
  357. package/dist/shared-tree/independentView.js.map +1 -1
  358. package/dist/shared-tree/index.d.ts +2 -1
  359. package/dist/shared-tree/index.d.ts.map +1 -1
  360. package/dist/shared-tree/index.js +6 -2
  361. package/dist/shared-tree/index.js.map +1 -1
  362. package/dist/shared-tree/isAuditableFromOutcome.js +1 -2
  363. package/dist/shared-tree/isAuditableFromOutcome.js.map +1 -1
  364. package/dist/shared-tree/schematizeTree.js +3 -4
  365. package/dist/shared-tree/schematizeTree.js.map +1 -1
  366. package/dist/shared-tree/schematizingTreeView.d.ts +2 -2
  367. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  368. package/dist/shared-tree/schematizingTreeView.js +59 -26
  369. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  370. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  371. package/dist/shared-tree/sharedTree.js +28 -19
  372. package/dist/shared-tree/sharedTree.js.map +1 -1
  373. package/dist/shared-tree/sharedTreeChangeCodecs.js +3 -3
  374. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  375. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  376. package/dist/shared-tree/sharedTreeChangeEnricher.js +12 -4
  377. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  378. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  379. package/dist/shared-tree/sharedTreeChangeFamily.js +11 -8
  380. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  381. package/dist/shared-tree/sharedTreeChangeFormat.js +2 -3
  382. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  383. package/dist/shared-tree/sharedTreeEditBuilder.js +2 -0
  384. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  385. package/dist/shared-tree/transactionMinimize.d.ts.map +1 -1
  386. package/dist/shared-tree/transactionMinimize.js +2 -1
  387. package/dist/shared-tree/transactionMinimize.js.map +1 -1
  388. package/dist/shared-tree/transactionPostProcessor.js +2 -3
  389. package/dist/shared-tree/transactionPostProcessor.js.map +1 -1
  390. package/dist/shared-tree/tree.js +2 -2
  391. package/dist/shared-tree/tree.js.map +1 -1
  392. package/dist/shared-tree/treeAlpha.d.ts +5 -16
  393. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  394. package/dist/shared-tree/treeAlpha.js +18 -11
  395. package/dist/shared-tree/treeAlpha.js.map +1 -1
  396. package/{lib/simple-tree/api → dist/shared-tree}/treeBeta.d.ts +8 -65
  397. package/dist/shared-tree/treeBeta.d.ts.map +1 -0
  398. package/dist/shared-tree/treeBeta.js +70 -0
  399. package/dist/shared-tree/treeBeta.js.map +1 -0
  400. package/dist/shared-tree/treeCheckout.d.ts +5 -0
  401. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  402. package/dist/shared-tree/treeCheckout.js +986 -907
  403. package/dist/shared-tree/treeCheckout.js.map +1 -1
  404. package/dist/shared-tree/unhydratedTreeContext.js +3 -4
  405. package/dist/shared-tree/unhydratedTreeContext.js.map +1 -1
  406. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  407. package/dist/shared-tree-core/branch.js +24 -20
  408. package/dist/shared-tree-core/branch.js.map +1 -1
  409. package/dist/shared-tree-core/branchCommitCounter.js +35 -32
  410. package/dist/shared-tree-core/branchCommitCounter.js.map +1 -1
  411. package/dist/shared-tree-core/branchCommitEnricher.js +9 -8
  412. package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
  413. package/dist/shared-tree-core/branchIdCodec.js +2 -3
  414. package/dist/shared-tree-core/branchIdCodec.js.map +1 -1
  415. package/dist/shared-tree-core/customMetadataCodec.js +2 -3
  416. package/dist/shared-tree-core/customMetadataCodec.js.map +1 -1
  417. package/dist/shared-tree-core/customMetadataFormat.d.ts.map +1 -1
  418. package/dist/shared-tree-core/defaultResubmitMachine.js +11 -9
  419. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  420. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  421. package/dist/shared-tree-core/editManager.js +73 -44
  422. package/dist/shared-tree-core/editManager.js.map +1 -1
  423. package/dist/shared-tree-core/editManagerCodecs.js +3 -3
  424. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  425. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +1 -1
  426. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  427. package/dist/shared-tree-core/editManagerCodecsCommons.js +33 -36
  428. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  429. package/dist/shared-tree-core/editManagerCodecsV1toV4.js +1 -2
  430. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  431. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -2
  432. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  433. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +11 -11
  434. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  435. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +5 -4
  436. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  437. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts +10 -9
  438. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
  439. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  440. package/dist/shared-tree-core/editManagerSummarizer.js +6 -1
  441. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  442. package/dist/shared-tree-core/messageCodecV1ToV4.js +1 -2
  443. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  444. package/dist/shared-tree-core/messageCodecVSharedBranches.js +1 -2
  445. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  446. package/dist/shared-tree-core/messageCodecs.js +3 -3
  447. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  448. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
  449. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  450. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts +3 -2
  451. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  452. package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  453. package/dist/shared-tree-core/sharedTreeCore.js +44 -22
  454. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  455. package/dist/shared-tree-core/summaryTypes.js +2 -2
  456. package/dist/shared-tree-core/summaryTypes.js.map +1 -1
  457. package/dist/shared-tree-core/transaction.js +36 -39
  458. package/dist/shared-tree-core/transaction.js.map +1 -1
  459. package/dist/shared-tree-core/versionedSummarizer.js +4 -0
  460. package/dist/shared-tree-core/versionedSummarizer.js.map +1 -1
  461. package/dist/simple-tree/api/cloneTree.d.ts +11 -0
  462. package/dist/simple-tree/api/cloneTree.d.ts.map +1 -0
  463. package/dist/simple-tree/api/cloneTree.js +31 -0
  464. package/dist/simple-tree/api/cloneTree.js.map +1 -0
  465. package/dist/simple-tree/api/conciseTree.js +2 -3
  466. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  467. package/dist/simple-tree/api/configuration.js +21 -2
  468. package/dist/simple-tree/api/configuration.js.map +1 -1
  469. package/dist/simple-tree/api/create.js +2 -3
  470. package/dist/simple-tree/api/create.js.map +1 -1
  471. package/dist/simple-tree/api/customTree.js +6 -6
  472. package/dist/simple-tree/api/customTree.js.map +1 -1
  473. package/dist/simple-tree/api/dirtyIndex.js +1 -2
  474. package/dist/simple-tree/api/dirtyIndex.js.map +1 -1
  475. package/dist/simple-tree/api/discrepancies.js +2 -3
  476. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  477. package/dist/simple-tree/api/eraseSchemaDetails.js +2 -3
  478. package/dist/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  479. package/dist/simple-tree/api/getJsonSchema.js +1 -2
  480. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  481. package/dist/simple-tree/api/getSimpleSchema.js +1 -2
  482. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  483. package/dist/simple-tree/api/identifierIndex.js +1 -2
  484. package/dist/simple-tree/api/identifierIndex.js.map +1 -1
  485. package/dist/simple-tree/api/incrementalAllowedTypes.js +2 -2
  486. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  487. package/dist/simple-tree/api/index.d.ts +3 -3
  488. package/dist/simple-tree/api/index.d.ts.map +1 -1
  489. package/dist/simple-tree/api/index.js +4 -7
  490. package/dist/simple-tree/api/index.js.map +1 -1
  491. package/dist/simple-tree/api/schemaCompatibilityTester.js +2 -3
  492. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  493. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -7
  494. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  495. package/dist/simple-tree/api/schemaCreationUtilities.js +6 -9
  496. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  497. package/dist/simple-tree/api/schemaFactory.d.ts +4 -9
  498. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  499. package/dist/simple-tree/api/schemaFactory.js +13 -12
  500. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  501. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +20 -22
  502. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  503. package/dist/simple-tree/api/schemaFactoryAlpha.js +78 -81
  504. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  505. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +7 -9
  506. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  507. package/dist/simple-tree/api/schemaFactoryBeta.js +32 -35
  508. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  509. package/dist/simple-tree/api/schemaFactoryRecursive.js +1 -2
  510. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  511. package/dist/simple-tree/api/schemaFromSimple.js +1 -2
  512. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  513. package/dist/simple-tree/api/schemaStatics.d.ts +7 -7
  514. package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
  515. package/dist/simple-tree/api/simpleSchemaCodec.js +2 -3
  516. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  517. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +2 -3
  518. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  519. package/dist/simple-tree/api/simpleTreeIndex.js +1 -2
  520. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  521. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +46 -2
  522. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  523. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +54 -12
  524. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  525. package/dist/simple-tree/api/storedSchema.js +2 -3
  526. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  527. package/dist/simple-tree/api/transactionTypes.d.ts +4 -4
  528. package/dist/simple-tree/api/transactionTypes.js.map +1 -1
  529. package/dist/simple-tree/api/tree.d.ts +80 -61
  530. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  531. package/dist/simple-tree/api/tree.js +3 -5
  532. package/dist/simple-tree/api/tree.js.map +1 -1
  533. package/dist/simple-tree/api/treeChangeEvents.d.ts +16 -4
  534. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  535. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  536. package/dist/simple-tree/api/treeChangeEventsBeta.d.ts +209 -0
  537. package/dist/simple-tree/api/treeChangeEventsBeta.d.ts.map +1 -0
  538. package/dist/simple-tree/api/{treeAlpha.js → treeChangeEventsBeta.js} +1 -1
  539. package/dist/simple-tree/api/treeChangeEventsBeta.js.map +1 -0
  540. package/dist/simple-tree/api/treeNodeApi.d.ts +1 -75
  541. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  542. package/dist/simple-tree/api/treeNodeApi.js +7 -7
  543. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  544. package/dist/simple-tree/api/typesUnsafe.d.ts +8 -6
  545. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  546. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  547. package/dist/simple-tree/api/verboseTree.js +5 -6
  548. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  549. package/dist/simple-tree/core/allowedTypes.js +22 -13
  550. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  551. package/dist/simple-tree/core/context.js +3 -0
  552. package/dist/simple-tree/core/context.js.map +1 -1
  553. package/dist/simple-tree/core/flexList.js +2 -3
  554. package/dist/simple-tree/core/flexList.js.map +1 -1
  555. package/dist/simple-tree/core/getOrCreateNode.js +2 -3
  556. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  557. package/dist/simple-tree/core/index.d.ts +1 -1
  558. package/dist/simple-tree/core/index.d.ts.map +1 -1
  559. package/dist/simple-tree/core/index.js +2 -2
  560. package/dist/simple-tree/core/index.js.map +1 -1
  561. package/dist/simple-tree/core/treeNode.d.ts +3 -4
  562. package/dist/simple-tree/core/treeNode.d.ts.map +1 -1
  563. package/dist/simple-tree/core/treeNode.js +31 -32
  564. package/dist/simple-tree/core/treeNode.js.map +1 -1
  565. package/dist/simple-tree/core/treeNodeKernel.js +194 -192
  566. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  567. package/dist/simple-tree/core/treeNodeSchema.js +3 -3
  568. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  569. package/dist/simple-tree/core/treeNodeValid.js +23 -23
  570. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  571. package/dist/simple-tree/core/types.js +1 -2
  572. package/dist/simple-tree/core/types.js.map +1 -1
  573. package/dist/simple-tree/core/unhydratedFlexTree.js +177 -150
  574. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  575. package/dist/simple-tree/core/walkSchema.js +2 -3
  576. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  577. package/dist/simple-tree/core/withType.d.ts +7 -9
  578. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  579. package/dist/simple-tree/core/withType.js +6 -7
  580. package/dist/simple-tree/core/withType.js.map +1 -1
  581. package/dist/simple-tree/createContext.js +2 -3
  582. package/dist/simple-tree/createContext.js.map +1 -1
  583. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  584. package/dist/simple-tree/fieldSchema.js +33 -15
  585. package/dist/simple-tree/fieldSchema.js.map +1 -1
  586. package/dist/simple-tree/getTreeNodeForField.js +1 -2
  587. package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
  588. package/dist/simple-tree/index.d.ts +2 -2
  589. package/dist/simple-tree/index.d.ts.map +1 -1
  590. package/dist/simple-tree/index.js +5 -8
  591. package/dist/simple-tree/index.js.map +1 -1
  592. package/dist/simple-tree/leafNodeSchema.d.ts +1 -1
  593. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  594. package/dist/simple-tree/leafNodeSchema.js +18 -17
  595. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  596. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -2
  597. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  598. package/dist/simple-tree/node-kinds/array/arrayNode.js +31 -33
  599. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  600. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  601. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js +2 -2
  602. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  603. package/dist/simple-tree/node-kinds/common.js +1 -2
  604. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  605. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +6 -6
  606. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  607. package/dist/simple-tree/node-kinds/map/mapNode.js +10 -16
  608. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  609. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  610. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js +2 -2
  611. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  612. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  613. package/dist/simple-tree/node-kinds/object/objectNode.js +27 -28
  614. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  615. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +1 -1
  616. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  617. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js +2 -2
  618. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  619. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  620. package/dist/simple-tree/node-kinds/record/recordNode.js +10 -13
  621. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  622. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +3 -2
  623. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  624. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js +2 -2
  625. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  626. package/dist/simple-tree/prepareForInsertion.js +4 -5
  627. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  628. package/dist/simple-tree/toStoredSchema.js +11 -11
  629. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  630. package/dist/simple-tree/treeSchema.js +1 -2
  631. package/dist/simple-tree/treeSchema.js.map +1 -1
  632. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +3 -4
  633. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  634. package/dist/simple-tree/walkFieldSchema.js +1 -2
  635. package/dist/simple-tree/walkFieldSchema.js.map +1 -1
  636. package/dist/tableSchema.d.ts +2 -87
  637. package/dist/tableSchema.d.ts.map +1 -1
  638. package/dist/tableSchema.js +309 -275
  639. package/dist/tableSchema.js.map +1 -1
  640. package/dist/text/codePointUtils.d.ts +16 -3
  641. package/dist/text/codePointUtils.d.ts.map +1 -1
  642. package/dist/text/codePointUtils.js +24 -13
  643. package/dist/text/codePointUtils.js.map +1 -1
  644. package/dist/text/textDomain.d.ts +7 -1
  645. package/dist/text/textDomain.d.ts.map +1 -1
  646. package/dist/text/textDomain.js +32 -28
  647. package/dist/text/textDomain.js.map +1 -1
  648. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  649. package/dist/text/textDomainFormatted.js +45 -34
  650. package/dist/text/textDomainFormatted.js.map +1 -1
  651. package/dist/text/textDomainFormattedDefault.js +2 -5
  652. package/dist/text/textDomainFormattedDefault.js.map +1 -1
  653. package/dist/treeDataStore.js +2 -3
  654. package/dist/treeDataStore.js.map +1 -1
  655. package/dist/treeFactory.js +7 -7
  656. package/dist/treeFactory.js.map +1 -1
  657. package/dist/util/arrayUtilities.js +5 -6
  658. package/dist/util/arrayUtilities.js.map +1 -1
  659. package/dist/util/bTreeUtils.js +3 -4
  660. package/dist/util/bTreeUtils.js.map +1 -1
  661. package/dist/util/brand.js +6 -5
  662. package/dist/util/brand.js.map +1 -1
  663. package/dist/util/brandedMap.js +2 -3
  664. package/dist/util/brandedMap.js.map +1 -1
  665. package/dist/util/breakable.d.ts.map +1 -1
  666. package/dist/util/breakable.js +7 -4
  667. package/dist/util/breakable.js.map +1 -1
  668. package/dist/util/cloneWithReplacements.js +1 -2
  669. package/dist/util/cloneWithReplacements.js.map +1 -1
  670. package/dist/util/compressedIds.js +29 -7
  671. package/dist/util/compressedIds.js.map +1 -1
  672. package/dist/util/idAllocator.js +3 -3
  673. package/dist/util/idAllocator.js.map +1 -1
  674. package/dist/util/nestedMap.js +15 -17
  675. package/dist/util/nestedMap.js.map +1 -1
  676. package/dist/util/nestedSet.js +2 -3
  677. package/dist/util/nestedSet.js.map +1 -1
  678. package/dist/util/offsetList.js +2 -4
  679. package/dist/util/offsetList.js.map +1 -1
  680. package/dist/util/opaque.js +2 -3
  681. package/dist/util/opaque.js.map +1 -1
  682. package/dist/util/rangeMap.js +6 -2
  683. package/dist/util/rangeMap.js.map +1 -1
  684. package/dist/util/readSnapshotBlob.d.ts.map +1 -1
  685. package/dist/util/referenceCounting.js +1 -0
  686. package/dist/util/referenceCounting.js.map +1 -1
  687. package/dist/util/stackyIterator.js +3 -2
  688. package/dist/util/stackyIterator.js.map +1 -1
  689. package/dist/util/typeUtils.js +1 -2
  690. package/dist/util/typeUtils.js.map +1 -1
  691. package/dist/util/typeboxBrand.js +2 -3
  692. package/dist/util/typeboxBrand.js.map +1 -1
  693. package/dist/util/utils.d.ts +2 -2
  694. package/dist/util/utils.d.ts.map +1 -1
  695. package/dist/util/utils.js +32 -32
  696. package/dist/util/utils.js.map +1 -1
  697. package/lib/api.d.ts +9 -1
  698. package/lib/api.d.ts.map +1 -1
  699. package/lib/api.js.map +1 -1
  700. package/lib/codec/codec.d.ts +2 -2
  701. package/lib/codec/codec.d.ts.map +1 -1
  702. package/lib/codec/codec.js +2 -0
  703. package/lib/codec/codec.js.map +1 -1
  704. package/lib/codec/discriminatedUnions.js +1 -0
  705. package/lib/codec/discriminatedUnions.js.map +1 -1
  706. package/lib/codec/versioned/codec.d.ts.map +1 -1
  707. package/lib/codec/versioned/codec.js +2 -0
  708. package/lib/codec/versioned/codec.js.map +1 -1
  709. package/lib/componentApi.d.ts.map +1 -1
  710. package/lib/componentApi.js +20 -17
  711. package/lib/componentApi.js.map +1 -1
  712. package/lib/core/change-family/editBuilder.js +1 -0
  713. package/lib/core/change-family/editBuilder.js.map +1 -1
  714. package/lib/core/index.d.ts +2 -2
  715. package/lib/core/index.d.ts.map +1 -1
  716. package/lib/core/index.js +2 -2
  717. package/lib/core/index.js.map +1 -1
  718. package/lib/core/rebase/index.d.ts +1 -1
  719. package/lib/core/rebase/index.d.ts.map +1 -1
  720. package/lib/core/rebase/index.js +1 -1
  721. package/lib/core/rebase/index.js.map +1 -1
  722. package/lib/core/rebase/revisionTagCodec.js +3 -1
  723. package/lib/core/rebase/revisionTagCodec.js.map +1 -1
  724. package/lib/core/rebase/types.d.ts +12 -1
  725. package/lib/core/rebase/types.d.ts.map +1 -1
  726. package/lib/core/rebase/types.js +3 -0
  727. package/lib/core/rebase/types.js.map +1 -1
  728. package/lib/core/schema-stored/schema.js +5 -0
  729. package/lib/core/schema-stored/schema.js.map +1 -1
  730. package/lib/core/schema-stored/storedSchemaRepository.js +4 -2
  731. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  732. package/lib/core/tree/anchorSet.js +61 -54
  733. package/lib/core/tree/anchorSet.js.map +1 -1
  734. package/lib/core/tree/deltaUtil.d.ts +34 -9
  735. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  736. package/lib/core/tree/deltaUtil.js +41 -10
  737. package/lib/core/tree/deltaUtil.js.map +1 -1
  738. package/lib/core/tree/detachedFieldIndex.js +23 -21
  739. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  740. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +10 -10
  741. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  742. package/lib/core/tree/detachedFieldIndexCodecV1.js +2 -0
  743. package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  744. package/lib/core/tree/detachedFieldIndexCodecV2.js +2 -0
  745. package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  746. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +3 -3
  747. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  748. package/lib/core/tree/index.d.ts +1 -1
  749. package/lib/core/tree/index.d.ts.map +1 -1
  750. package/lib/core/tree/index.js +1 -1
  751. package/lib/core/tree/index.js.map +1 -1
  752. package/lib/core/tree/persistedTreeTextFormat.d.ts +4 -4
  753. package/lib/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  754. package/lib/core/tree/sparseTree.js +15 -11
  755. package/lib/core/tree/sparseTree.js.map +1 -1
  756. package/lib/entrypoints/alpha.d.ts +1 -1
  757. package/lib/entrypoints/alpha.d.ts.map +1 -1
  758. package/lib/entrypoints/alpha.js +1 -1
  759. package/lib/entrypoints/alpha.js.map +1 -1
  760. package/lib/entrypoints/beta.d.ts +1 -1
  761. package/lib/entrypoints/beta.d.ts.map +1 -1
  762. package/lib/entrypoints/beta.js +1 -1
  763. package/lib/entrypoints/beta.js.map +1 -1
  764. package/lib/entrypoints/legacy.d.ts +1 -1
  765. package/lib/entrypoints/legacy.d.ts.map +1 -1
  766. package/lib/entrypoints/legacy.js +1 -1
  767. package/lib/entrypoints/legacy.js.map +1 -1
  768. package/lib/entrypoints/public.d.ts +1 -1
  769. package/lib/entrypoints/public.d.ts.map +1 -1
  770. package/lib/entrypoints/public.js +1 -1
  771. package/lib/entrypoints/public.js.map +1 -1
  772. package/lib/extensibleUnionNode.d.ts.map +1 -1
  773. package/lib/extensibleUnionNode.js +2 -2
  774. package/lib/extensibleUnionNode.js.map +1 -1
  775. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  776. package/lib/feature-libraries/chunked-forest/basicChunk.js +14 -1
  777. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  778. package/lib/feature-libraries/chunked-forest/chunkTree.js +14 -6
  779. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  780. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  781. package/lib/feature-libraries/chunked-forest/chunkedForest.js +18 -12
  782. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  783. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +1 -3
  784. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  785. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +8 -0
  786. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  787. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +4 -0
  788. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  789. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +1 -0
  790. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  791. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  792. package/lib/feature-libraries/chunked-forest/codec/codecs.js +2 -0
  793. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  794. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +28 -12
  795. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  796. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +2 -2
  797. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  798. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js +9 -0
  799. package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
  800. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -0
  801. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  802. package/lib/feature-libraries/chunked-forest/uniformChunk.js +71 -13
  803. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  804. package/lib/feature-libraries/comparison-forest/comparisonForest.js +79 -79
  805. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -1
  806. package/lib/feature-libraries/cursorComparator.d.ts +8 -0
  807. package/lib/feature-libraries/cursorComparator.d.ts.map +1 -1
  808. package/lib/feature-libraries/cursorComparator.js +43 -9
  809. package/lib/feature-libraries/cursorComparator.js.map +1 -1
  810. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +3 -0
  811. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  812. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +2 -0
  813. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  814. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -0
  815. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  816. package/lib/feature-libraries/flex-tree/context.js +19 -3
  817. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  818. package/lib/feature-libraries/flex-tree/lazyEntity.js +12 -12
  819. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  820. package/lib/feature-libraries/flex-tree/lazyField.js +25 -27
  821. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  822. package/lib/feature-libraries/flex-tree/lazyNode.js +22 -21
  823. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  824. package/lib/feature-libraries/forest-summary/forestSummarizer.js +122 -117
  825. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  826. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +49 -32
  827. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  828. package/lib/feature-libraries/indexing/anchorTreeIndex.js +33 -29
  829. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  830. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +14 -12
  831. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  832. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +63 -10
  833. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  834. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  835. package/lib/feature-libraries/modular-schema/fieldKind.js +10 -0
  836. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  837. package/lib/feature-libraries/modular-schema/filterEdits.d.ts +13 -0
  838. package/lib/feature-libraries/modular-schema/filterEdits.d.ts.map +1 -0
  839. package/lib/feature-libraries/modular-schema/filterEdits.js +46 -0
  840. package/lib/feature-libraries/modular-schema/filterEdits.js.map +1 -0
  841. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  842. package/lib/feature-libraries/modular-schema/genericFieldKind.js +5 -2
  843. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  844. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +2 -2
  845. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  846. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  847. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  848. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  849. package/lib/feature-libraries/modular-schema/invert.d.ts +1 -1
  850. package/lib/feature-libraries/modular-schema/invert.d.ts.map +1 -1
  851. package/lib/feature-libraries/modular-schema/invert.js +6 -30
  852. package/lib/feature-libraries/modular-schema/invert.js.map +1 -1
  853. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts +5 -7
  854. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  855. package/lib/feature-libraries/modular-schema/minimizeModularChange.js +458 -8
  856. package/lib/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  857. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -10
  858. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  859. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +20 -85
  860. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  861. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +13 -1
  862. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -1
  863. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +100 -3
  864. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -1
  865. package/lib/feature-libraries/modular-schema/prune.d.ts +2 -3
  866. package/lib/feature-libraries/modular-schema/prune.d.ts.map +1 -1
  867. package/lib/feature-libraries/modular-schema/prune.js +25 -7
  868. package/lib/feature-libraries/modular-schema/prune.js.map +1 -1
  869. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -3
  870. package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
  871. package/lib/feature-libraries/node-identifier/nodeIdentifierManager.js +1 -0
  872. package/lib/feature-libraries/node-identifier/nodeIdentifierManager.js.map +1 -1
  873. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  874. package/lib/feature-libraries/object-forest/objectForest.js +273 -266
  875. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  876. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  877. package/lib/feature-libraries/optional-field/optionalField.js +24 -32
  878. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  879. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +1 -1
  880. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  881. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +1 -1
  882. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  883. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  884. package/lib/feature-libraries/schema-index/schemaSummarizer.js +3 -0
  885. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  886. package/lib/feature-libraries/sequence-field/compose.js +6 -0
  887. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  888. package/lib/feature-libraries/sequence-field/filterEdits.d.ts +3 -3
  889. package/lib/feature-libraries/sequence-field/filterEdits.d.ts.map +1 -1
  890. package/lib/feature-libraries/sequence-field/filterEdits.js +31 -12
  891. package/lib/feature-libraries/sequence-field/filterEdits.js.map +1 -1
  892. package/lib/feature-libraries/sequence-field/formatV1.d.ts +3 -3
  893. package/lib/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
  894. package/lib/feature-libraries/sequence-field/formatV2.d.ts +3 -3
  895. package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  896. package/lib/feature-libraries/sequence-field/formatV3.d.ts +2 -2
  897. package/lib/feature-libraries/sequence-field/formatV3.d.ts.map +1 -1
  898. package/lib/feature-libraries/sequence-field/markListFactory.js +3 -4
  899. package/lib/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  900. package/lib/feature-libraries/sequence-field/markQueue.js +4 -2
  901. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  902. package/lib/feature-libraries/sequence-field/rebase.js +6 -0
  903. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  904. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  905. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +9 -9
  906. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  907. package/lib/feature-libraries/sequence-field/utils.d.ts +2 -2
  908. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  909. package/lib/feature-libraries/sequence-field/utils.js +3 -15
  910. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  911. package/lib/feature-libraries/treeCursorUtils.js +13 -9
  912. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  913. package/lib/index.d.ts +4 -29
  914. package/lib/index.d.ts.map +1 -1
  915. package/lib/index.js +2 -17
  916. package/lib/index.js.map +1 -1
  917. package/lib/internalTypes.d.ts +1 -1
  918. package/lib/internalTypes.d.ts.map +1 -1
  919. package/lib/internalTypes.js.map +1 -1
  920. package/lib/packageVersion.d.ts +1 -1
  921. package/lib/packageVersion.d.ts.map +1 -1
  922. package/lib/packageVersion.js +1 -1
  923. package/lib/packageVersion.js.map +1 -1
  924. package/lib/serializableDomainSchema.d.ts +1 -1
  925. package/lib/shared-tree/history.d.ts.map +1 -1
  926. package/lib/shared-tree/history.js +32 -13
  927. package/lib/shared-tree/history.js.map +1 -1
  928. package/lib/shared-tree/independentView.d.ts +27 -3
  929. package/lib/shared-tree/independentView.d.ts.map +1 -1
  930. package/lib/shared-tree/independentView.js +30 -2
  931. package/lib/shared-tree/independentView.js.map +1 -1
  932. package/lib/shared-tree/index.d.ts +2 -1
  933. package/lib/shared-tree/index.d.ts.map +1 -1
  934. package/lib/shared-tree/index.js +2 -1
  935. package/lib/shared-tree/index.js.map +1 -1
  936. package/lib/shared-tree/schematizingTreeView.d.ts +2 -2
  937. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  938. package/lib/shared-tree/schematizingTreeView.js +60 -27
  939. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  940. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  941. package/lib/shared-tree/sharedTree.js +24 -15
  942. package/lib/shared-tree/sharedTree.js.map +1 -1
  943. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  944. package/lib/shared-tree/sharedTreeChangeEnricher.js +12 -4
  945. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  946. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  947. package/lib/shared-tree/sharedTreeChangeFamily.js +6 -3
  948. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  949. package/lib/shared-tree/sharedTreeEditBuilder.js +2 -0
  950. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  951. package/lib/shared-tree/transactionMinimize.d.ts.map +1 -1
  952. package/lib/shared-tree/transactionMinimize.js +4 -3
  953. package/lib/shared-tree/transactionMinimize.js.map +1 -1
  954. package/lib/shared-tree/treeAlpha.d.ts +5 -16
  955. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  956. package/lib/shared-tree/treeAlpha.js +13 -6
  957. package/lib/shared-tree/treeAlpha.js.map +1 -1
  958. package/{dist/simple-tree/api → lib/shared-tree}/treeBeta.d.ts +8 -65
  959. package/lib/shared-tree/treeBeta.d.ts.map +1 -0
  960. package/lib/shared-tree/treeBeta.js +64 -0
  961. package/lib/shared-tree/treeBeta.js.map +1 -0
  962. package/lib/shared-tree/treeCheckout.d.ts +5 -0
  963. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  964. package/lib/shared-tree/treeCheckout.js +985 -906
  965. package/lib/shared-tree/treeCheckout.js.map +1 -1
  966. package/lib/shared-tree/unhydratedTreeContext.js +3 -4
  967. package/lib/shared-tree/unhydratedTreeContext.js.map +1 -1
  968. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  969. package/lib/shared-tree-core/branch.js +22 -18
  970. package/lib/shared-tree-core/branch.js.map +1 -1
  971. package/lib/shared-tree-core/branchCommitCounter.js +35 -32
  972. package/lib/shared-tree-core/branchCommitCounter.js.map +1 -1
  973. package/lib/shared-tree-core/branchCommitEnricher.js +9 -8
  974. package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
  975. package/lib/shared-tree-core/customMetadataFormat.d.ts.map +1 -1
  976. package/lib/shared-tree-core/defaultResubmitMachine.js +11 -9
  977. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  978. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  979. package/lib/shared-tree-core/editManager.js +73 -44
  980. package/lib/shared-tree-core/editManager.js.map +1 -1
  981. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +1 -1
  982. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  983. package/lib/shared-tree-core/editManagerCodecsCommons.js +32 -34
  984. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  985. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  986. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  987. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +4 -4
  988. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  989. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -1
  990. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  991. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts +2 -1
  992. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
  993. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  994. package/lib/shared-tree-core/editManagerSummarizer.js +6 -1
  995. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  996. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -1
  997. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  998. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts +2 -1
  999. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  1000. package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  1001. package/lib/shared-tree-core/sharedTreeCore.js +45 -23
  1002. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  1003. package/lib/shared-tree-core/transaction.js +36 -39
  1004. package/lib/shared-tree-core/transaction.js.map +1 -1
  1005. package/lib/shared-tree-core/versionedSummarizer.js +4 -0
  1006. package/lib/shared-tree-core/versionedSummarizer.js.map +1 -1
  1007. package/lib/simple-tree/api/cloneTree.d.ts +11 -0
  1008. package/lib/simple-tree/api/cloneTree.d.ts.map +1 -0
  1009. package/lib/simple-tree/api/cloneTree.js +28 -0
  1010. package/lib/simple-tree/api/cloneTree.js.map +1 -0
  1011. package/lib/simple-tree/api/configuration.js +19 -0
  1012. package/lib/simple-tree/api/configuration.js.map +1 -1
  1013. package/lib/simple-tree/api/index.d.ts +3 -3
  1014. package/lib/simple-tree/api/index.d.ts.map +1 -1
  1015. package/lib/simple-tree/api/index.js +1 -1
  1016. package/lib/simple-tree/api/index.js.map +1 -1
  1017. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -7
  1018. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  1019. package/lib/simple-tree/api/schemaCreationUtilities.js +1 -3
  1020. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  1021. package/lib/simple-tree/api/schemaFactory.d.ts +4 -9
  1022. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  1023. package/lib/simple-tree/api/schemaFactory.js +9 -8
  1024. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  1025. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +18 -20
  1026. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  1027. package/lib/simple-tree/api/schemaFactoryAlpha.js +78 -81
  1028. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  1029. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +7 -9
  1030. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  1031. package/lib/simple-tree/api/schemaFactoryBeta.js +32 -35
  1032. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  1033. package/lib/simple-tree/api/schemaStatics.d.ts +7 -7
  1034. package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
  1035. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +46 -2
  1036. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  1037. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +48 -6
  1038. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  1039. package/lib/simple-tree/api/transactionTypes.d.ts +4 -4
  1040. package/lib/simple-tree/api/transactionTypes.js.map +1 -1
  1041. package/lib/simple-tree/api/tree.d.ts +80 -61
  1042. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  1043. package/lib/simple-tree/api/tree.js +2 -3
  1044. package/lib/simple-tree/api/tree.js.map +1 -1
  1045. package/lib/simple-tree/api/treeChangeEvents.d.ts +16 -4
  1046. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  1047. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  1048. package/lib/simple-tree/api/treeChangeEventsBeta.d.ts +209 -0
  1049. package/lib/simple-tree/api/treeChangeEventsBeta.d.ts.map +1 -0
  1050. package/lib/simple-tree/api/{treeAlpha.js → treeChangeEventsBeta.js} +1 -1
  1051. package/lib/simple-tree/api/treeChangeEventsBeta.js.map +1 -0
  1052. package/lib/simple-tree/api/treeNodeApi.d.ts +1 -75
  1053. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  1054. package/lib/simple-tree/api/treeNodeApi.js +1 -1
  1055. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  1056. package/lib/simple-tree/api/typesUnsafe.d.ts +8 -6
  1057. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  1058. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  1059. package/lib/simple-tree/core/allowedTypes.js +12 -3
  1060. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  1061. package/lib/simple-tree/core/context.js +3 -0
  1062. package/lib/simple-tree/core/context.js.map +1 -1
  1063. package/lib/simple-tree/core/index.d.ts +1 -1
  1064. package/lib/simple-tree/core/index.d.ts.map +1 -1
  1065. package/lib/simple-tree/core/index.js +1 -1
  1066. package/lib/simple-tree/core/index.js.map +1 -1
  1067. package/lib/simple-tree/core/treeNode.d.ts +3 -4
  1068. package/lib/simple-tree/core/treeNode.d.ts.map +1 -1
  1069. package/lib/simple-tree/core/treeNode.js +29 -30
  1070. package/lib/simple-tree/core/treeNode.js.map +1 -1
  1071. package/lib/simple-tree/core/treeNodeKernel.js +181 -179
  1072. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  1073. package/lib/simple-tree/core/treeNodeValid.js +19 -19
  1074. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  1075. package/lib/simple-tree/core/unhydratedFlexTree.js +173 -146
  1076. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  1077. package/lib/simple-tree/core/withType.d.ts +7 -9
  1078. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  1079. package/lib/simple-tree/core/withType.js +5 -6
  1080. package/lib/simple-tree/core/withType.js.map +1 -1
  1081. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  1082. package/lib/simple-tree/fieldSchema.js +23 -5
  1083. package/lib/simple-tree/fieldSchema.js.map +1 -1
  1084. package/lib/simple-tree/index.d.ts +2 -2
  1085. package/lib/simple-tree/index.d.ts.map +1 -1
  1086. package/lib/simple-tree/index.js +2 -2
  1087. package/lib/simple-tree/index.js.map +1 -1
  1088. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  1089. package/lib/simple-tree/leafNodeSchema.js +16 -15
  1090. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  1091. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -2
  1092. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  1093. package/lib/simple-tree/node-kinds/array/arrayNode.js +28 -32
  1094. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  1095. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  1096. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +6 -6
  1097. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  1098. package/lib/simple-tree/node-kinds/map/mapNode.js +10 -17
  1099. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  1100. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  1101. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  1102. package/lib/simple-tree/node-kinds/object/objectNode.js +25 -28
  1103. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  1104. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +1 -1
  1105. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  1106. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  1107. package/lib/simple-tree/node-kinds/record/recordNode.js +10 -14
  1108. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  1109. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +3 -2
  1110. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  1111. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  1112. package/lib/tableSchema.d.ts +2 -87
  1113. package/lib/tableSchema.d.ts.map +1 -1
  1114. package/lib/tableSchema.js +309 -275
  1115. package/lib/tableSchema.js.map +1 -1
  1116. package/lib/text/codePointUtils.d.ts +16 -3
  1117. package/lib/text/codePointUtils.d.ts.map +1 -1
  1118. package/lib/text/codePointUtils.js +22 -10
  1119. package/lib/text/codePointUtils.js.map +1 -1
  1120. package/lib/text/textDomain.d.ts +7 -1
  1121. package/lib/text/textDomain.d.ts.map +1 -1
  1122. package/lib/text/textDomain.js +21 -17
  1123. package/lib/text/textDomain.js.map +1 -1
  1124. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  1125. package/lib/text/textDomainFormatted.js +43 -32
  1126. package/lib/text/textDomainFormatted.js.map +1 -1
  1127. package/lib/text/textDomainFormattedDefault.js +2 -5
  1128. package/lib/text/textDomainFormattedDefault.js.map +1 -1
  1129. package/lib/util/brand.js +1 -0
  1130. package/lib/util/brand.js.map +1 -1
  1131. package/lib/util/breakable.d.ts.map +1 -1
  1132. package/lib/util/breakable.js +3 -0
  1133. package/lib/util/breakable.js.map +1 -1
  1134. package/lib/util/compressedIds.js +22 -0
  1135. package/lib/util/compressedIds.js.map +1 -1
  1136. package/lib/util/nestedMap.js +2 -4
  1137. package/lib/util/nestedMap.js.map +1 -1
  1138. package/lib/util/offsetList.js +2 -4
  1139. package/lib/util/offsetList.js.map +1 -1
  1140. package/lib/util/rangeMap.js +4 -0
  1141. package/lib/util/rangeMap.js.map +1 -1
  1142. package/lib/util/readSnapshotBlob.d.ts.map +1 -1
  1143. package/lib/util/referenceCounting.js +1 -0
  1144. package/lib/util/referenceCounting.js.map +1 -1
  1145. package/lib/util/stackyIterator.js +3 -2
  1146. package/lib/util/stackyIterator.js.map +1 -1
  1147. package/lib/util/utils.d.ts +2 -2
  1148. package/lib/util/utils.d.ts.map +1 -1
  1149. package/package.json +67 -95
  1150. package/src/api.ts +11 -0
  1151. package/src/core/index.ts +6 -2
  1152. package/src/core/rebase/index.ts +1 -0
  1153. package/src/core/rebase/types.ts +16 -1
  1154. package/src/core/tree/anchorSet.ts +2 -2
  1155. package/src/core/tree/deltaUtil.ts +67 -13
  1156. package/src/core/tree/index.ts +5 -2
  1157. package/src/entrypoints/alpha.ts +19 -21
  1158. package/src/entrypoints/beta.ts +12 -5
  1159. package/src/entrypoints/legacy.ts +12 -5
  1160. package/src/entrypoints/public.ts +1 -5
  1161. package/src/extensibleUnionNode.ts +1 -2
  1162. package/src/feature-libraries/cursorComparator.ts +57 -9
  1163. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +77 -12
  1164. package/src/feature-libraries/modular-schema/filterEdits.ts +108 -0
  1165. package/src/feature-libraries/modular-schema/genericFieldKind.ts +7 -4
  1166. package/src/feature-libraries/modular-schema/index.ts +5 -2
  1167. package/src/feature-libraries/modular-schema/invert.ts +16 -61
  1168. package/src/feature-libraries/modular-schema/minimizeModularChange.ts +831 -10
  1169. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +10 -124
  1170. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +164 -2
  1171. package/src/feature-libraries/modular-schema/prune.ts +52 -10
  1172. package/src/feature-libraries/optional-field/optionalField.ts +30 -42
  1173. package/src/feature-libraries/sequence-field/filterEdits.ts +62 -26
  1174. package/src/feature-libraries/sequence-field/utils.ts +7 -19
  1175. package/src/index.ts +7 -39
  1176. package/src/internalTypes.ts +1 -1
  1177. package/src/packageVersion.ts +1 -1
  1178. package/src/shared-tree/history.ts +41 -19
  1179. package/src/shared-tree/independentView.ts +40 -3
  1180. package/src/shared-tree/index.ts +5 -1
  1181. package/src/shared-tree/schematizingTreeView.ts +2 -2
  1182. package/src/shared-tree/sharedTree.ts +2 -1
  1183. package/src/shared-tree/transactionMinimize.ts +13 -4
  1184. package/src/shared-tree/treeAlpha.ts +17 -31
  1185. package/src/{simple-tree/api → shared-tree}/treeBeta.ts +56 -167
  1186. package/src/shared-tree/treeCheckout.ts +82 -9
  1187. package/src/shared-tree-core/editManager.ts +16 -8
  1188. package/src/shared-tree-core/editManagerCodecsCommons.ts +30 -34
  1189. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +1 -1
  1190. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +2 -2
  1191. package/src/simple-tree/api/cloneTree.ts +47 -0
  1192. package/src/simple-tree/api/index.ts +15 -21
  1193. package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -2
  1194. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +87 -6
  1195. package/src/simple-tree/api/transactionTypes.ts +4 -4
  1196. package/src/simple-tree/api/tree.ts +139 -85
  1197. package/src/simple-tree/api/treeChangeEvents.ts +16 -4
  1198. package/src/simple-tree/api/treeChangeEventsBeta.ts +245 -0
  1199. package/src/simple-tree/api/treeNodeApi.ts +6 -85
  1200. package/src/simple-tree/api/typesUnsafe.ts +8 -6
  1201. package/src/simple-tree/core/index.ts +1 -1
  1202. package/src/simple-tree/core/treeNode.ts +3 -10
  1203. package/src/simple-tree/core/withType.ts +8 -11
  1204. package/src/simple-tree/index.ts +3 -7
  1205. package/src/simple-tree/node-kinds/array/arrayNode.ts +14 -12
  1206. package/src/simple-tree/node-kinds/map/mapNode.ts +14 -15
  1207. package/src/simple-tree/node-kinds/object/objectNode.ts +3 -6
  1208. package/src/simple-tree/node-kinds/record/recordNode.ts +6 -8
  1209. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +2 -1
  1210. package/src/tableSchema.ts +8 -187
  1211. package/src/text/codePointUtils.ts +25 -14
  1212. package/src/text/textDomain.ts +15 -2
  1213. package/src/text/textDomainFormatted.ts +9 -4
  1214. package/tsconfig.json +1 -1
  1215. package/alpha.d.ts +0 -11
  1216. package/beta.d.ts +0 -11
  1217. package/dist/simple-tree/api/treeAlpha.d.ts +0 -126
  1218. package/dist/simple-tree/api/treeAlpha.d.ts.map +0 -1
  1219. package/dist/simple-tree/api/treeAlpha.js.map +0 -1
  1220. package/dist/simple-tree/api/treeBeta.d.ts.map +0 -1
  1221. package/dist/simple-tree/api/treeBeta.js +0 -83
  1222. package/dist/simple-tree/api/treeBeta.js.map +0 -1
  1223. package/docs/main/glossary.md +0 -163
  1224. package/internal.d.ts +0 -11
  1225. package/legacy.d.ts +0 -11
  1226. package/lib/simple-tree/api/treeAlpha.d.ts +0 -126
  1227. package/lib/simple-tree/api/treeAlpha.d.ts.map +0 -1
  1228. package/lib/simple-tree/api/treeAlpha.js.map +0 -1
  1229. package/lib/simple-tree/api/treeBeta.d.ts.map +0 -1
  1230. package/lib/simple-tree/api/treeBeta.js +0 -77
  1231. package/lib/simple-tree/api/treeBeta.js.map +0 -1
  1232. package/src/simple-tree/api/treeAlpha.ts +0 -153
  1233. /package/api-extractor/{api-extractor.current.json → api-extractor-report.current.json} +0 -0
  1234. /package/api-extractor/{api-extractor.legacy.json → api-extractor-report.legacy.json} +0 -0
@@ -7,7 +7,7 @@ import type { Static } from "@sinclair/typebox";
7
7
  import { type ChangesetLocalId, schemaFormatV1 } from "../../core/index.js";
8
8
  import { type JsonCompatibleReadOnly } from "../../util/index.js";
9
9
  export declare const ChangesetLocalIdSchema: Type.TUnsafe<ChangesetLocalId>;
10
- export declare const EncodedChangeAtomId: Type.TUnion<[Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TUnsafe<ChangesetLocalId>]>;
10
+ export declare const EncodedChangeAtomId: Type.TUnion<[Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TUnsafe<ChangesetLocalId>]>;
11
11
  export type EncodedChangeAtomId = Static<typeof EncodedChangeAtomId>;
12
12
  export declare const EncodedFieldChange: Type.TObject<{
13
13
  fieldKey: Type.TUnsafe<schemaFormatV1.FieldKey>;
@@ -48,8 +48,8 @@ export declare const EncodedNodeChangeset: Type.TObject<{
48
48
  */
49
49
  export type EncodedNodeChangeset = Static<typeof EncodedNodeChangeset>;
50
50
  export declare const EncodedRevisionInfo: Type.TObject<{
51
- revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
52
- rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
51
+ revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
52
+ rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
53
53
  }>;
54
54
  export type EncodedRevisionInfo = Static<typeof EncodedRevisionInfo>;
55
55
  /**
@@ -58,10 +58,10 @@ export type EncodedRevisionInfo = Static<typeof EncodedRevisionInfo>;
58
58
  export declare const EncodedTreeIndex: Type.TNumber;
59
59
  export declare const CommitBuilds: Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>;
60
60
  export type CommitBuilds = Static<typeof CommitBuilds>;
61
- export declare const EncodedBuildsArray: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
61
+ export declare const EncodedBuildsArray: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
62
62
  export type EncodedBuildsArray = Static<typeof EncodedBuildsArray>;
63
63
  export declare const EncodedBuilds: Type.TObject<{
64
- builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
64
+ builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
65
65
  /**
66
66
  * FieldBatch codec encoded data indexed by the EncodedTreeIndexes above.
67
67
  */
@@ -76,18 +76,18 @@ export declare const EncodedModularChangesetV1: Type.TObject<{
76
76
  change: Type.TUnsafe<JsonCompatibleReadOnly>;
77
77
  }>>;
78
78
  revisions: Type.TReadonly<Type.TOptional<Type.TArray<Type.TObject<{
79
- revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
80
- rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
79
+ revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
80
+ rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
81
81
  }>>>>;
82
82
  builds: Type.TOptional<Type.TObject<{
83
- builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
83
+ builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
84
84
  /**
85
85
  * FieldBatch codec encoded data indexed by the EncodedTreeIndexes above.
86
86
  */
87
87
  trees: Type.TUnsafe<JsonCompatibleReadOnly>;
88
88
  }>>;
89
89
  refreshers: Type.TOptional<Type.TObject<{
90
- builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
90
+ builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<ChangesetLocalId>, Type.TNumber]>>]>]>>;
91
91
  /**
92
92
  * FieldBatch codec encoded data indexed by the EncodedTreeIndexes above.
93
93
  */
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFormatV1.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormatV1.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,KAAK,gBAAgB,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACN,KAAK,sBAAsB,EAG3B,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,sBAAsB,gCAEjC,CAAC;AAEH,eAAO,MAAM,mBAAmB,0QAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,kBAAkB;;;;EAU9B,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,OAAO,kBAAkB,CAAC;IAC5E;;OAEG;IACH,MAAM,EAAE,sBAAsB,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB;;;;GAAiC,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAUzE,eAAO,MAAM,oBAAoB;;;;;;;;;EAMhC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;EAM/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,gBAAgB,cAA6C,CAAC;AAE3E,eAAO,MAAM,YAAY,0EAOxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB,0XAM9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa;;IAGxB;;OAEG;;EAIJ,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;QAVpC;;WAEG;;;;;QAFH;;WAEG;;;IAiBH;;OAEG;;EAIJ,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"modularChangeFormatV1.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormatV1.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,KAAK,gBAAgB,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACN,KAAK,sBAAsB,EAG3B,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,sBAAsB,gCAEjC,CAAC;AAEH,eAAO,MAAM,mBAAmB,qTAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,kBAAkB;;;;EAU9B,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,OAAO,kBAAkB,CAAC;IAC5E;;OAEG;IACH,MAAM,EAAE,sBAAsB,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB;;;;GAAiC,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAUzE,eAAO,MAAM,oBAAoB;;;;;;;;;EAMhC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;EAM/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,gBAAgB,cAA6C,CAAC;AAE3E,eAAO,MAAM,YAAY,0EAOxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB,qaAM9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa;;IAGxB;;OAEG;;EAIJ,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;QAVpC;;WAEG;;;;;QAFH;;WAEG;;;IAiBH;;OAEG;;EAIJ,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -11,11 +11,11 @@ export type EncodedNoChangeConstraint = Static<typeof EncodedNoChangeConstraint>
11
11
  export declare const EncodedModularChangesetV2: Type.TObject<{
12
12
  maxId: Type.TOptional<Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>>;
13
13
  revisions: Type.TReadonly<Type.TOptional<Type.TArray<Type.TObject<{
14
- revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
15
- rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
14
+ revision: Type.TReadonly<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
15
+ rollbackOf: Type.TReadonly<Type.TOptional<Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>>>;
16
16
  }>>>>;
17
17
  builds: Type.TOptional<Type.TObject<{
18
- builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>]>]>>;
18
+ builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>]>]>>;
19
19
  trees: Type.TUnsafe<import("../../index.js").JsonCompatibleReadOnly>;
20
20
  }>>;
21
21
  changes: Type.TArray<Type.TObject<{
@@ -24,7 +24,7 @@ export declare const EncodedModularChangesetV2: Type.TObject<{
24
24
  change: Type.TUnsafe<import("../../index.js").JsonCompatibleReadOnly>;
25
25
  }>>;
26
26
  refreshers: Type.TOptional<Type.TObject<{
27
- builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>]>]>>;
27
+ builds: Type.TArray<Type.TUnion<[Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>, Type.TUnion<[Type.TLiteral<"root">, Type.TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor", { with: { "resolution-mode": "import" } }).OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, Type.TTuple<[Type.TArray<Type.TTuple<[Type.TUnsafe<import("../../core/index.js").ChangesetLocalId>, Type.TNumber]>>]>]>>;
28
28
  trees: Type.TUnsafe<import("../../index.js").JsonCompatibleReadOnly>;
29
29
  }>>;
30
30
  violations: Type.TOptional<Type.TNumber>;
@@ -4,13 +4,12 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.newCrossFieldKeyTable = void 0;
7
+ exports.newCrossFieldKeyTable = newCrossFieldKeyTable;
8
8
  const index_js_1 = require("../../core/index.js");
9
9
  const index_js_2 = require("../../util/index.js");
10
10
  function newCrossFieldKeyTable() {
11
11
  return new index_js_2.RangeMap(offsetCrossFieldKey, subtractCrossFieldKeys);
12
12
  }
13
- exports.newCrossFieldKeyTable = newCrossFieldKeyTable;
14
13
  function offsetCrossFieldKey(key, offset) {
15
14
  return {
16
15
  ...key,
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeTypes.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeTypes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kDAO6B;AAC7B,kDAAkE;AA4DlE,SAAgB,qBAAqB;IACpC,OAAO,IAAI,mBAAQ,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAFD,sDAEC;AAED,SAAS,mBAAmB,CAAC,GAAkB,EAAE,MAAc;IAC9D,OAAO;QACN,GAAG,GAAG;QACN,OAAO,EAAE,IAAA,gBAAK,EAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;KACpC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAgB,EAAE,CAAgB;IACjE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,CAAC;IAED,OAAO,IAAA,gCAAqB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\tsubtractChangeAtomIds,\n\ttype ChangeAtomId,\n\ttype ChangesetLocalId,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype RevisionInfo,\n} from \"../../core/index.js\";\nimport { brand, RangeMap, type Brand } from \"../../util/index.js\";\nimport type { ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { TreeChunk } from \"../chunked-forest/index.js\";\n\nimport type { CrossFieldTarget } from \"./crossFieldQueries.js\";\n\nexport interface ModularChangeset extends Readonly<HasFieldChanges> {\n\t/**\n\t * The numerically highest `ChangesetLocalId` used in this changeset.\n\t * If undefined then this changeset contains no IDs.\n\t */\n\treadonly maxId?: ChangesetLocalId;\n\t/**\n\t * The revisions included in this changeset, ordered temporally (oldest to newest).\n\t * Undefined for anonymous changesets.\n\t * Should never be empty.\n\t */\n\treadonly revisions?: readonly RevisionInfo[];\n\treadonly fieldChanges: FieldChangeMap;\n\n\t/**\n\t * Maps from this changeset's canonical ID for a node (see comment on node aliases) to the changes for that node.\n\t */\n\treadonly nodeChanges: ChangeAtomIdBTree<NodeChangeset>;\n\n\t/**\n\t * Maps from this changeset's canonical ID for a node to the ID for the field which contains that node.\n\t */\n\t// TODO: Should this be merged with `nodeChanges`?\n\treadonly nodeToParent: ChangeAtomIdBTree<FieldId>;\n\n\t/**\n\t * Maps from a node ID to another ID for the same node.\n\t * If a node ID used in this changeset has no entry in this table, then it is the canonical ID for that node.\n\t * The aliases form a set of trees, where the root of each tree is a canonical ID.\n\t *\n\t * When composing changesets with different canonical IDs for the same node,\n\t * one of those IDs becomes the canonical ID for the composition, while the other is added to this table as an alias.\n\t *\n\t * Node aliases are preserved when composing changesets so we can avoid having to find and update all changed node IDs\n\t * in the field IDs in nodeToParent and crossFieldKeys.\n\t */\n\treadonly nodeAliases: ChangeAtomIdBTree<NodeId>;\n\treadonly crossFieldKeys: CrossFieldKeyTable;\n\t/**\n\t * The number of constraint violations that apply to the input context of the changeset, i.e., before this change is applied.\n\t * If this count is greater than 0, it will prevent the changeset from being applied.\n\t */\n\treadonly constraintViolationCount?: number;\n\t/** Constraint that the document must be in the same state before this change is applied as it was before this change was authored */\n\treadonly noChangeConstraint?: NoChangeConstraint;\n\t/** Constraint that the document must be in the same state before the revert of this change is applied as it was after this change was applied */\n\treadonly noChangeConstraintOnRevert?: NoChangeConstraint;\n\treadonly builds?: ChangeAtomIdBTree<TreeChunk>;\n\treadonly destroys?: ChangeAtomIdBTree<number>;\n\treadonly refreshers?: ChangeAtomIdBTree<TreeChunk>;\n}\n\nexport type CrossFieldKeyTable = RangeMap<CrossFieldKey, FieldId>;\n\nexport function newCrossFieldKeyTable(): CrossFieldKeyTable {\n\treturn new RangeMap(offsetCrossFieldKey, subtractCrossFieldKeys);\n}\n\nfunction offsetCrossFieldKey(key: CrossFieldKey, offset: number): CrossFieldKey {\n\treturn {\n\t\t...key,\n\t\tlocalId: brand(key.localId + offset),\n\t};\n}\n\nfunction subtractCrossFieldKeys(a: CrossFieldKey, b: CrossFieldKey): number {\n\tconst cmpTarget = a.target - b.target;\n\tif (cmpTarget !== 0) {\n\t\treturn cmpTarget * Number.POSITIVE_INFINITY;\n\t}\n\n\treturn subtractChangeAtomIds(a, b);\n}\n\nexport interface CrossFieldKey extends ChangeAtomId {\n\treadonly target: CrossFieldTarget;\n}\n\nexport interface CrossFieldKeyRange {\n\treadonly key: CrossFieldKey;\n\treadonly count: number;\n}\n\nexport interface FieldId {\n\treadonly nodeId: NodeId | undefined;\n\treadonly field: FieldKey;\n}\n\nexport interface NodeExistsConstraint {\n\tviolated: boolean;\n}\n\n/**\n * A constraint that is violated whenever the state of the document is different from when the change was authored.\n */\nexport interface NoChangeConstraint {\n\tviolated: boolean;\n}\n\n/**\n * Changeset for a subtree rooted at a specific node.\n */\nexport interface NodeChangeset extends HasFieldChanges {\n\t/** Keeps track of whether node exists constraint has been violated by this change */\n\tnodeExistsConstraint?: NodeExistsConstraint;\n\t/** Keeps track of whether node exists constraint will be violated when this change is reverted */\n\tnodeExistsConstraintOnRevert?: NodeExistsConstraint;\n}\n\nexport type NodeId = ChangeAtomId;\n\nexport interface HasFieldChanges {\n\tfieldChanges?: FieldChangeMap;\n}\n\nexport type FieldChangeMap = Map<FieldKey, FieldChange>;\n\nexport interface FieldChange {\n\treadonly fieldKind: FieldKindIdentifier;\n\tchange: FieldChangeset;\n}\n\nexport type FieldChangeset = Brand<unknown, \"FieldChangeset\">;\n"]}
1
+ {"version":3,"file":"modularChangeTypes.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeTypes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsEH,sDAEC;AAtED,kDAO6B;AAC7B,kDAAkE;AA4DlE,SAAgB,qBAAqB;IACpC,OAAO,IAAI,mBAAQ,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAkB,EAAE,MAAc;IAC9D,OAAO;QACN,GAAG,GAAG;QACN,OAAO,EAAE,IAAA,gBAAK,EAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;KACpC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAgB,EAAE,CAAgB;IACjE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,CAAC;IAED,OAAO,IAAA,gCAAqB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\tsubtractChangeAtomIds,\n\ttype ChangeAtomId,\n\ttype ChangesetLocalId,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype RevisionInfo,\n} from \"../../core/index.js\";\nimport { brand, RangeMap, type Brand } from \"../../util/index.js\";\nimport type { ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { TreeChunk } from \"../chunked-forest/index.js\";\n\nimport type { CrossFieldTarget } from \"./crossFieldQueries.js\";\n\nexport interface ModularChangeset extends Readonly<HasFieldChanges> {\n\t/**\n\t * The numerically highest `ChangesetLocalId` used in this changeset.\n\t * If undefined then this changeset contains no IDs.\n\t */\n\treadonly maxId?: ChangesetLocalId;\n\t/**\n\t * The revisions included in this changeset, ordered temporally (oldest to newest).\n\t * Undefined for anonymous changesets.\n\t * Should never be empty.\n\t */\n\treadonly revisions?: readonly RevisionInfo[];\n\treadonly fieldChanges: FieldChangeMap;\n\n\t/**\n\t * Maps from this changeset's canonical ID for a node (see comment on node aliases) to the changes for that node.\n\t */\n\treadonly nodeChanges: ChangeAtomIdBTree<NodeChangeset>;\n\n\t/**\n\t * Maps from this changeset's canonical ID for a node to the ID for the field which contains that node.\n\t */\n\t// TODO: Should this be merged with `nodeChanges`?\n\treadonly nodeToParent: ChangeAtomIdBTree<FieldId>;\n\n\t/**\n\t * Maps from a node ID to another ID for the same node.\n\t * If a node ID used in this changeset has no entry in this table, then it is the canonical ID for that node.\n\t * The aliases form a set of trees, where the root of each tree is a canonical ID.\n\t *\n\t * When composing changesets with different canonical IDs for the same node,\n\t * one of those IDs becomes the canonical ID for the composition, while the other is added to this table as an alias.\n\t *\n\t * Node aliases are preserved when composing changesets so we can avoid having to find and update all changed node IDs\n\t * in the field IDs in nodeToParent and crossFieldKeys.\n\t */\n\treadonly nodeAliases: ChangeAtomIdBTree<NodeId>;\n\treadonly crossFieldKeys: CrossFieldKeyTable;\n\t/**\n\t * The number of constraint violations that apply to the input context of the changeset, i.e., before this change is applied.\n\t * If this count is greater than 0, it will prevent the changeset from being applied.\n\t */\n\treadonly constraintViolationCount?: number;\n\t/** Constraint that the document must be in the same state before this change is applied as it was before this change was authored */\n\treadonly noChangeConstraint?: NoChangeConstraint;\n\t/** Constraint that the document must be in the same state before the revert of this change is applied as it was after this change was applied */\n\treadonly noChangeConstraintOnRevert?: NoChangeConstraint;\n\treadonly builds?: ChangeAtomIdBTree<TreeChunk>;\n\treadonly destroys?: ChangeAtomIdBTree<number>;\n\treadonly refreshers?: ChangeAtomIdBTree<TreeChunk>;\n}\n\nexport type CrossFieldKeyTable = RangeMap<CrossFieldKey, FieldId>;\n\nexport function newCrossFieldKeyTable(): CrossFieldKeyTable {\n\treturn new RangeMap(offsetCrossFieldKey, subtractCrossFieldKeys);\n}\n\nfunction offsetCrossFieldKey(key: CrossFieldKey, offset: number): CrossFieldKey {\n\treturn {\n\t\t...key,\n\t\tlocalId: brand(key.localId + offset),\n\t};\n}\n\nfunction subtractCrossFieldKeys(a: CrossFieldKey, b: CrossFieldKey): number {\n\tconst cmpTarget = a.target - b.target;\n\tif (cmpTarget !== 0) {\n\t\treturn cmpTarget * Number.POSITIVE_INFINITY;\n\t}\n\n\treturn subtractChangeAtomIds(a, b);\n}\n\nexport interface CrossFieldKey extends ChangeAtomId {\n\treadonly target: CrossFieldTarget;\n}\n\nexport interface CrossFieldKeyRange {\n\treadonly key: CrossFieldKey;\n\treadonly count: number;\n}\n\nexport interface FieldId {\n\treadonly nodeId: NodeId | undefined;\n\treadonly field: FieldKey;\n}\n\nexport interface NodeExistsConstraint {\n\tviolated: boolean;\n}\n\n/**\n * A constraint that is violated whenever the state of the document is different from when the change was authored.\n */\nexport interface NoChangeConstraint {\n\tviolated: boolean;\n}\n\n/**\n * Changeset for a subtree rooted at a specific node.\n */\nexport interface NodeChangeset extends HasFieldChanges {\n\t/** Keeps track of whether node exists constraint has been violated by this change */\n\tnodeExistsConstraint?: NodeExistsConstraint;\n\t/** Keeps track of whether node exists constraint will be violated when this change is reverted */\n\tnodeExistsConstraintOnRevert?: NodeExistsConstraint;\n}\n\nexport type NodeId = ChangeAtomId;\n\nexport interface HasFieldChanges {\n\tfieldChanges?: FieldChangeMap;\n}\n\nexport type FieldChangeMap = Map<FieldKey, FieldChange>;\n\nexport interface FieldChange {\n\treadonly fieldKind: FieldKindIdentifier;\n\tchange: FieldChangeset;\n}\n\nexport type FieldChangeset = Brand<unknown, \"FieldChangeset\">;\n"]}
@@ -9,7 +9,7 @@ import { CrossFieldTarget, type CrossFieldManager, type CrossFieldMap } from "./
9
9
  import type { FieldChangeHandler } from "./fieldChangeHandler.js";
10
10
  import { NodeAttachState } from "./fieldChangeHandler.js";
11
11
  import type { FlexFieldKind } from "./fieldKind.js";
12
- import { type FieldChangeMap, type ModularChangeset, type NodeChangeset, type NodeId } from "./modularChangeTypes.js";
12
+ import { type CrossFieldKey, type CrossFieldKeyTable, type FieldChangeMap, type FieldId, type ModularChangeset, type NodeChangeset, type NodeId } from "./modularChangeTypes.js";
13
13
  export declare function hasConflicts(change: ModularChangeset): boolean;
14
14
  /**
15
15
  * Creates a normalized changeset from the provided properties.
@@ -53,4 +53,16 @@ export interface ConstraintState {
53
53
  export declare function newConstraintState(violationCount: number): ConstraintState;
54
54
  export declare function updateConstraintsForFields(fields: FieldChangeMap, parentInputAttachState: NodeAttachState, constraintState: ConstraintState, nodes: ChangeAtomIdBTree<NodeChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): void;
55
55
  export declare function nodeChangeFromId(nodes: ChangeAtomIdBTree<NodeChangeset>, id: NodeId): NodeChangeset;
56
+ /**
57
+ * @returns The canonical form of nodeId, according to nodeAliases
58
+ */
59
+ export declare function normalizeNodeId(nodeId: NodeId, nodeAliases: ChangeAtomIdBTree<NodeId>): NodeId;
60
+ export declare function makeChangesetInversions(fields: FieldChangeMap, nodes: ChangeAtomIdBTree<NodeChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): {
61
+ crossFieldKeys: CrossFieldKeyTable;
62
+ nodeToParent: ChangeAtomIdBTree<FieldId>;
63
+ };
64
+ export declare function validateChangeset(change: ModularChangeset, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): void;
65
+ export declare function getParentFieldId(changeset: ModularChangeset, nodeId: NodeId): FieldId;
66
+ export declare function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdBTree<NodeId>): FieldId;
67
+ export declare function getFieldsForCrossFieldKey(changeset: ModularChangeset, key: CrossFieldKey, count: number): FieldId[];
56
68
  //# sourceMappingURL=modularChangeUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeUtils.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modularChangeUtils.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,22 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.nodeChangeFromId = exports.updateConstraintsForFields = exports.newConstraintState = exports.getChangeHandler = exports.revisionInfoFromTaggedChange = exports.getRevInfoFromTaggedChanges = exports.newCrossFieldTable = exports.CrossFieldManagerI = exports.makeModularChangeset = exports.hasConflicts = void 0;
7
+ exports.CrossFieldManagerI = void 0;
8
+ exports.hasConflicts = hasConflicts;
9
+ exports.makeModularChangeset = makeModularChangeset;
10
+ exports.newCrossFieldTable = newCrossFieldTable;
11
+ exports.getRevInfoFromTaggedChanges = getRevInfoFromTaggedChanges;
12
+ exports.revisionInfoFromTaggedChange = revisionInfoFromTaggedChange;
13
+ exports.getChangeHandler = getChangeHandler;
14
+ exports.newConstraintState = newConstraintState;
15
+ exports.updateConstraintsForFields = updateConstraintsForFields;
16
+ exports.nodeChangeFromId = nodeChangeFromId;
17
+ exports.normalizeNodeId = normalizeNodeId;
18
+ exports.makeChangesetInversions = makeChangesetInversions;
19
+ exports.validateChangeset = validateChangeset;
20
+ exports.getParentFieldId = getParentFieldId;
21
+ exports.normalizeFieldId = normalizeFieldId;
22
+ exports.getFieldsForCrossFieldKey = getFieldsForCrossFieldKey;
8
23
  const internal_1 = require("@fluidframework/core-utils/internal");
9
24
  const index_js_1 = require("../../core/index.js");
10
25
  const index_js_2 = require("../../util/index.js");
@@ -16,7 +31,6 @@ const modularChangeTypes_js_1 = require("./modularChangeTypes.js");
16
31
  function hasConflicts(change) {
17
32
  return (change.constraintViolationCount ?? 0) > 0;
18
33
  }
19
- exports.hasConflicts = hasConflicts;
20
34
  /**
21
35
  * Creates a normalized changeset from the provided properties.
22
36
  *
@@ -59,8 +73,10 @@ function makeModularChangeset(props = {}) {
59
73
  }
60
74
  return changeset;
61
75
  }
62
- exports.makeModularChangeset = makeModularChangeset;
63
76
  class CrossFieldManagerI {
77
+ crossFieldTable;
78
+ currentFieldKey;
79
+ allowInval;
64
80
  constructor(crossFieldTable, currentFieldKey, allowInval = true) {
65
81
  this.crossFieldTable = crossFieldTable;
66
82
  this.currentFieldKey = currentFieldKey;
@@ -110,7 +126,6 @@ function newCrossFieldTable() {
110
126
  invalidatedFields: new Set(),
111
127
  };
112
128
  }
113
- exports.newCrossFieldTable = newCrossFieldTable;
114
129
  function getRevInfoFromTaggedChanges(changes) {
115
130
  let maxId = -1;
116
131
  const revInfos = [];
@@ -140,7 +155,6 @@ function getRevInfoFromTaggedChanges(changes) {
140
155
  }
141
156
  return { maxId: (0, index_js_2.brand)(maxId), revInfos };
142
157
  }
143
- exports.getRevInfoFromTaggedChanges = getRevInfoFromTaggedChanges;
144
158
  function revisionInfoFromTaggedChange(taggedChange) {
145
159
  const revInfos = [];
146
160
  if (taggedChange.change.revisions !== undefined) {
@@ -155,11 +169,9 @@ function revisionInfoFromTaggedChange(taggedChange) {
155
169
  }
156
170
  return revInfos;
157
171
  }
158
- exports.revisionInfoFromTaggedChange = revisionInfoFromTaggedChange;
159
172
  function getChangeHandler(fieldKinds, kind) {
160
173
  return getFieldKind(fieldKinds, kind).changeHandler;
161
174
  }
162
- exports.getChangeHandler = getChangeHandler;
163
175
  function getFieldKind(fieldKinds, kind) {
164
176
  if (kind === genericFieldKind_js_1.genericFieldKind.identifier) {
165
177
  return genericFieldKind_js_1.genericFieldKind;
@@ -173,12 +185,11 @@ function newConstraintState(violationCount) {
173
185
  violationCount,
174
186
  };
175
187
  }
176
- exports.newConstraintState = newConstraintState;
177
188
  function updateConstraintsForFields(fields, parentInputAttachState, constraintState, nodes, fieldKinds) {
178
189
  for (const field of fields.values()) {
179
190
  const handler = getChangeHandler(fieldKinds, field.fieldKind);
180
- for (const [nodeId, inputIndex, _outputIndex] of handler.getNestedChanges(field.change)) {
181
- const isInputDetached = inputIndex === undefined;
191
+ for (const { nodeId, inputRootId } of handler.getNestedChanges(field.change)) {
192
+ const isInputDetached = inputRootId !== undefined;
182
193
  const inputAttachState = parentInputAttachState === fieldChangeHandler_js_1.NodeAttachState.Detached || isInputDetached
183
194
  ? fieldChangeHandler_js_1.NodeAttachState.Detached
184
195
  : fieldChangeHandler_js_1.NodeAttachState.Attached;
@@ -186,7 +197,6 @@ function updateConstraintsForFields(fields, parentInputAttachState, constraintSt
186
197
  }
187
198
  }
188
199
  }
189
- exports.updateConstraintsForFields = updateConstraintsForFields;
190
200
  function updateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds) {
191
201
  const node = nodes.get([nodeId.revision, nodeId.localId]) ?? (0, internal_1.fail)(0xb24 /* Unknown node ID */);
192
202
  if (node.nodeExistsConstraint !== undefined) {
@@ -208,5 +218,98 @@ function nodeChangeFromId(nodes, id) {
208
218
  (0, internal_1.assert)(node !== undefined, 0x9ca /* Unknown node ID */);
209
219
  return node;
210
220
  }
211
- exports.nodeChangeFromId = nodeChangeFromId;
221
+ /**
222
+ * @returns The canonical form of nodeId, according to nodeAliases
223
+ */
224
+ function normalizeNodeId(nodeId, nodeAliases) {
225
+ let currentId = nodeId;
226
+ while (true) {
227
+ const dealiased = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(nodeAliases, currentId);
228
+ if (dealiased === undefined) {
229
+ return currentId;
230
+ }
231
+ currentId = dealiased;
232
+ }
233
+ }
234
+ function makeChangesetInversions(fields, nodes, fieldKinds) {
235
+ const crossFieldKeys = (0, modularChangeTypes_js_1.newCrossFieldKeyTable)();
236
+ const nodeToParent = (0, changeAtomIdBTree_js_1.newChangeAtomIdBTree)();
237
+ populateInversionsFromFieldMap(fields, undefined, fieldKinds, crossFieldKeys, nodeToParent);
238
+ nodes.forEachPair(([revision, localId], node) => {
239
+ if (node.fieldChanges !== undefined) {
240
+ populateInversionsFromFieldMap(node.fieldChanges, {
241
+ revision,
242
+ localId,
243
+ }, fieldKinds, crossFieldKeys, nodeToParent);
244
+ }
245
+ });
246
+ return { crossFieldKeys, nodeToParent };
247
+ }
248
+ function populateInversionsFromFieldMap(fields, parent, fieldKinds, crossFieldKeys, nodeToParent) {
249
+ for (const [fieldKey, fieldChange] of fields) {
250
+ const handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);
251
+ for (const { key, count } of handler.getCrossFieldKeys(fieldChange.change)) {
252
+ crossFieldKeys.set(key, count, { nodeId: parent, field: fieldKey });
253
+ }
254
+ for (const { nodeId } of handler.getNestedChanges(fieldChange.change)) {
255
+ nodeToParent.set([nodeId.revision, nodeId.localId], { nodeId: parent, field: fieldKey });
256
+ }
257
+ }
258
+ }
259
+ function validateChangeset(change, fieldKinds) {
260
+ let numNodes = validateFieldChanges(change, change.fieldChanges, undefined, fieldKinds);
261
+ for (const [[revision, localId], node] of change.nodeChanges.entries()) {
262
+ if (node.fieldChanges === undefined) {
263
+ continue;
264
+ }
265
+ const nodeId = { revision, localId };
266
+ const numChildren = validateFieldChanges(change, node.fieldChanges, nodeId, fieldKinds);
267
+ numNodes += numChildren;
268
+ }
269
+ (0, internal_1.assert)(numNodes === change.nodeChanges.size, 0xa4d /* Node table contains unparented nodes */);
270
+ }
271
+ /**
272
+ * Asserts that each child and cross field key in each field has a correct entry in
273
+ * `nodeToParent` or `crossFieldKeyTable`.
274
+ * @returns the number of children found.
275
+ */
276
+ function validateFieldChanges(change, fieldChanges, nodeParent, fieldKinds) {
277
+ let numChildren = 0;
278
+ for (const [field, fieldChange] of fieldChanges.entries()) {
279
+ const fieldId = { nodeId: nodeParent, field };
280
+ const handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);
281
+ for (const { nodeId } of handler.getNestedChanges(fieldChange.change)) {
282
+ const parentFieldId = getParentFieldId(change, nodeId);
283
+ (0, internal_1.assert)(areEqualFieldIds(parentFieldId, fieldId), 0xa4e /* Inconsistent node parentage */);
284
+ numChildren += 1;
285
+ }
286
+ for (const keyRange of handler.getCrossFieldKeys(fieldChange.change)) {
287
+ const fields = getFieldsForCrossFieldKey(change, keyRange.key, keyRange.count);
288
+ (0, internal_1.assert)(fields.length === 1 && fields[0] !== undefined && areEqualFieldIds(fields[0], fieldId), 0xa4f /* Inconsistent cross field keys */);
289
+ }
290
+ }
291
+ return numChildren;
292
+ }
293
+ function getParentFieldId(changeset, nodeId) {
294
+ const parentId = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(changeset.nodeToParent, nodeId);
295
+ (0, internal_1.assert)(parentId !== undefined, 0x9cb /* Parent field should be defined */);
296
+ return normalizeFieldId(parentId, changeset.nodeAliases);
297
+ }
298
+ function normalizeFieldId(fieldId, nodeAliases) {
299
+ return fieldId.nodeId === undefined
300
+ ? fieldId
301
+ : { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) };
302
+ }
303
+ function getFieldsForCrossFieldKey(changeset, key, count) {
304
+ const fieldIds = [];
305
+ for (const { value: fieldId } of changeset.crossFieldKeys.getAll(key, count)) {
306
+ if (fieldId !== undefined) {
307
+ fieldIds.push(normalizeFieldId(fieldId, changeset.nodeAliases));
308
+ }
309
+ }
310
+ return fieldIds;
311
+ }
312
+ function areEqualFieldIds(a, b) {
313
+ return (0, index_js_1.areEqualChangeAtomIdOpts)(a.nodeId, b.nodeId) && a.field === b.field;
314
+ }
212
315
  //# sourceMappingURL=modularChangeUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeUtils.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.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 } from \"@fluidframework/core-utils/internal\";\nimport {\n\tnewChangeAtomIdRangeMap,\n\ttype ChangesetLocalId,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype RevisionInfo,\n\ttype RevisionTag,\n\ttype TaggedChange,\n} from \"../../core/index.js\";\nimport { brand, type Mutable, type RangeQueryResult } from \"../../util/index.js\";\nimport {\n\tgetFromChangeAtomIdMap,\n\tnewChangeAtomIdBTree,\n\ttype ChangeAtomIdBTree,\n} from \"../changeAtomIdBTree.js\";\nimport {\n\tCrossFieldTarget,\n\tgetFirstFromCrossFieldMap,\n\tsetInCrossFieldMap,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n} from \"./crossFieldQueries.js\";\nimport type { FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport { NodeAttachState } from \"./fieldChangeHandler.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\tnewCrossFieldKeyTable,\n\ttype FieldChange,\n\ttype FieldChangeMap,\n\ttype ModularChangeset,\n\ttype NodeChangeset,\n\ttype NodeId,\n} from \"./modularChangeTypes.js\";\n\nexport function hasConflicts(change: ModularChangeset): boolean {\n\treturn (change.constraintViolationCount ?? 0) > 0;\n}\n\n/**\n * Creates a normalized changeset from the provided properties.\n *\n * Required changeset maps are initialized when omitted, and empty optional properties are not\n * included in the returned changeset. `maxId` accepts an unbranded allocator ID; `undefined`\n * indicates that the changeset contains no IDs.\n */\nexport function makeModularChangeset(\n\tprops: Partial<Omit<ModularChangeset, \"maxId\">> & { maxId?: number } = {},\n): ModularChangeset {\n\tconst p = props;\n\tconst changeset: Mutable<ModularChangeset> = {\n\t\tfieldChanges: p.fieldChanges ?? new Map<FieldKey, FieldChange>(),\n\t\tnodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),\n\t\tnodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),\n\t\tnodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),\n\t\tcrossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),\n\t};\n\n\tif (p.revisions !== undefined && p.revisions.length > 0) {\n\t\tchangeset.revisions = p.revisions;\n\t}\n\tif (p.maxId !== undefined && p.maxId >= 0) {\n\t\tchangeset.maxId = brand(p.maxId);\n\t}\n\tif (p.constraintViolationCount !== undefined && p.constraintViolationCount > 0) {\n\t\tchangeset.constraintViolationCount = p.constraintViolationCount;\n\t}\n\tif (p.noChangeConstraint !== undefined) {\n\t\tchangeset.noChangeConstraint = p.noChangeConstraint;\n\t}\n\tif (p.noChangeConstraintOnRevert !== undefined) {\n\t\tchangeset.noChangeConstraintOnRevert = p.noChangeConstraintOnRevert;\n\t}\n\tif (p.builds !== undefined && p.builds.size > 0) {\n\t\tchangeset.builds = p.builds;\n\t}\n\tif (p.destroys !== undefined && p.destroys.size > 0) {\n\t\tchangeset.destroys = p.destroys;\n\t}\n\tif (p.refreshers !== undefined && p.refreshers.size > 0) {\n\t\tchangeset.refreshers = p.refreshers;\n\t}\n\treturn changeset;\n}\n\n// TODO: TFieldData could instead just be a numeric ID generated by the CrossFieldTable\n// The CrossFieldTable could have a generic field ID to context table\nexport interface CrossFieldTable<TFieldData> {\n\tsrcTable: CrossFieldMap<unknown>;\n\tdstTable: CrossFieldMap<unknown>;\n\tsrcDependents: CrossFieldMap<TFieldData>;\n\tdstDependents: CrossFieldMap<TFieldData>;\n\tinvalidatedFields: Set<TFieldData>;\n}\n\nexport abstract class CrossFieldManagerI<T> implements CrossFieldManager {\n\tpublic constructor(\n\t\tprotected readonly crossFieldTable: CrossFieldTable<T>,\n\t\tprivate readonly currentFieldKey: T,\n\t\tprotected readonly allowInval = true,\n\t) {}\n\n\tpublic set(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\tnewValue: unknown,\n\t\tinvalidateDependents: boolean,\n\t): void {\n\t\tif (invalidateDependents && this.allowInval) {\n\t\t\tconst lastChangedId = (id as number) + count - 1;\n\t\t\tlet firstId = id;\n\t\t\twhile (firstId <= lastChangedId) {\n\t\t\t\tconst dependentEntry = getFirstFromCrossFieldMap(\n\t\t\t\t\tthis.getDependents(target),\n\t\t\t\t\trevision,\n\t\t\t\t\tfirstId,\n\t\t\t\t\tlastChangedId - firstId + 1,\n\t\t\t\t);\n\t\t\t\tif (dependentEntry.value !== undefined) {\n\t\t\t\t\tthis.crossFieldTable.invalidatedFields.add(dependentEntry.value);\n\t\t\t\t}\n\n\t\t\t\tfirstId = brand(firstId + dependentEntry.length);\n\t\t\t}\n\t\t}\n\t\tsetInCrossFieldMap(this.getMap(target), revision, id, count, newValue);\n\t}\n\n\tpublic get(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\taddDependency: boolean,\n\t): RangeQueryResult<unknown> {\n\t\tif (addDependency) {\n\t\t\t// We assume that if there is already an entry for this ID it is because\n\t\t\t// a field handler has called compose on the same node multiple times.\n\t\t\t// In this case we only want to update the latest version, so we overwrite the dependency.\n\t\t\tsetInCrossFieldMap(\n\t\t\t\tthis.getDependents(target),\n\t\t\t\trevision,\n\t\t\t\tid,\n\t\t\t\tcount,\n\t\t\t\tthis.currentFieldKey,\n\t\t\t);\n\t\t}\n\t\treturn getFirstFromCrossFieldMap(this.getMap(target), revision, id, count);\n\t}\n\n\tpublic abstract onMoveIn(id: NodeId): void;\n\n\tpublic abstract moveKey(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t): void;\n\n\tprivate getMap(target: CrossFieldTarget): CrossFieldMap<unknown> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcTable\n\t\t\t: this.crossFieldTable.dstTable;\n\t}\n\n\tprivate getDependents(target: CrossFieldTarget): CrossFieldMap<T> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcDependents\n\t\t\t: this.crossFieldTable.dstDependents;\n\t}\n}\n\nexport function newCrossFieldTable<T>(): CrossFieldTable<T> {\n\treturn {\n\t\tsrcTable: newChangeAtomIdRangeMap(),\n\t\tdstTable: newChangeAtomIdRangeMap(),\n\t\tsrcDependents: newChangeAtomIdRangeMap(),\n\t\tdstDependents: newChangeAtomIdRangeMap(),\n\t\tinvalidatedFields: new Set(),\n\t};\n}\n\nexport function getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {\n\trevInfos: RevisionInfo[];\n\tmaxId: ChangesetLocalId;\n} {\n\tlet maxId = -1;\n\tconst revInfos: RevisionInfo[] = [];\n\tconst revisions = new Set<RevisionTag>();\n\tfor (const taggedChange of changes) {\n\t\tconst change = taggedChange.change;\n\t\tmaxId = Math.max(change.maxId ?? -1, maxId);\n\t\tconst infosToAdd = revisionInfoFromTaggedChange(taggedChange);\n\t\tfor (const info of infosToAdd) {\n\t\t\tif (!revisions.has(info.revision)) {\n\t\t\t\trevisions.add(info.revision);\n\t\t\t\trevInfos.push(info);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst rolledBackRevisions: RevisionTag[] = [];\n\tfor (const info of revInfos) {\n\t\tif (info.rollbackOf !== undefined) {\n\t\t\trolledBackRevisions.push(info.rollbackOf);\n\t\t}\n\t}\n\n\trolledBackRevisions.reverse();\n\tfor (const revision of rolledBackRevisions) {\n\t\tif (!revisions.has(revision)) {\n\t\t\trevInfos.push({ revision });\n\t\t}\n\t}\n\n\treturn { maxId: brand(maxId), revInfos };\n}\n\nexport function revisionInfoFromTaggedChange(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n): RevisionInfo[] {\n\tconst revInfos: RevisionInfo[] = [];\n\tif (taggedChange.change.revisions !== undefined) {\n\t\trevInfos.push(...taggedChange.change.revisions);\n\t} else if (taggedChange.revision !== undefined) {\n\t\tconst info: Mutable<RevisionInfo> = { revision: taggedChange.revision };\n\t\tif (taggedChange.rollbackOf !== undefined) {\n\t\t\tinfo.rollbackOf = taggedChange.rollbackOf;\n\t\t}\n\t\trevInfos.push(info);\n\t}\n\treturn revInfos;\n}\n\nexport function getChangeHandler(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\treturn getFieldKind(fieldKinds, kind).changeHandler;\n}\n\nfunction getFieldKind(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FlexFieldKind {\n\tif (kind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind;\n\t}\n\tconst fieldKind = fieldKinds.get(kind);\n\tassert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n\treturn fieldKind;\n}\n\nexport interface ConstraintState {\n\tviolationCount: number;\n}\n\nexport function newConstraintState(violationCount: number): ConstraintState {\n\treturn {\n\t\tviolationCount,\n\t};\n}\n\nexport function updateConstraintsForFields(\n\tfields: FieldChangeMap,\n\tparentInputAttachState: NodeAttachState,\n\tconstraintState: ConstraintState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tfor (const field of fields.values()) {\n\t\tconst handler = getChangeHandler(fieldKinds, field.fieldKind);\n\t\tfor (const [nodeId, inputIndex, _outputIndex] of handler.getNestedChanges(field.change)) {\n\t\t\tconst isInputDetached = inputIndex === undefined;\n\t\t\tconst inputAttachState =\n\t\t\t\tparentInputAttachState === NodeAttachState.Detached || isInputDetached\n\t\t\t\t\t? NodeAttachState.Detached\n\t\t\t\t\t: NodeAttachState.Attached;\n\n\t\t\tupdateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds);\n\t\t}\n\t}\n}\n\nfunction updateConstraintsForNode(\n\tnodeId: NodeId,\n\tinputAttachState: NodeAttachState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tconstraintState: ConstraintState,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tconst node =\n\t\tnodes.get([nodeId.revision, nodeId.localId]) ?? fail(0xb24 /* Unknown node ID */);\n\tif (node.nodeExistsConstraint !== undefined) {\n\t\tconst isNowViolated = inputAttachState === NodeAttachState.Detached;\n\t\tif (node.nodeExistsConstraint.violated !== isNowViolated) {\n\t\t\tnode.nodeExistsConstraint = {\n\t\t\t\t...node.nodeExistsConstraint,\n\t\t\t\tviolated: isNowViolated,\n\t\t\t};\n\t\t\tconstraintState.violationCount += isNowViolated ? 1 : -1;\n\t\t}\n\t}\n\n\tif (node.fieldChanges !== undefined) {\n\t\tupdateConstraintsForFields(\n\t\t\tnode.fieldChanges,\n\t\t\tinputAttachState,\n\t\t\tconstraintState,\n\t\t\tnodes,\n\t\t\tfieldKinds,\n\t\t);\n\t}\n}\n\nexport function nodeChangeFromId(\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tid: NodeId,\n): NodeChangeset {\n\tconst node = getFromChangeAtomIdMap(nodes, id);\n\tassert(node !== undefined, 0x9ca /* Unknown node ID */);\n\treturn node;\n}\n"]}
1
+ {"version":3,"file":"modularChangeUtils.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA0CH,oCAEC;AASD,oDAqCC;AA2FD,gDAQC;AAED,kEAkCC;AAED,oEAcC;AAED,4CAKC;AAkBD,gDAIC;AAED,gEAmBC;AAiCD,4CAOC;AAKD,0CAcC;AAED,0DAyBC;AAqBD,8CAqBC;AAsCD,4CAIC;AAED,4CAOC;AAED,8DAaC;AAneD,kEAAmE;AACnE,kDAS6B;AAC7B,kDAAiF;AACjF,kEAIiC;AACjC,iEAMgC;AAEhC,mEAA0D;AAE1D,+DAAyD;AACzD,mEAUiC;AAEjC,SAAgB,YAAY,CAAC,MAAwB;IACpD,OAAO,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CACnC,QAAuE,EAAE;IAEzE,MAAM,CAAC,GAAG,KAAK,CAAC;IAChB,MAAM,SAAS,GAA8B;QAC5C,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,GAAG,EAAyB;QAChE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAA,2CAAoB,GAAE;QACpD,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAA,2CAAoB,GAAE;QACtD,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAA,2CAAoB,GAAE;QACpD,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAA,6CAAqB,GAAE;KAC3D,CAAC;IAEF,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,SAAS,CAAC,KAAK,GAAG,IAAA,gBAAK,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,CAAC,wBAAwB,KAAK,SAAS,IAAI,CAAC,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC;QAChF,SAAS,CAAC,wBAAwB,GAAG,CAAC,CAAC,wBAAwB,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACxC,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAChD,SAAS,CAAC,0BAA0B,GAAG,CAAC,CAAC,0BAA0B,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACjD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrD,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAYD,MAAsB,kBAAkB;IAEnB;IACF;IACE;IAHpB,YACoB,eAAmC,EACrC,eAAkB,EAChB,aAAa,IAAI;QAFjB,oBAAe,GAAf,eAAe,CAAoB;QACrC,oBAAe,GAAf,eAAe,CAAG;QAChB,eAAU,GAAV,UAAU,CAAO;IAClC,CAAC;IAEG,GAAG,CACT,MAAwB,EACxB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,QAAiB,EACjB,oBAA6B;QAE7B,IAAI,oBAAoB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAI,EAAa,GAAG,KAAK,GAAG,CAAC,CAAC;YACjD,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,OAAO,OAAO,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,cAAc,GAAG,IAAA,gDAAyB,EAC/C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,OAAO,GAAG,CAAC,CAC3B,CAAC;gBACF,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAClE,CAAC;gBAED,OAAO,GAAG,IAAA,gBAAK,EAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QACD,IAAA,yCAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAEM,GAAG,CACT,MAAwB,EACxB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,aAAsB;QAEtB,IAAI,aAAa,EAAE,CAAC;YACnB,wEAAwE;YACxE,sEAAsE;YACtE,0FAA0F;YAC1F,IAAA,yCAAkB,EACjB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAC1B,QAAQ,EACR,EAAE,EACF,KAAK,EACL,IAAI,CAAC,eAAe,CACpB,CAAC;QACH,CAAC;QACD,OAAO,IAAA,gDAAyB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAWO,MAAM,CAAC,MAAwB;QACtC,OAAO,MAAM,KAAK,uCAAgB,CAAC,MAAM;YACxC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,MAAwB;QAC7C,OAAO,MAAM,KAAK,uCAAgB,CAAC,MAAM;YACxC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa;YACpC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;IACvC,CAAC;CACD;AA7ED,gDA6EC;AAED,SAAgB,kBAAkB;IACjC,OAAO;QACN,QAAQ,EAAE,IAAA,kCAAuB,GAAE;QACnC,QAAQ,EAAE,IAAA,kCAAuB,GAAE;QACnC,aAAa,EAAE,IAAA,kCAAuB,GAAE;QACxC,aAAa,EAAE,IAAA,kCAAuB,GAAE;QACxC,iBAAiB,EAAE,IAAI,GAAG,EAAE;KAC5B,CAAC;AACH,CAAC;AAED,SAAgB,2BAA2B,CAAC,OAAyC;IAIpF,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAC;IACzC,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,4BAA4B,CAAC,YAAY,CAAC,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,mBAAmB,GAAkB,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAA,gBAAK,EAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,SAAgB,4BAA4B,CAC3C,YAA4C;IAE5C,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChD,MAAM,IAAI,GAA0B,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAgB,gBAAgB,CAC/B,UAA2D,EAC3D,IAAyB;IAEzB,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CACpB,UAA2D,EAC3D,IAAyB;IAEzB,IAAI,IAAI,KAAK,sCAAgB,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,sCAAgB,CAAC;IACzB,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAA,iBAAM,EAAC,SAAS,KAAK,SAAS,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AAClB,CAAC;AAMD,SAAgB,kBAAkB,CAAC,cAAsB;IACxD,OAAO;QACN,cAAc;KACd,CAAC;AACH,CAAC;AAED,SAAgB,0BAA0B,CACzC,MAAsB,EACtB,sBAAuC,EACvC,eAAgC,EAChC,KAAuC,EACvC,UAA2D;IAE3D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9D,KAAK,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9E,MAAM,eAAe,GAAG,WAAW,KAAK,SAAS,CAAC;YAClD,MAAM,gBAAgB,GACrB,sBAAsB,KAAK,uCAAe,CAAC,QAAQ,IAAI,eAAe;gBACrE,CAAC,CAAC,uCAAe,CAAC,QAAQ;gBAC1B,CAAC,CAAC,uCAAe,CAAC,QAAQ,CAAC;YAE7B,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAChC,MAAc,EACd,gBAAiC,EACjC,KAAuC,EACvC,eAAgC,EAChC,UAA2D;IAE3D,MAAM,IAAI,GACT,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAA,eAAI,EAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,gBAAgB,KAAK,uCAAe,CAAC,QAAQ,CAAC;QACpE,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,oBAAoB,GAAG;gBAC3B,GAAG,IAAI,CAAC,oBAAoB;gBAC5B,QAAQ,EAAE,aAAa;aACvB,CAAC;YACF,eAAe,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,0BAA0B,CACzB,IAAI,CAAC,YAAY,EACjB,gBAAgB,EAChB,eAAe,EACf,KAAK,EACL,UAAU,CACV,CAAC;IACH,CAAC;AACF,CAAC;AAED,SAAgB,gBAAgB,CAC/B,KAAuC,EACvC,EAAU;IAEV,MAAM,IAAI,GAAG,IAAA,6CAAsB,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAA,iBAAM,EAAC,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC9B,MAAc,EACd,WAAsC;IAEtC,IAAI,SAAS,GAAG,MAAM,CAAC;IAEvB,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAA,6CAAsB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,SAAS,GAAG,SAAS,CAAC;IACvB,CAAC;AACF,CAAC;AAED,SAAgB,uBAAuB,CACtC,MAAsB,EACtB,KAAuC,EACvC,UAA2D;IAE3D,MAAM,cAAc,GAAuB,IAAA,6CAAqB,GAAE,CAAC;IACnE,MAAM,YAAY,GAA+B,IAAA,2CAAoB,GAAE,CAAC;IACxE,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IAE5F,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,8BAA8B,CAC7B,IAAI,CAAC,YAAY,EACjB;gBACC,QAAQ;gBACR,OAAO;aACP,EACD,UAAU,EACV,cAAc,EACd,YAAY,CACZ,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,8BAA8B,CACtC,MAAsB,EACtB,MAA0B,EAC1B,UAA2D,EAC3D,cAAkC,EAClC,YAAwC;IAExC,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACpE,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAChC,MAAwB,EACxB,UAA2D;IAE3D,IAAI,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAExF,KAAK,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACxE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,SAAS;QACV,CAAC;QAED,MAAM,MAAM,GAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAExF,QAAQ,IAAI,WAAW,CAAC;IACzB,CAAC;IAED,IAAA,iBAAM,EACL,QAAQ,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,EACpC,KAAK,CAAC,0CAA0C,CAChD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC5B,MAAwB,EACxB,YAA4B,EAC5B,UAA8B,EAC9B,UAA2D;IAE3D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACpE,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvD,IAAA,iBAAM,EACL,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EACxC,KAAK,CAAC,iCAAiC,CACvC,CAAC;YACF,WAAW,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/E,IAAA,iBAAM,EACL,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EACtF,KAAK,CAAC,mCAAmC,CACzC,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAA2B,EAAE,MAAc;IAC3E,MAAM,QAAQ,GAAG,IAAA,6CAAsB,EAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxE,IAAA,iBAAM,EAAC,QAAQ,KAAK,SAAS,EAAE,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC3E,OAAO,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,gBAAgB,CAC/B,OAAgB,EAChB,WAAsC;IAEtC,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS;QAClC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,SAAgB,yBAAyB,CACxC,SAA2B,EAC3B,GAAkB,EAClB,KAAa;IAEb,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU,EAAE,CAAU;IAC/C,OAAO,IAAA,mCAAwB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, fail } from \"@fluidframework/core-utils/internal\";\nimport {\n\tareEqualChangeAtomIdOpts,\n\tnewChangeAtomIdRangeMap,\n\ttype ChangesetLocalId,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype RevisionInfo,\n\ttype RevisionTag,\n\ttype TaggedChange,\n} from \"../../core/index.js\";\nimport { brand, type Mutable, type RangeQueryResult } from \"../../util/index.js\";\nimport {\n\tgetFromChangeAtomIdMap,\n\tnewChangeAtomIdBTree,\n\ttype ChangeAtomIdBTree,\n} from \"../changeAtomIdBTree.js\";\nimport {\n\tCrossFieldTarget,\n\tgetFirstFromCrossFieldMap,\n\tsetInCrossFieldMap,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n} from \"./crossFieldQueries.js\";\nimport type { FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport { NodeAttachState } from \"./fieldChangeHandler.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\tnewCrossFieldKeyTable,\n\ttype CrossFieldKey,\n\ttype CrossFieldKeyTable,\n\ttype FieldChange,\n\ttype FieldChangeMap,\n\ttype FieldId,\n\ttype ModularChangeset,\n\ttype NodeChangeset,\n\ttype NodeId,\n} from \"./modularChangeTypes.js\";\n\nexport function hasConflicts(change: ModularChangeset): boolean {\n\treturn (change.constraintViolationCount ?? 0) > 0;\n}\n\n/**\n * Creates a normalized changeset from the provided properties.\n *\n * Required changeset maps are initialized when omitted, and empty optional properties are not\n * included in the returned changeset. `maxId` accepts an unbranded allocator ID; `undefined`\n * indicates that the changeset contains no IDs.\n */\nexport function makeModularChangeset(\n\tprops: Partial<Omit<ModularChangeset, \"maxId\">> & { maxId?: number } = {},\n): ModularChangeset {\n\tconst p = props;\n\tconst changeset: Mutable<ModularChangeset> = {\n\t\tfieldChanges: p.fieldChanges ?? new Map<FieldKey, FieldChange>(),\n\t\tnodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),\n\t\tnodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),\n\t\tnodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),\n\t\tcrossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),\n\t};\n\n\tif (p.revisions !== undefined && p.revisions.length > 0) {\n\t\tchangeset.revisions = p.revisions;\n\t}\n\tif (p.maxId !== undefined && p.maxId >= 0) {\n\t\tchangeset.maxId = brand(p.maxId);\n\t}\n\tif (p.constraintViolationCount !== undefined && p.constraintViolationCount > 0) {\n\t\tchangeset.constraintViolationCount = p.constraintViolationCount;\n\t}\n\tif (p.noChangeConstraint !== undefined) {\n\t\tchangeset.noChangeConstraint = p.noChangeConstraint;\n\t}\n\tif (p.noChangeConstraintOnRevert !== undefined) {\n\t\tchangeset.noChangeConstraintOnRevert = p.noChangeConstraintOnRevert;\n\t}\n\tif (p.builds !== undefined && p.builds.size > 0) {\n\t\tchangeset.builds = p.builds;\n\t}\n\tif (p.destroys !== undefined && p.destroys.size > 0) {\n\t\tchangeset.destroys = p.destroys;\n\t}\n\tif (p.refreshers !== undefined && p.refreshers.size > 0) {\n\t\tchangeset.refreshers = p.refreshers;\n\t}\n\treturn changeset;\n}\n\n// TODO: TFieldData could instead just be a numeric ID generated by the CrossFieldTable\n// The CrossFieldTable could have a generic field ID to context table\nexport interface CrossFieldTable<TFieldData> {\n\tsrcTable: CrossFieldMap<unknown>;\n\tdstTable: CrossFieldMap<unknown>;\n\tsrcDependents: CrossFieldMap<TFieldData>;\n\tdstDependents: CrossFieldMap<TFieldData>;\n\tinvalidatedFields: Set<TFieldData>;\n}\n\nexport abstract class CrossFieldManagerI<T> implements CrossFieldManager {\n\tpublic constructor(\n\t\tprotected readonly crossFieldTable: CrossFieldTable<T>,\n\t\tprivate readonly currentFieldKey: T,\n\t\tprotected readonly allowInval = true,\n\t) {}\n\n\tpublic set(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\tnewValue: unknown,\n\t\tinvalidateDependents: boolean,\n\t): void {\n\t\tif (invalidateDependents && this.allowInval) {\n\t\t\tconst lastChangedId = (id as number) + count - 1;\n\t\t\tlet firstId = id;\n\t\t\twhile (firstId <= lastChangedId) {\n\t\t\t\tconst dependentEntry = getFirstFromCrossFieldMap(\n\t\t\t\t\tthis.getDependents(target),\n\t\t\t\t\trevision,\n\t\t\t\t\tfirstId,\n\t\t\t\t\tlastChangedId - firstId + 1,\n\t\t\t\t);\n\t\t\t\tif (dependentEntry.value !== undefined) {\n\t\t\t\t\tthis.crossFieldTable.invalidatedFields.add(dependentEntry.value);\n\t\t\t\t}\n\n\t\t\t\tfirstId = brand(firstId + dependentEntry.length);\n\t\t\t}\n\t\t}\n\t\tsetInCrossFieldMap(this.getMap(target), revision, id, count, newValue);\n\t}\n\n\tpublic get(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\taddDependency: boolean,\n\t): RangeQueryResult<unknown> {\n\t\tif (addDependency) {\n\t\t\t// We assume that if there is already an entry for this ID it is because\n\t\t\t// a field handler has called compose on the same node multiple times.\n\t\t\t// In this case we only want to update the latest version, so we overwrite the dependency.\n\t\t\tsetInCrossFieldMap(\n\t\t\t\tthis.getDependents(target),\n\t\t\t\trevision,\n\t\t\t\tid,\n\t\t\t\tcount,\n\t\t\t\tthis.currentFieldKey,\n\t\t\t);\n\t\t}\n\t\treturn getFirstFromCrossFieldMap(this.getMap(target), revision, id, count);\n\t}\n\n\tpublic abstract onMoveIn(id: NodeId): void;\n\n\tpublic abstract moveKey(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t): void;\n\n\tprivate getMap(target: CrossFieldTarget): CrossFieldMap<unknown> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcTable\n\t\t\t: this.crossFieldTable.dstTable;\n\t}\n\n\tprivate getDependents(target: CrossFieldTarget): CrossFieldMap<T> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcDependents\n\t\t\t: this.crossFieldTable.dstDependents;\n\t}\n}\n\nexport function newCrossFieldTable<T>(): CrossFieldTable<T> {\n\treturn {\n\t\tsrcTable: newChangeAtomIdRangeMap(),\n\t\tdstTable: newChangeAtomIdRangeMap(),\n\t\tsrcDependents: newChangeAtomIdRangeMap(),\n\t\tdstDependents: newChangeAtomIdRangeMap(),\n\t\tinvalidatedFields: new Set(),\n\t};\n}\n\nexport function getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {\n\trevInfos: RevisionInfo[];\n\tmaxId: ChangesetLocalId;\n} {\n\tlet maxId = -1;\n\tconst revInfos: RevisionInfo[] = [];\n\tconst revisions = new Set<RevisionTag>();\n\tfor (const taggedChange of changes) {\n\t\tconst change = taggedChange.change;\n\t\tmaxId = Math.max(change.maxId ?? -1, maxId);\n\t\tconst infosToAdd = revisionInfoFromTaggedChange(taggedChange);\n\t\tfor (const info of infosToAdd) {\n\t\t\tif (!revisions.has(info.revision)) {\n\t\t\t\trevisions.add(info.revision);\n\t\t\t\trevInfos.push(info);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst rolledBackRevisions: RevisionTag[] = [];\n\tfor (const info of revInfos) {\n\t\tif (info.rollbackOf !== undefined) {\n\t\t\trolledBackRevisions.push(info.rollbackOf);\n\t\t}\n\t}\n\n\trolledBackRevisions.reverse();\n\tfor (const revision of rolledBackRevisions) {\n\t\tif (!revisions.has(revision)) {\n\t\t\trevInfos.push({ revision });\n\t\t}\n\t}\n\n\treturn { maxId: brand(maxId), revInfos };\n}\n\nexport function revisionInfoFromTaggedChange(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n): RevisionInfo[] {\n\tconst revInfos: RevisionInfo[] = [];\n\tif (taggedChange.change.revisions !== undefined) {\n\t\trevInfos.push(...taggedChange.change.revisions);\n\t} else if (taggedChange.revision !== undefined) {\n\t\tconst info: Mutable<RevisionInfo> = { revision: taggedChange.revision };\n\t\tif (taggedChange.rollbackOf !== undefined) {\n\t\t\tinfo.rollbackOf = taggedChange.rollbackOf;\n\t\t}\n\t\trevInfos.push(info);\n\t}\n\treturn revInfos;\n}\n\nexport function getChangeHandler(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\treturn getFieldKind(fieldKinds, kind).changeHandler;\n}\n\nfunction getFieldKind(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FlexFieldKind {\n\tif (kind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind;\n\t}\n\tconst fieldKind = fieldKinds.get(kind);\n\tassert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n\treturn fieldKind;\n}\n\nexport interface ConstraintState {\n\tviolationCount: number;\n}\n\nexport function newConstraintState(violationCount: number): ConstraintState {\n\treturn {\n\t\tviolationCount,\n\t};\n}\n\nexport function updateConstraintsForFields(\n\tfields: FieldChangeMap,\n\tparentInputAttachState: NodeAttachState,\n\tconstraintState: ConstraintState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tfor (const field of fields.values()) {\n\t\tconst handler = getChangeHandler(fieldKinds, field.fieldKind);\n\t\tfor (const { nodeId, inputRootId } of handler.getNestedChanges(field.change)) {\n\t\t\tconst isInputDetached = inputRootId !== undefined;\n\t\t\tconst inputAttachState =\n\t\t\t\tparentInputAttachState === NodeAttachState.Detached || isInputDetached\n\t\t\t\t\t? NodeAttachState.Detached\n\t\t\t\t\t: NodeAttachState.Attached;\n\n\t\t\tupdateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds);\n\t\t}\n\t}\n}\n\nfunction updateConstraintsForNode(\n\tnodeId: NodeId,\n\tinputAttachState: NodeAttachState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tconstraintState: ConstraintState,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tconst node =\n\t\tnodes.get([nodeId.revision, nodeId.localId]) ?? fail(0xb24 /* Unknown node ID */);\n\tif (node.nodeExistsConstraint !== undefined) {\n\t\tconst isNowViolated = inputAttachState === NodeAttachState.Detached;\n\t\tif (node.nodeExistsConstraint.violated !== isNowViolated) {\n\t\t\tnode.nodeExistsConstraint = {\n\t\t\t\t...node.nodeExistsConstraint,\n\t\t\t\tviolated: isNowViolated,\n\t\t\t};\n\t\t\tconstraintState.violationCount += isNowViolated ? 1 : -1;\n\t\t}\n\t}\n\n\tif (node.fieldChanges !== undefined) {\n\t\tupdateConstraintsForFields(\n\t\t\tnode.fieldChanges,\n\t\t\tinputAttachState,\n\t\t\tconstraintState,\n\t\t\tnodes,\n\t\t\tfieldKinds,\n\t\t);\n\t}\n}\n\nexport function nodeChangeFromId(\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tid: NodeId,\n): NodeChangeset {\n\tconst node = getFromChangeAtomIdMap(nodes, id);\n\tassert(node !== undefined, 0x9ca /* Unknown node ID */);\n\treturn node;\n}\n\n/**\n * @returns The canonical form of nodeId, according to nodeAliases\n */\nexport function normalizeNodeId(\n\tnodeId: NodeId,\n\tnodeAliases: ChangeAtomIdBTree<NodeId>,\n): NodeId {\n\tlet currentId = nodeId;\n\n\twhile (true) {\n\t\tconst dealiased = getFromChangeAtomIdMap(nodeAliases, currentId);\n\t\tif (dealiased === undefined) {\n\t\t\treturn currentId;\n\t\t}\n\n\t\tcurrentId = dealiased;\n\t}\n}\n\nexport function makeChangesetInversions(\n\tfields: FieldChangeMap,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): { crossFieldKeys: CrossFieldKeyTable; nodeToParent: ChangeAtomIdBTree<FieldId> } {\n\tconst crossFieldKeys: CrossFieldKeyTable = newCrossFieldKeyTable();\n\tconst nodeToParent: ChangeAtomIdBTree<FieldId> = newChangeAtomIdBTree();\n\tpopulateInversionsFromFieldMap(fields, undefined, fieldKinds, crossFieldKeys, nodeToParent);\n\n\tnodes.forEachPair(([revision, localId], node) => {\n\t\tif (node.fieldChanges !== undefined) {\n\t\t\tpopulateInversionsFromFieldMap(\n\t\t\t\tnode.fieldChanges,\n\t\t\t\t{\n\t\t\t\t\trevision,\n\t\t\t\t\tlocalId,\n\t\t\t\t},\n\t\t\t\tfieldKinds,\n\t\t\t\tcrossFieldKeys,\n\t\t\t\tnodeToParent,\n\t\t\t);\n\t\t}\n\t});\n\n\treturn { crossFieldKeys, nodeToParent };\n}\n\nfunction populateInversionsFromFieldMap(\n\tfields: FieldChangeMap,\n\tparent: NodeId | undefined,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tcrossFieldKeys: CrossFieldKeyTable,\n\tnodeToParent: ChangeAtomIdBTree<FieldId>,\n): void {\n\tfor (const [fieldKey, fieldChange] of fields) {\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\t\tfor (const { key, count } of handler.getCrossFieldKeys(fieldChange.change)) {\n\t\t\tcrossFieldKeys.set(key, count, { nodeId: parent, field: fieldKey });\n\t\t}\n\n\t\tfor (const { nodeId } of handler.getNestedChanges(fieldChange.change)) {\n\t\t\tnodeToParent.set([nodeId.revision, nodeId.localId], { nodeId: parent, field: fieldKey });\n\t\t}\n\t}\n}\n\nexport function validateChangeset(\n\tchange: ModularChangeset,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tlet numNodes = validateFieldChanges(change, change.fieldChanges, undefined, fieldKinds);\n\n\tfor (const [[revision, localId], node] of change.nodeChanges.entries()) {\n\t\tif (node.fieldChanges === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst nodeId: NodeId = { revision, localId };\n\t\tconst numChildren = validateFieldChanges(change, node.fieldChanges, nodeId, fieldKinds);\n\n\t\tnumNodes += numChildren;\n\t}\n\n\tassert(\n\t\tnumNodes === change.nodeChanges.size,\n\t\t0xa4d /* Node table contains unparented nodes */,\n\t);\n}\n\n/**\n * Asserts that each child and cross field key in each field has a correct entry in\n * `nodeToParent` or `crossFieldKeyTable`.\n * @returns the number of children found.\n */\nfunction validateFieldChanges(\n\tchange: ModularChangeset,\n\tfieldChanges: FieldChangeMap,\n\tnodeParent: NodeId | undefined,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): number {\n\tlet numChildren = 0;\n\tfor (const [field, fieldChange] of fieldChanges.entries()) {\n\t\tconst fieldId = { nodeId: nodeParent, field };\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\t\tfor (const { nodeId } of handler.getNestedChanges(fieldChange.change)) {\n\t\t\tconst parentFieldId = getParentFieldId(change, nodeId);\n\t\t\tassert(\n\t\t\t\tareEqualFieldIds(parentFieldId, fieldId),\n\t\t\t\t0xa4e /* Inconsistent node parentage */,\n\t\t\t);\n\t\t\tnumChildren += 1;\n\t\t}\n\n\t\tfor (const keyRange of handler.getCrossFieldKeys(fieldChange.change)) {\n\t\t\tconst fields = getFieldsForCrossFieldKey(change, keyRange.key, keyRange.count);\n\t\t\tassert(\n\t\t\t\tfields.length === 1 && fields[0] !== undefined && areEqualFieldIds(fields[0], fieldId),\n\t\t\t\t0xa4f /* Inconsistent cross field keys */,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn numChildren;\n}\n\nexport function getParentFieldId(changeset: ModularChangeset, nodeId: NodeId): FieldId {\n\tconst parentId = getFromChangeAtomIdMap(changeset.nodeToParent, nodeId);\n\tassert(parentId !== undefined, 0x9cb /* Parent field should be defined */);\n\treturn normalizeFieldId(parentId, changeset.nodeAliases);\n}\n\nexport function normalizeFieldId(\n\tfieldId: FieldId,\n\tnodeAliases: ChangeAtomIdBTree<NodeId>,\n): FieldId {\n\treturn fieldId.nodeId === undefined\n\t\t? fieldId\n\t\t: { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) };\n}\n\nexport function getFieldsForCrossFieldKey(\n\tchangeset: ModularChangeset,\n\tkey: CrossFieldKey,\n\tcount: number,\n): FieldId[] {\n\tconst fieldIds: FieldId[] = [];\n\tfor (const { value: fieldId } of changeset.crossFieldKeys.getAll(key, count)) {\n\t\tif (fieldId !== undefined) {\n\t\t\tfieldIds.push(normalizeFieldId(fieldId, changeset.nodeAliases));\n\t\t}\n\t}\n\n\treturn fieldIds;\n}\n\nfunction areEqualFieldIds(a: FieldId, b: FieldId): boolean {\n\treturn areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;\n}\n"]}
@@ -3,8 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import type { FieldKindIdentifier } from "../../core/index.js";
6
- import { type ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
7
6
  import type { FlexFieldKind } from "./fieldKind.js";
8
- import type { FieldChangeMap, NodeChangeset } from "./modularChangeTypes.js";
9
- export declare function pruneFieldMap(changeset: FieldChangeMap | undefined, nodeMap: ChangeAtomIdBTree<NodeChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): FieldChangeMap | undefined;
7
+ import type { ModularChangeset } from "./modularChangeTypes.js";
8
+ export declare function pruneChangeset(changeset: ModularChangeset, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): ModularChangeset;
10
9
  //# sourceMappingURL=prune.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAU,MAAM,yBAAyB,CAAC;AAGrF,wBAAgB,aAAa,CAC5B,SAAS,EAAE,cAAc,GAAG,SAAS,EACrC,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,EACzC,UAAU,EAAE,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,GACzD,cAAc,GAAG,SAAS,CAmB5B"}
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAoB,mBAAmB,EAAe,MAAM,qBAAqB,CAAC;AAG9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAGX,gBAAgB,EAGhB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,cAAc,CAC7B,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,GACzD,gBAAgB,CAkBlB"}
@@ -4,40 +4,57 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.pruneFieldMap = void 0;
7
+ exports.pruneChangeset = pruneChangeset;
8
8
  const index_js_1 = require("../../util/index.js");
9
9
  const changeAtomIdBTree_js_1 = require("../changeAtomIdBTree.js");
10
10
  const modularChangeUtils_js_1 = require("./modularChangeUtils.js");
11
- function pruneFieldMap(changeset, nodeMap, fieldKinds) {
11
+ function pruneChangeset(changeset, fieldKinds) {
12
+ const prunedChangeset = {
13
+ ...changeset,
14
+ nodeChanges: changeset.nodeChanges.clone(),
15
+ nodeToParent: changeset.nodeToParent.clone(),
16
+ nodeAliases: changeset.nodeAliases.clone(),
17
+ };
18
+ prunedChangeset.fieldChanges =
19
+ pruneFieldMap(prunedChangeset.fieldChanges, prunedChangeset.nodeChanges, prunedChangeset.nodeToParent, prunedChangeset.nodeAliases, fieldKinds) ?? new Map();
20
+ return prunedChangeset;
21
+ }
22
+ function pruneFieldMap(changeset, nodes, nodeToParent, nodeAliases, fieldKinds) {
12
23
  if (changeset === undefined) {
13
24
  return undefined;
14
25
  }
15
26
  const prunedChangeset = new Map();
16
27
  for (const [field, fieldChange] of changeset) {
17
28
  const handler = (0, modularChangeUtils_js_1.getChangeHandler)(fieldKinds, fieldChange.fieldKind);
18
- const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => pruneNodeChange(nodeId, nodeMap, fieldKinds));
29
+ const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => pruneNodeChange(nodeId, nodes, nodeToParent, nodeAliases, fieldKinds));
19
30
  if (!handler.isEmpty(prunedFieldChangeset)) {
20
31
  prunedChangeset.set(field, { ...fieldChange, change: (0, index_js_1.brand)(prunedFieldChangeset) });
21
32
  }
22
33
  }
23
34
  return prunedChangeset.size > 0 ? prunedChangeset : undefined;
24
35
  }
25
- exports.pruneFieldMap = pruneFieldMap;
26
- function pruneNodeChange(nodeId, nodeMap, fieldKinds) {
36
+ function pruneNodeChange(nodeId, nodeMap, nodeToParent, nodeAliases, fieldKinds) {
27
37
  const changeset = (0, modularChangeUtils_js_1.nodeChangeFromId)(nodeMap, nodeId);
28
38
  const prunedFields = changeset.fieldChanges === undefined
29
39
  ? undefined
30
- : pruneFieldMap(changeset.fieldChanges, nodeMap, fieldKinds);
40
+ : pruneFieldMap(changeset.fieldChanges, nodeMap, nodeToParent, nodeAliases, fieldKinds);
31
41
  const prunedChange = { ...changeset, fieldChanges: prunedFields };
32
42
  if (prunedChange.fieldChanges === undefined) {
33
43
  delete prunedChange.fieldChanges;
34
44
  }
45
+ const normalizedNodeId = (0, modularChangeUtils_js_1.normalizeNodeId)(nodeId, nodeAliases);
35
46
  if (isEmptyNodeChangeset(prunedChange)) {
36
- nodeMap.delete([nodeId.revision, nodeId.localId]);
47
+ const nodeIdKey = [
48
+ normalizedNodeId.revision,
49
+ normalizedNodeId.localId,
50
+ ];
51
+ nodeMap.delete(nodeIdKey);
52
+ nodeToParent.delete(nodeIdKey);
53
+ // TODO: Also remove aliases for this node.
37
54
  return undefined;
38
55
  }
39
56
  else {
40
- (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeMap, nodeId, prunedChange);
57
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeMap, normalizedNodeId, prunedChange);
41
58
  return nodeId;
42
59
  }
43
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kDAA4C;AAC5C,kEAAuF;AAGvF,mEAA6E;AAE7E,SAAgB,aAAa,CAC5B,SAAqC,EACrC,OAAyC,EACzC,UAA2D;IAE3D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,eAAe,GAAmB,IAAI,GAAG,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,wCAAgB,EAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAEpE,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjF,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAC5C,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC5C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,IAAA,gBAAK,EAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAvBD,sCAuBC;AAED,SAAS,eAAe,CACvB,MAAc,EACd,OAAyC,EACzC,UAA2D;IAE3D,MAAM,SAAS,GAAG,IAAA,wCAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,YAAY,GACjB,SAAS,CAAC,YAAY,KAAK,SAAS;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IAClE,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,IAAI,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC;IAClB,CAAC;SAAM,CAAC;QACP,IAAA,2CAAoB,EAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IACf,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB;IAClD,OAAO,CACN,MAAM,CAAC,YAAY,KAAK,SAAS;QACjC,MAAM,CAAC,oBAAoB,KAAK,SAAS;QACzC,MAAM,CAAC,4BAA4B,KAAK,SAAS,CACjD,CAAC;AACH,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { FieldKindIdentifier } from \"../../core/index.js\";\nimport { brand } from \"../../util/index.js\";\nimport { setInChangeAtomIdMap, type ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport type { FieldChangeMap, NodeChangeset, NodeId } from \"./modularChangeTypes.js\";\nimport { getChangeHandler, nodeChangeFromId } from \"./modularChangeUtils.js\";\n\nexport function pruneFieldMap(\n\tchangeset: FieldChangeMap | undefined,\n\tnodeMap: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): FieldChangeMap | undefined {\n\tif (changeset === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst prunedChangeset: FieldChangeMap = new Map();\n\tfor (const [field, fieldChange] of changeset) {\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\n\t\tconst prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) =>\n\t\t\tpruneNodeChange(nodeId, nodeMap, fieldKinds),\n\t\t);\n\n\t\tif (!handler.isEmpty(prunedFieldChangeset)) {\n\t\t\tprunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n\t\t}\n\t}\n\n\treturn prunedChangeset.size > 0 ? prunedChangeset : undefined;\n}\n\nfunction pruneNodeChange(\n\tnodeId: NodeId,\n\tnodeMap: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): NodeId | undefined {\n\tconst changeset = nodeChangeFromId(nodeMap, nodeId);\n\tconst prunedFields =\n\t\tchangeset.fieldChanges === undefined\n\t\t\t? undefined\n\t\t\t: pruneFieldMap(changeset.fieldChanges, nodeMap, fieldKinds);\n\n\tconst prunedChange = { ...changeset, fieldChanges: prunedFields };\n\tif (prunedChange.fieldChanges === undefined) {\n\t\tdelete prunedChange.fieldChanges;\n\t}\n\n\tif (isEmptyNodeChangeset(prunedChange)) {\n\t\tnodeMap.delete([nodeId.revision, nodeId.localId]);\n\t\treturn undefined;\n\t} else {\n\t\tsetInChangeAtomIdMap(nodeMap, nodeId, prunedChange);\n\t\treturn nodeId;\n\t}\n}\n\nfunction isEmptyNodeChangeset(change: NodeChangeset): boolean {\n\treturn (\n\t\tchange.fieldChanges === undefined &&\n\t\tchange.nodeExistsConstraint === undefined &&\n\t\tchange.nodeExistsConstraintOnRevert === undefined\n\t);\n}\n"]}
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.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 type { ChangesetLocalId, FieldKindIdentifier, RevisionTag } from \"../../core/index.js\";\nimport { brand, type Mutable } from \"../../util/index.js\";\nimport { setInChangeAtomIdMap, type ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport type {\n\tFieldChangeMap,\n\tFieldId,\n\tModularChangeset,\n\tNodeChangeset,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nimport { getChangeHandler, nodeChangeFromId, normalizeNodeId } from \"./modularChangeUtils.js\";\n\nexport function pruneChangeset(\n\tchangeset: ModularChangeset,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): ModularChangeset {\n\tconst prunedChangeset: Mutable<ModularChangeset> = {\n\t\t...changeset,\n\t\tnodeChanges: changeset.nodeChanges.clone(),\n\t\tnodeToParent: changeset.nodeToParent.clone(),\n\t\tnodeAliases: changeset.nodeAliases.clone(),\n\t};\n\n\tprunedChangeset.fieldChanges =\n\t\tpruneFieldMap(\n\t\t\tprunedChangeset.fieldChanges,\n\t\t\tprunedChangeset.nodeChanges,\n\t\t\tprunedChangeset.nodeToParent,\n\t\t\tprunedChangeset.nodeAliases,\n\t\t\tfieldKinds,\n\t\t) ?? new Map();\n\n\treturn prunedChangeset;\n}\n\nfunction pruneFieldMap(\n\tchangeset: FieldChangeMap | undefined,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tnodeToParent: ChangeAtomIdBTree<FieldId>,\n\tnodeAliases: ChangeAtomIdBTree<NodeId>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): FieldChangeMap | undefined {\n\tif (changeset === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst prunedChangeset: FieldChangeMap = new Map();\n\tfor (const [field, fieldChange] of changeset) {\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\n\t\tconst prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) =>\n\t\t\tpruneNodeChange(nodeId, nodes, nodeToParent, nodeAliases, fieldKinds),\n\t\t);\n\n\t\tif (!handler.isEmpty(prunedFieldChangeset)) {\n\t\t\tprunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n\t\t}\n\t}\n\n\treturn prunedChangeset.size > 0 ? prunedChangeset : undefined;\n}\n\nfunction pruneNodeChange(\n\tnodeId: NodeId,\n\tnodeMap: ChangeAtomIdBTree<NodeChangeset>,\n\tnodeToParent: ChangeAtomIdBTree<FieldId>,\n\tnodeAliases: ChangeAtomIdBTree<NodeId>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): NodeId | undefined {\n\tconst changeset = nodeChangeFromId(nodeMap, nodeId);\n\tconst prunedFields =\n\t\tchangeset.fieldChanges === undefined\n\t\t\t? undefined\n\t\t\t: pruneFieldMap(changeset.fieldChanges, nodeMap, nodeToParent, nodeAliases, fieldKinds);\n\n\tconst prunedChange = { ...changeset, fieldChanges: prunedFields };\n\tif (prunedChange.fieldChanges === undefined) {\n\t\tdelete prunedChange.fieldChanges;\n\t}\n\n\tconst normalizedNodeId = normalizeNodeId(nodeId, nodeAliases);\n\tif (isEmptyNodeChangeset(prunedChange)) {\n\t\tconst nodeIdKey: [RevisionTag | undefined, ChangesetLocalId] = [\n\t\t\tnormalizedNodeId.revision,\n\t\t\tnormalizedNodeId.localId,\n\t\t];\n\n\t\tnodeMap.delete(nodeIdKey);\n\t\tnodeToParent.delete(nodeIdKey);\n\n\t\t// TODO: Also remove aliases for this node.\n\t\treturn undefined;\n\t} else {\n\t\tsetInChangeAtomIdMap(nodeMap, normalizedNodeId, prunedChange);\n\t\treturn nodeId;\n\t}\n}\n\nfunction isEmptyNodeChangeset(change: NodeChangeset): boolean {\n\treturn (\n\t\tchange.fieldChanges === undefined &&\n\t\tchange.nodeExistsConstraint === undefined &&\n\t\tchange.nodeExistsConstraintOnRevert === undefined\n\t);\n}\n"]}