@fluidframework/tree 2.1.0-281041 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1510) hide show
  1. package/.mocharc.customBenchmarks.cjs +33 -0
  2. package/.vscode/Tree.code-workspace +2 -1
  3. package/CHANGELOG.md +335 -0
  4. package/README.md +40 -10
  5. package/api-extractor.json +17 -0
  6. package/api-report/tree.alpha.api.md +120 -26
  7. package/api-report/tree.beta.api.md +52 -26
  8. package/api-report/tree.public.api.md +52 -26
  9. package/dist/beta.d.ts +3 -1
  10. package/dist/codec/discriminatedUnions.d.ts +11 -5
  11. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  12. package/dist/codec/discriminatedUnions.js.map +1 -1
  13. package/dist/codec/index.d.ts +1 -1
  14. package/dist/codec/index.d.ts.map +1 -1
  15. package/dist/codec/index.js.map +1 -1
  16. package/dist/core/forest/editableForest.d.ts +1 -5
  17. package/dist/core/forest/editableForest.d.ts.map +1 -1
  18. package/dist/core/forest/editableForest.js +4 -2
  19. package/dist/core/forest/editableForest.js.map +1 -1
  20. package/dist/core/forest/forest.d.ts +0 -6
  21. package/dist/core/forest/forest.d.ts.map +1 -1
  22. package/dist/core/forest/forest.js +0 -2
  23. package/dist/core/forest/forest.js.map +1 -1
  24. package/dist/core/index.d.ts +2 -2
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +3 -4
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/rebase/changeRebaser.d.ts +0 -4
  29. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  30. package/dist/core/rebase/changeRebaser.js.map +1 -1
  31. package/dist/core/rebase/index.d.ts +1 -1
  32. package/dist/core/rebase/index.d.ts.map +1 -1
  33. package/dist/core/rebase/index.js +1 -3
  34. package/dist/core/rebase/index.js.map +1 -1
  35. package/dist/core/rebase/types.d.ts +1 -8
  36. package/dist/core/rebase/types.d.ts.map +1 -1
  37. package/dist/core/rebase/types.js +1 -9
  38. package/dist/core/rebase/types.js.map +1 -1
  39. package/dist/core/rebase/utils.d.ts +0 -1
  40. package/dist/core/rebase/utils.d.ts.map +1 -1
  41. package/dist/core/rebase/utils.js +12 -7
  42. package/dist/core/rebase/utils.js.map +1 -1
  43. package/dist/core/schema-stored/multiplicity.d.ts +0 -1
  44. package/dist/core/schema-stored/multiplicity.d.ts.map +1 -1
  45. package/dist/core/schema-stored/multiplicity.js +0 -1
  46. package/dist/core/schema-stored/multiplicity.js.map +1 -1
  47. package/dist/core/schema-stored/schema.d.ts +0 -7
  48. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  49. package/dist/core/schema-stored/schema.js +0 -4
  50. package/dist/core/schema-stored/schema.js.map +1 -1
  51. package/dist/core/schema-stored/storedSchemaRepository.d.ts +0 -3
  52. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  53. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  54. package/dist/core/schema-view/view.d.ts +0 -3
  55. package/dist/core/schema-view/view.d.ts.map +1 -1
  56. package/dist/core/schema-view/view.js +0 -1
  57. package/dist/core/schema-view/view.js.map +1 -1
  58. package/dist/core/tree/anchorSet.d.ts +1 -10
  59. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  60. package/dist/core/tree/anchorSet.js +14 -4
  61. package/dist/core/tree/anchorSet.js.map +1 -1
  62. package/dist/core/tree/cursor.d.ts +1 -6
  63. package/dist/core/tree/cursor.d.ts.map +1 -1
  64. package/dist/core/tree/cursor.js +0 -2
  65. package/dist/core/tree/cursor.js.map +1 -1
  66. package/dist/core/tree/delta.d.ts +0 -11
  67. package/dist/core/tree/delta.d.ts.map +1 -1
  68. package/dist/core/tree/delta.js.map +1 -1
  69. package/dist/core/tree/detachedFieldIndex.d.ts +48 -11
  70. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  71. package/dist/core/tree/detachedFieldIndex.js +144 -20
  72. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  73. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  74. package/dist/core/tree/detachedFieldIndexCodec.js +16 -6
  75. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  76. package/dist/core/tree/detachedFieldIndexFormat.d.ts +1 -1
  77. package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  78. package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
  79. package/dist/core/tree/detachedFieldIndexTypes.d.ts +38 -4
  80. package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  81. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  82. package/dist/core/tree/index.d.ts +3 -2
  83. package/dist/core/tree/index.d.ts.map +1 -1
  84. package/dist/core/tree/index.js +3 -1
  85. package/dist/core/tree/index.js.map +1 -1
  86. package/dist/core/tree/mapTree.d.ts +20 -4
  87. package/dist/core/tree/mapTree.d.ts.map +1 -1
  88. package/dist/core/tree/mapTree.js +29 -0
  89. package/dist/core/tree/mapTree.js.map +1 -1
  90. package/dist/core/tree/pathTree.d.ts +0 -11
  91. package/dist/core/tree/pathTree.d.ts.map +1 -1
  92. package/dist/core/tree/pathTree.js.map +1 -1
  93. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  94. package/dist/core/tree/treeTextFormat.js +3 -2
  95. package/dist/core/tree/treeTextFormat.js.map +1 -1
  96. package/dist/core/tree/types.d.ts +0 -11
  97. package/dist/core/tree/types.d.ts.map +1 -1
  98. package/dist/core/tree/types.js +0 -4
  99. package/dist/core/tree/types.js.map +1 -1
  100. package/dist/core/tree/visitDelta.d.ts +3 -2
  101. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  102. package/dist/core/tree/visitDelta.js +33 -17
  103. package/dist/core/tree/visitDelta.js.map +1 -1
  104. package/dist/core/tree/visitPath.d.ts +0 -2
  105. package/dist/core/tree/visitPath.d.ts.map +1 -1
  106. package/dist/core/tree/visitPath.js.map +1 -1
  107. package/dist/core/tree/visitorUtils.d.ts +3 -4
  108. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  109. package/dist/core/tree/visitorUtils.js +4 -4
  110. package/dist/core/tree/visitorUtils.js.map +1 -1
  111. package/dist/domains/index.d.ts +1 -1
  112. package/dist/domains/index.d.ts.map +1 -1
  113. package/dist/domains/index.js +2 -1
  114. package/dist/domains/index.js.map +1 -1
  115. package/dist/domains/json/index.d.ts +1 -1
  116. package/dist/domains/json/index.d.ts.map +1 -1
  117. package/dist/domains/json/index.js +2 -1
  118. package/dist/domains/json/index.js.map +1 -1
  119. package/dist/domains/json/jsonCursor.d.ts +36 -2
  120. package/dist/domains/json/jsonCursor.d.ts.map +1 -1
  121. package/dist/domains/json/jsonCursor.js +76 -5
  122. package/dist/domains/json/jsonCursor.js.map +1 -1
  123. package/dist/domains/json/jsonDomainSchema.d.ts +13 -3
  124. package/dist/domains/json/jsonDomainSchema.d.ts.map +1 -1
  125. package/dist/domains/json/jsonDomainSchema.js +12 -4
  126. package/dist/domains/json/jsonDomainSchema.js.map +1 -1
  127. package/dist/domains/leafDomain.d.ts +0 -1
  128. package/dist/domains/leafDomain.d.ts.map +1 -1
  129. package/dist/domains/leafDomain.js +0 -1
  130. package/dist/domains/leafDomain.js.map +1 -1
  131. package/dist/domains/schemaBuilder.d.ts +1 -7
  132. package/dist/domains/schemaBuilder.d.ts.map +1 -1
  133. package/dist/domains/schemaBuilder.js +0 -10
  134. package/dist/domains/schemaBuilder.js.map +1 -1
  135. package/dist/events/events.d.ts +0 -4
  136. package/dist/events/events.d.ts.map +1 -1
  137. package/dist/events/events.js +0 -1
  138. package/dist/events/events.js.map +1 -1
  139. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  140. package/dist/feature-libraries/chunked-forest/basicChunk.js +8 -3
  141. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  142. package/dist/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  143. package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  144. package/dist/feature-libraries/chunked-forest/chunk.js.map +1 -1
  145. package/dist/feature-libraries/chunked-forest/chunkTree.js +3 -3
  146. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  147. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  148. package/dist/feature-libraries/chunked-forest/chunkedForest.js +7 -5
  149. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  150. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +1 -1
  151. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  152. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  153. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +8 -5
  154. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  155. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  156. package/dist/feature-libraries/chunked-forest/uniformChunk.js +5 -3
  157. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  158. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +12 -24
  159. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  160. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +9 -19
  161. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  162. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -6
  163. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  164. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
  165. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  166. package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -1
  167. package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  168. package/dist/feature-libraries/default-schema/defaultSchema.js +0 -1
  169. package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  170. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  171. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  172. package/dist/feature-libraries/default-schema/index.js +2 -1
  173. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  174. package/dist/feature-libraries/default-schema/schemaChecker.d.ts +6 -0
  175. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  176. package/dist/feature-libraries/default-schema/schemaChecker.js +6 -0
  177. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  178. package/dist/feature-libraries/editableTreeBinder.d.ts +0 -67
  179. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  180. package/dist/feature-libraries/editableTreeBinder.js +6 -25
  181. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  182. package/dist/feature-libraries/fieldGenerator.d.ts +0 -3
  183. package/dist/feature-libraries/fieldGenerator.d.ts.map +1 -1
  184. package/dist/feature-libraries/fieldGenerator.js +0 -1
  185. package/dist/feature-libraries/fieldGenerator.js.map +1 -1
  186. package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
  187. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
  188. package/dist/feature-libraries/flex-map-tree/index.js +2 -2
  189. package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
  190. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +57 -56
  191. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  192. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +168 -217
  193. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  194. package/dist/feature-libraries/flex-tree/context.d.ts +0 -1
  195. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  196. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  197. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +18 -295
  198. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  199. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -6
  200. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  201. package/dist/feature-libraries/flex-tree/index.d.ts +3 -2
  202. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  203. package/dist/feature-libraries/flex-tree/index.js +5 -1
  204. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  205. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
  206. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  207. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  208. package/dist/feature-libraries/flex-tree/lazyField.d.ts +9 -27
  209. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  210. package/dist/feature-libraries/flex-tree/lazyField.js +36 -117
  211. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  212. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +2 -13
  213. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  214. package/dist/feature-libraries/flex-tree/lazyNode.js +3 -69
  215. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  216. package/dist/feature-libraries/flex-tree/treeEvents.d.ts +0 -2
  217. package/dist/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  218. package/dist/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  219. package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -1
  220. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  221. package/dist/feature-libraries/flex-tree/utilities.js +4 -0
  222. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  223. package/dist/feature-libraries/forest-summary/codec.js +2 -2
  224. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  225. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  226. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  227. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  228. package/dist/feature-libraries/index.d.ts +6 -8
  229. package/dist/feature-libraries/index.d.ts.map +1 -1
  230. package/dist/feature-libraries/index.js +10 -18
  231. package/dist/feature-libraries/index.js.map +1 -1
  232. package/dist/feature-libraries/mapTreeCursor.d.ts +6 -2
  233. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  234. package/dist/feature-libraries/mapTreeCursor.js +9 -1
  235. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  236. package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -4
  237. package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts.map +1 -1
  238. package/dist/feature-libraries/memoizedIdRangeAllocator.js +0 -1
  239. package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  240. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
  241. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  242. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +0 -1
  243. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  244. package/dist/feature-libraries/modular-schema/discrepancies.d.ts +18 -0
  245. package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
  246. package/dist/feature-libraries/modular-schema/discrepancies.js +108 -5
  247. package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
  248. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -8
  249. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  250. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +0 -1
  251. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  252. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +1 -3
  253. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  254. package/dist/feature-libraries/modular-schema/fieldKind.js +1 -2
  255. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  256. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +1 -2
  257. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  258. package/dist/feature-libraries/modular-schema/genericFieldKind.js +57 -85
  259. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  260. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +1 -1
  261. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  262. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +5 -8
  263. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  264. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +3 -14
  265. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  266. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js +6 -0
  267. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  268. package/dist/feature-libraries/modular-schema/index.d.ts +2 -2
  269. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  270. package/dist/feature-libraries/modular-schema/index.js +2 -1
  271. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  272. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  273. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +40 -23
  274. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  275. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -8
  276. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  277. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +205 -244
  278. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  279. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +8 -14
  280. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  281. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  282. package/dist/feature-libraries/node-key/nodeKey.d.ts +0 -4
  283. package/dist/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  284. package/dist/feature-libraries/node-key/nodeKey.js +0 -2
  285. package/dist/feature-libraries/node-key/nodeKey.js.map +1 -1
  286. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts +0 -1
  287. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  288. package/dist/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  289. package/dist/feature-libraries/object-forest/objectForest.d.ts +3 -2
  290. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  291. package/dist/feature-libraries/object-forest/objectForest.js +6 -14
  292. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  293. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
  294. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  295. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
  296. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  297. package/dist/feature-libraries/schemaBuilderBase.d.ts +2 -28
  298. package/dist/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  299. package/dist/feature-libraries/schemaBuilderBase.js +1 -27
  300. package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
  301. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  302. package/dist/feature-libraries/sequence-field/compose.js +24 -21
  303. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  304. package/dist/feature-libraries/sequence-field/formatV2.d.ts +3 -3
  305. package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  306. package/dist/feature-libraries/sequence-field/formatV2.js +7 -6
  307. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  308. package/dist/feature-libraries/sequence-field/formatV3.d.ts +195 -0
  309. package/dist/feature-libraries/sequence-field/formatV3.d.ts.map +1 -0
  310. package/dist/feature-libraries/sequence-field/formatV3.js +23 -0
  311. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -0
  312. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +11 -0
  313. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  314. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  315. package/dist/feature-libraries/sequence-field/index.d.ts +1 -1
  316. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  317. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  318. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  319. package/dist/feature-libraries/sequence-field/invert.js +21 -13
  320. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  321. package/dist/feature-libraries/sequence-field/markQueue.js +1 -1
  322. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  323. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +2 -2
  324. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  325. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  326. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  327. package/dist/feature-libraries/sequence-field/rebase.js +24 -6
  328. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  329. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  330. package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -3
  331. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  332. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
  333. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +38 -4
  334. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  335. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -1
  336. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  337. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +54 -9
  338. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  339. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +11 -0
  340. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -0
  341. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +85 -0
  342. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -0
  343. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  344. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +2 -0
  345. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  346. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  347. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +4 -1
  348. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  349. package/dist/feature-libraries/sequence-field/types.d.ts +23 -4
  350. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  351. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  352. package/dist/feature-libraries/sequence-field/utils.d.ts +5 -4
  353. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  354. package/dist/feature-libraries/sequence-field/utils.js +70 -42
  355. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  356. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -1
  357. package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  358. package/dist/feature-libraries/storedToViewSchema.js +0 -1
  359. package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
  360. package/dist/feature-libraries/treeCursorUtils.d.ts +0 -6
  361. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  362. package/dist/feature-libraries/treeCursorUtils.js +8 -6
  363. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  364. package/dist/feature-libraries/treeTextCursor.d.ts +0 -2
  365. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  366. package/dist/feature-libraries/treeTextCursor.js +0 -2
  367. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  368. package/dist/feature-libraries/typed-schema/flexList.d.ts +0 -3
  369. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  370. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  371. package/dist/feature-libraries/typed-schema/index.d.ts +1 -1
  372. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  373. package/dist/feature-libraries/typed-schema/index.js +1 -3
  374. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  375. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  376. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -4
  377. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  378. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +2 -41
  379. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  380. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +1 -40
  381. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  382. package/dist/feature-libraries/typed-schema/view.d.ts +0 -1
  383. package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
  384. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  385. package/dist/index.d.ts +8 -9
  386. package/dist/index.d.ts.map +1 -1
  387. package/dist/index.js +31 -90
  388. package/dist/index.js.map +1 -1
  389. package/dist/internalTypes.d.ts +1 -1
  390. package/dist/internalTypes.d.ts.map +1 -1
  391. package/dist/internalTypes.js.map +1 -1
  392. package/dist/packageVersion.d.ts +1 -1
  393. package/dist/packageVersion.d.ts.map +1 -1
  394. package/dist/packageVersion.js +1 -1
  395. package/dist/packageVersion.js.map +1 -1
  396. package/dist/public.d.ts +3 -1
  397. package/dist/shared-tree/schematizeTree.d.ts +2 -11
  398. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  399. package/dist/shared-tree/schematizeTree.js +13 -2
  400. package/dist/shared-tree/schematizeTree.js.map +1 -1
  401. package/dist/shared-tree/schematizingTreeView.d.ts +4 -4
  402. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  403. package/dist/shared-tree/schematizingTreeView.js +2 -2
  404. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  405. package/dist/shared-tree/sharedTree.d.ts +9 -18
  406. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  407. package/dist/shared-tree/sharedTree.js +12 -9
  408. package/dist/shared-tree/sharedTree.js.map +1 -1
  409. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  410. package/dist/shared-tree/sharedTreeChangeCodecs.js +4 -0
  411. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  412. package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
  413. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  414. package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
  415. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  416. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +0 -2
  417. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  418. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  419. package/dist/shared-tree/treeApi.js +3 -3
  420. package/dist/shared-tree/treeApi.js.map +1 -1
  421. package/dist/shared-tree/treeCheckout.d.ts +10 -6
  422. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  423. package/dist/shared-tree/treeCheckout.js +51 -6
  424. package/dist/shared-tree/treeCheckout.js.map +1 -1
  425. package/dist/shared-tree/treeView.d.ts +3 -6
  426. package/dist/shared-tree/treeView.d.ts.map +1 -1
  427. package/dist/shared-tree/treeView.js +7 -3
  428. package/dist/shared-tree/treeView.js.map +1 -1
  429. package/dist/shared-tree-core/branch.d.ts +6 -0
  430. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  431. package/dist/shared-tree-core/branch.js +13 -6
  432. package/dist/shared-tree-core/branch.js.map +1 -1
  433. package/dist/shared-tree-core/defaultResubmitMachine.js +3 -3
  434. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  435. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  436. package/dist/shared-tree-core/editManagerCodecs.js +1 -0
  437. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  438. package/dist/shared-tree-core/editManagerFormat.d.ts +2 -2
  439. package/dist/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  440. package/dist/shared-tree-core/editManagerFormat.js +6 -1
  441. package/dist/shared-tree-core/editManagerFormat.js.map +1 -1
  442. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  443. package/dist/shared-tree-core/messageCodecs.js +1 -0
  444. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  445. package/dist/shared-tree-core/sharedTreeCore.d.ts +4 -0
  446. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  447. package/dist/shared-tree-core/sharedTreeCore.js +9 -1
  448. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  449. package/dist/simple-tree/api/create.d.ts +54 -0
  450. package/dist/simple-tree/api/create.d.ts.map +1 -0
  451. package/dist/simple-tree/api/create.js +99 -0
  452. package/dist/simple-tree/api/create.js.map +1 -0
  453. package/dist/simple-tree/api/index.d.ts +12 -0
  454. package/dist/simple-tree/api/index.d.ts.map +1 -0
  455. package/dist/simple-tree/api/index.js +28 -0
  456. package/dist/simple-tree/api/index.js.map +1 -0
  457. package/{lib/simple-tree → dist/simple-tree/api}/schemaCreationUtilities.d.ts +7 -4
  458. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -0
  459. package/dist/simple-tree/{schemaCreationUtilities.js → api/schemaCreationUtilities.js} +1 -1
  460. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -0
  461. package/dist/simple-tree/{schemaFactory.d.ts → api/schemaFactory.d.ts} +15 -14
  462. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -0
  463. package/dist/simple-tree/{schemaFactory.js → api/schemaFactory.js} +10 -9
  464. package/dist/simple-tree/api/schemaFactory.js.map +1 -0
  465. package/{lib/simple-tree → dist/simple-tree/api}/schemaFactoryRecursive.d.ts +40 -7
  466. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -0
  467. package/dist/simple-tree/{schemaFactoryRecursive.js → api/schemaFactoryRecursive.js} +1 -1
  468. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -0
  469. package/dist/simple-tree/api/testRecursiveDomain.d.ts +62 -0
  470. package/dist/simple-tree/api/testRecursiveDomain.d.ts.map +1 -0
  471. package/dist/simple-tree/api/testRecursiveDomain.js.map +1 -0
  472. package/{lib/simple-tree → dist/simple-tree/api}/tree.d.ts +111 -20
  473. package/dist/simple-tree/api/tree.d.ts.map +1 -0
  474. package/dist/simple-tree/api/tree.js +173 -0
  475. package/dist/simple-tree/api/tree.js.map +1 -0
  476. package/dist/simple-tree/api/treeNodeApi.d.ts +87 -0
  477. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -0
  478. package/dist/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +33 -33
  479. package/dist/simple-tree/api/treeNodeApi.js.map +1 -0
  480. package/dist/simple-tree/api/verboseTree.d.ts +136 -0
  481. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -0
  482. package/dist/simple-tree/api/verboseTree.js +220 -0
  483. package/dist/simple-tree/api/verboseTree.js.map +1 -0
  484. package/dist/simple-tree/arrayNode.d.ts +3 -3
  485. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  486. package/dist/simple-tree/arrayNode.js +70 -69
  487. package/dist/simple-tree/arrayNode.js.map +1 -1
  488. package/dist/simple-tree/core/index.d.ts +10 -0
  489. package/dist/simple-tree/core/index.d.ts.map +1 -0
  490. package/dist/simple-tree/core/index.js +27 -0
  491. package/dist/simple-tree/core/index.js.map +1 -0
  492. package/{lib/simple-tree → dist/simple-tree/core}/schemaCaching.d.ts +2 -9
  493. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -0
  494. package/dist/simple-tree/{schemaCaching.js → core/schemaCaching.js} +2 -23
  495. package/dist/simple-tree/core/schemaCaching.js.map +1 -0
  496. package/dist/simple-tree/core/treeNodeKernel.d.ts +57 -0
  497. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
  498. package/dist/simple-tree/core/treeNodeKernel.js +128 -0
  499. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -0
  500. package/dist/simple-tree/core/treeNodeSchema.d.ts +149 -0
  501. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -0
  502. package/dist/simple-tree/core/treeNodeSchema.js +35 -0
  503. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -0
  504. package/dist/simple-tree/core/types.d.ts +178 -0
  505. package/dist/simple-tree/core/types.d.ts.map +1 -0
  506. package/dist/simple-tree/core/types.js +117 -0
  507. package/dist/simple-tree/core/types.js.map +1 -0
  508. package/dist/simple-tree/core/withType.d.ts +82 -0
  509. package/dist/simple-tree/core/withType.d.ts.map +1 -0
  510. package/dist/simple-tree/core/withType.js +39 -0
  511. package/dist/simple-tree/core/withType.js.map +1 -0
  512. package/dist/simple-tree/getJsonSchema.d.ts +55 -0
  513. package/dist/simple-tree/getJsonSchema.d.ts.map +1 -0
  514. package/dist/simple-tree/getJsonSchema.js +69 -0
  515. package/dist/simple-tree/getJsonSchema.js.map +1 -0
  516. package/dist/simple-tree/getSimpleFieldSchema.d.ts +14 -0
  517. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +1 -0
  518. package/dist/simple-tree/getSimpleFieldSchema.js +29 -0
  519. package/dist/simple-tree/getSimpleFieldSchema.js.map +1 -0
  520. package/dist/simple-tree/getSimpleSchema.d.ts +58 -0
  521. package/dist/simple-tree/getSimpleSchema.d.ts.map +1 -0
  522. package/dist/simple-tree/getSimpleSchema.js +68 -0
  523. package/dist/simple-tree/getSimpleSchema.js.map +1 -0
  524. package/dist/simple-tree/index.d.ts +12 -13
  525. package/dist/simple-tree/index.d.ts.map +1 -1
  526. package/dist/simple-tree/index.js +27 -23
  527. package/dist/simple-tree/index.js.map +1 -1
  528. package/dist/simple-tree/jsonSchema.d.ts +206 -0
  529. package/dist/simple-tree/jsonSchema.d.ts.map +1 -0
  530. package/dist/{feature-libraries/schema-aware/index.js → simple-tree/jsonSchema.js} +1 -1
  531. package/dist/simple-tree/jsonSchema.js.map +1 -0
  532. package/dist/simple-tree/leafNodeSchema.d.ts +1 -1
  533. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  534. package/dist/simple-tree/leafNodeSchema.js +3 -4
  535. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  536. package/dist/simple-tree/mapNode.d.ts +9 -3
  537. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  538. package/dist/simple-tree/mapNode.js +33 -35
  539. package/dist/simple-tree/mapNode.js.map +1 -1
  540. package/dist/simple-tree/objectNode.d.ts +18 -16
  541. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  542. package/dist/simple-tree/objectNode.js +43 -44
  543. package/dist/simple-tree/objectNode.js.map +1 -1
  544. package/dist/simple-tree/objectNodeTypes.d.ts +38 -0
  545. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -0
  546. package/dist/simple-tree/objectNodeTypes.js +19 -0
  547. package/dist/simple-tree/objectNodeTypes.js.map +1 -0
  548. package/dist/simple-tree/proxies.d.ts +6 -25
  549. package/dist/simple-tree/proxies.d.ts.map +1 -1
  550. package/dist/simple-tree/proxies.js +54 -81
  551. package/dist/simple-tree/proxies.js.map +1 -1
  552. package/dist/simple-tree/proxyBinding.d.ts +46 -19
  553. package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
  554. package/dist/simple-tree/proxyBinding.js +101 -44
  555. package/dist/simple-tree/proxyBinding.js.map +1 -1
  556. package/dist/simple-tree/schemaTypes.d.ts +10 -159
  557. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  558. package/dist/simple-tree/schemaTypes.js +11 -42
  559. package/dist/simple-tree/schemaTypes.js.map +1 -1
  560. package/dist/simple-tree/simpleSchema.d.ts +124 -0
  561. package/dist/simple-tree/simpleSchema.d.ts.map +1 -0
  562. package/dist/{feature-libraries/schema-aware/schemaAware.js → simple-tree/simpleSchema.js} +1 -1
  563. package/dist/simple-tree/simpleSchema.js.map +1 -0
  564. package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts +12 -0
  565. package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +1 -0
  566. package/dist/simple-tree/simpleSchemaToJsonSchema.js +146 -0
  567. package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +1 -0
  568. package/dist/simple-tree/toFlexSchema.d.ts +4 -12
  569. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  570. package/dist/simple-tree/toFlexSchema.js +42 -52
  571. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  572. package/dist/simple-tree/toMapTree.d.ts +39 -39
  573. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  574. package/dist/simple-tree/toMapTree.js +227 -171
  575. package/dist/simple-tree/toMapTree.js.map +1 -1
  576. package/dist/simple-tree/{types.d.ts → treeNodeValid.d.ts} +2 -80
  577. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -0
  578. package/dist/simple-tree/{types.js → treeNodeValid.js} +102 -107
  579. package/dist/simple-tree/treeNodeValid.js.map +1 -0
  580. package/dist/simple-tree/typesUnsafe.d.ts +35 -4
  581. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  582. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  583. package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts +11 -0
  584. package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +1 -0
  585. package/dist/simple-tree/viewSchemaToSimpleSchema.js +171 -0
  586. package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +1 -0
  587. package/dist/util/brand.d.ts +0 -3
  588. package/dist/util/brand.d.ts.map +1 -1
  589. package/dist/util/brand.js +1 -2
  590. package/dist/util/brand.js.map +1 -1
  591. package/dist/util/brandedMap.d.ts +0 -5
  592. package/dist/util/brandedMap.d.ts.map +1 -1
  593. package/dist/util/brandedMap.js +0 -1
  594. package/dist/util/brandedMap.js.map +1 -1
  595. package/dist/util/breakable.js +1 -1
  596. package/dist/util/breakable.js.map +1 -1
  597. package/dist/util/idAllocator.d.ts +0 -2
  598. package/dist/util/idAllocator.d.ts.map +1 -1
  599. package/dist/util/idAllocator.js +0 -1
  600. package/dist/util/idAllocator.js.map +1 -1
  601. package/dist/util/index.d.ts +2 -2
  602. package/dist/util/index.d.ts.map +1 -1
  603. package/dist/util/index.js +4 -2
  604. package/dist/util/index.js.map +1 -1
  605. package/dist/util/nestedMap.d.ts +5 -19
  606. package/dist/util/nestedMap.d.ts.map +1 -1
  607. package/dist/util/nestedMap.js +17 -17
  608. package/dist/util/nestedMap.js.map +1 -1
  609. package/dist/util/opaque.d.ts +0 -4
  610. package/dist/util/opaque.d.ts.map +1 -1
  611. package/dist/util/opaque.js +0 -2
  612. package/dist/util/opaque.js.map +1 -1
  613. package/dist/util/rangeMap.d.ts +0 -2
  614. package/dist/util/rangeMap.d.ts.map +1 -1
  615. package/dist/util/rangeMap.js +4 -3
  616. package/dist/util/rangeMap.js.map +1 -1
  617. package/dist/util/transactionResult.d.ts +0 -1
  618. package/dist/util/transactionResult.d.ts.map +1 -1
  619. package/dist/util/transactionResult.js +0 -1
  620. package/dist/util/transactionResult.js.map +1 -1
  621. package/dist/util/typeCheck.d.ts +2 -20
  622. package/dist/util/typeCheck.d.ts.map +1 -1
  623. package/dist/util/typeCheck.js.map +1 -1
  624. package/dist/util/typeCheckTests.d.ts +4 -4
  625. package/dist/util/typeCheckTests.d.ts.map +1 -1
  626. package/dist/util/typeCheckTests.js.map +1 -1
  627. package/dist/util/typeUtils.d.ts +0 -7
  628. package/dist/util/typeUtils.d.ts.map +1 -1
  629. package/dist/util/typeUtils.js.map +1 -1
  630. package/dist/util/utils.d.ts +6 -8
  631. package/dist/util/utils.d.ts.map +1 -1
  632. package/dist/util/utils.js +14 -5
  633. package/dist/util/utils.js.map +1 -1
  634. package/lib/beta.d.ts +3 -1
  635. package/lib/codec/discriminatedUnions.d.ts +11 -5
  636. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  637. package/lib/codec/discriminatedUnions.js.map +1 -1
  638. package/lib/codec/index.d.ts +1 -1
  639. package/lib/codec/index.d.ts.map +1 -1
  640. package/lib/codec/index.js +1 -1
  641. package/lib/codec/index.js.map +1 -1
  642. package/lib/core/forest/editableForest.d.ts +1 -5
  643. package/lib/core/forest/editableForest.d.ts.map +1 -1
  644. package/lib/core/forest/editableForest.js +4 -2
  645. package/lib/core/forest/editableForest.js.map +1 -1
  646. package/lib/core/forest/forest.d.ts +0 -6
  647. package/lib/core/forest/forest.d.ts.map +1 -1
  648. package/lib/core/forest/forest.js +0 -2
  649. package/lib/core/forest/forest.js.map +1 -1
  650. package/lib/core/index.d.ts +2 -2
  651. package/lib/core/index.d.ts.map +1 -1
  652. package/lib/core/index.js +2 -2
  653. package/lib/core/index.js.map +1 -1
  654. package/lib/core/rebase/changeRebaser.d.ts +0 -4
  655. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  656. package/lib/core/rebase/changeRebaser.js.map +1 -1
  657. package/lib/core/rebase/index.d.ts +1 -1
  658. package/lib/core/rebase/index.d.ts.map +1 -1
  659. package/lib/core/rebase/index.js +1 -1
  660. package/lib/core/rebase/index.js.map +1 -1
  661. package/lib/core/rebase/types.d.ts +1 -8
  662. package/lib/core/rebase/types.d.ts.map +1 -1
  663. package/lib/core/rebase/types.js +1 -7
  664. package/lib/core/rebase/types.js.map +1 -1
  665. package/lib/core/rebase/utils.d.ts +0 -1
  666. package/lib/core/rebase/utils.d.ts.map +1 -1
  667. package/lib/core/rebase/utils.js +13 -8
  668. package/lib/core/rebase/utils.js.map +1 -1
  669. package/lib/core/schema-stored/multiplicity.d.ts +0 -1
  670. package/lib/core/schema-stored/multiplicity.d.ts.map +1 -1
  671. package/lib/core/schema-stored/multiplicity.js +0 -1
  672. package/lib/core/schema-stored/multiplicity.js.map +1 -1
  673. package/lib/core/schema-stored/schema.d.ts +0 -7
  674. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  675. package/lib/core/schema-stored/schema.js +0 -4
  676. package/lib/core/schema-stored/schema.js.map +1 -1
  677. package/lib/core/schema-stored/storedSchemaRepository.d.ts +0 -3
  678. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  679. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  680. package/lib/core/schema-view/view.d.ts +0 -3
  681. package/lib/core/schema-view/view.d.ts.map +1 -1
  682. package/lib/core/schema-view/view.js +0 -1
  683. package/lib/core/schema-view/view.js.map +1 -1
  684. package/lib/core/tree/anchorSet.d.ts +1 -10
  685. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  686. package/lib/core/tree/anchorSet.js +14 -4
  687. package/lib/core/tree/anchorSet.js.map +1 -1
  688. package/lib/core/tree/cursor.d.ts +1 -6
  689. package/lib/core/tree/cursor.d.ts.map +1 -1
  690. package/lib/core/tree/cursor.js +0 -2
  691. package/lib/core/tree/cursor.js.map +1 -1
  692. package/lib/core/tree/delta.d.ts +0 -11
  693. package/lib/core/tree/delta.d.ts.map +1 -1
  694. package/lib/core/tree/delta.js.map +1 -1
  695. package/lib/core/tree/detachedFieldIndex.d.ts +48 -11
  696. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  697. package/lib/core/tree/detachedFieldIndex.js +145 -21
  698. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  699. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  700. package/lib/core/tree/detachedFieldIndexCodec.js +17 -7
  701. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  702. package/lib/core/tree/detachedFieldIndexFormat.d.ts +1 -1
  703. package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  704. package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
  705. package/lib/core/tree/detachedFieldIndexTypes.d.ts +38 -4
  706. package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  707. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  708. package/lib/core/tree/index.d.ts +3 -2
  709. package/lib/core/tree/index.d.ts.map +1 -1
  710. package/lib/core/tree/index.js +1 -0
  711. package/lib/core/tree/index.js.map +1 -1
  712. package/lib/core/tree/mapTree.d.ts +20 -4
  713. package/lib/core/tree/mapTree.d.ts.map +1 -1
  714. package/lib/core/tree/mapTree.js +27 -1
  715. package/lib/core/tree/mapTree.js.map +1 -1
  716. package/lib/core/tree/pathTree.d.ts +0 -11
  717. package/lib/core/tree/pathTree.d.ts.map +1 -1
  718. package/lib/core/tree/pathTree.js.map +1 -1
  719. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  720. package/lib/core/tree/treeTextFormat.js +3 -2
  721. package/lib/core/tree/treeTextFormat.js.map +1 -1
  722. package/lib/core/tree/types.d.ts +0 -11
  723. package/lib/core/tree/types.d.ts.map +1 -1
  724. package/lib/core/tree/types.js +0 -4
  725. package/lib/core/tree/types.js.map +1 -1
  726. package/lib/core/tree/visitDelta.d.ts +3 -2
  727. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  728. package/lib/core/tree/visitDelta.js +33 -17
  729. package/lib/core/tree/visitDelta.js.map +1 -1
  730. package/lib/core/tree/visitPath.d.ts +0 -2
  731. package/lib/core/tree/visitPath.d.ts.map +1 -1
  732. package/lib/core/tree/visitPath.js.map +1 -1
  733. package/lib/core/tree/visitorUtils.d.ts +3 -4
  734. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  735. package/lib/core/tree/visitorUtils.js +4 -4
  736. package/lib/core/tree/visitorUtils.js.map +1 -1
  737. package/lib/domains/index.d.ts +1 -1
  738. package/lib/domains/index.d.ts.map +1 -1
  739. package/lib/domains/index.js +1 -1
  740. package/lib/domains/index.js.map +1 -1
  741. package/lib/domains/json/index.d.ts +1 -1
  742. package/lib/domains/json/index.d.ts.map +1 -1
  743. package/lib/domains/json/index.js +1 -1
  744. package/lib/domains/json/index.js.map +1 -1
  745. package/lib/domains/json/jsonCursor.d.ts +36 -2
  746. package/lib/domains/json/jsonCursor.d.ts.map +1 -1
  747. package/lib/domains/json/jsonCursor.js +76 -5
  748. package/lib/domains/json/jsonCursor.js.map +1 -1
  749. package/lib/domains/json/jsonDomainSchema.d.ts +13 -3
  750. package/lib/domains/json/jsonDomainSchema.d.ts.map +1 -1
  751. package/lib/domains/json/jsonDomainSchema.js +9 -1
  752. package/lib/domains/json/jsonDomainSchema.js.map +1 -1
  753. package/lib/domains/leafDomain.d.ts +0 -1
  754. package/lib/domains/leafDomain.d.ts.map +1 -1
  755. package/lib/domains/leafDomain.js +0 -1
  756. package/lib/domains/leafDomain.js.map +1 -1
  757. package/lib/domains/schemaBuilder.d.ts +1 -7
  758. package/lib/domains/schemaBuilder.d.ts.map +1 -1
  759. package/lib/domains/schemaBuilder.js +1 -11
  760. package/lib/domains/schemaBuilder.js.map +1 -1
  761. package/lib/events/events.d.ts +0 -4
  762. package/lib/events/events.d.ts.map +1 -1
  763. package/lib/events/events.js +0 -1
  764. package/lib/events/events.js.map +1 -1
  765. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  766. package/lib/feature-libraries/chunked-forest/basicChunk.js +9 -4
  767. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  768. package/lib/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  769. package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  770. package/lib/feature-libraries/chunked-forest/chunk.js.map +1 -1
  771. package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -4
  772. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  773. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  774. package/lib/feature-libraries/chunked-forest/chunkedForest.js +8 -6
  775. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  776. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +2 -2
  777. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  778. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  779. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +9 -6
  780. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  781. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  782. package/lib/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  783. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  784. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +12 -24
  785. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  786. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -16
  787. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  788. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -6
  789. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  790. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
  791. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  792. package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -1
  793. package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  794. package/lib/feature-libraries/default-schema/defaultSchema.js +0 -1
  795. package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  796. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  797. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  798. package/lib/feature-libraries/default-schema/index.js +1 -1
  799. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  800. package/lib/feature-libraries/default-schema/schemaChecker.d.ts +6 -0
  801. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  802. package/lib/feature-libraries/default-schema/schemaChecker.js +6 -0
  803. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  804. package/lib/feature-libraries/editableTreeBinder.d.ts +0 -67
  805. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  806. package/lib/feature-libraries/editableTreeBinder.js +7 -26
  807. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  808. package/lib/feature-libraries/fieldGenerator.d.ts +0 -3
  809. package/lib/feature-libraries/fieldGenerator.d.ts.map +1 -1
  810. package/lib/feature-libraries/fieldGenerator.js +0 -1
  811. package/lib/feature-libraries/fieldGenerator.js.map +1 -1
  812. package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
  813. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
  814. package/lib/feature-libraries/flex-map-tree/index.js +1 -1
  815. package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
  816. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +57 -56
  817. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  818. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +169 -217
  819. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  820. package/lib/feature-libraries/flex-tree/context.d.ts +0 -1
  821. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  822. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  823. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +18 -295
  824. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  825. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -6
  826. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  827. package/lib/feature-libraries/flex-tree/index.d.ts +3 -2
  828. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  829. package/lib/feature-libraries/flex-tree/index.js +2 -1
  830. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  831. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
  832. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  833. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  834. package/lib/feature-libraries/flex-tree/lazyField.d.ts +9 -27
  835. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  836. package/lib/feature-libraries/flex-tree/lazyField.js +39 -120
  837. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  838. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +2 -13
  839. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  840. package/lib/feature-libraries/flex-tree/lazyNode.js +7 -72
  841. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  842. package/lib/feature-libraries/flex-tree/treeEvents.d.ts +0 -2
  843. package/lib/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  844. package/lib/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  845. package/lib/feature-libraries/flex-tree/utilities.d.ts +2 -1
  846. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  847. package/lib/feature-libraries/flex-tree/utilities.js +4 -0
  848. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  849. package/lib/feature-libraries/forest-summary/codec.js +3 -3
  850. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  851. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  852. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  853. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  854. package/lib/feature-libraries/index.d.ts +6 -8
  855. package/lib/feature-libraries/index.d.ts.map +1 -1
  856. package/lib/feature-libraries/index.js +6 -7
  857. package/lib/feature-libraries/index.js.map +1 -1
  858. package/lib/feature-libraries/mapTreeCursor.d.ts +6 -2
  859. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  860. package/lib/feature-libraries/mapTreeCursor.js +7 -0
  861. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  862. package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -4
  863. package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts.map +1 -1
  864. package/lib/feature-libraries/memoizedIdRangeAllocator.js +0 -1
  865. package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  866. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
  867. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  868. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +0 -1
  869. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  870. package/lib/feature-libraries/modular-schema/discrepancies.d.ts +18 -0
  871. package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
  872. package/lib/feature-libraries/modular-schema/discrepancies.js +106 -4
  873. package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
  874. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -8
  875. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  876. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js +0 -1
  877. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  878. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +1 -3
  879. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  880. package/lib/feature-libraries/modular-schema/fieldKind.js +1 -2
  881. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  882. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +1 -2
  883. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  884. package/lib/feature-libraries/modular-schema/genericFieldKind.js +56 -83
  885. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  886. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +1 -1
  887. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  888. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +6 -9
  889. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  890. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +3 -14
  891. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  892. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js +4 -1
  893. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  894. package/lib/feature-libraries/modular-schema/index.d.ts +2 -2
  895. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  896. package/lib/feature-libraries/modular-schema/index.js +1 -1
  897. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  898. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  899. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +43 -26
  900. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  901. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -8
  902. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  903. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +182 -222
  904. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  905. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +8 -14
  906. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  907. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  908. package/lib/feature-libraries/node-key/nodeKey.d.ts +0 -4
  909. package/lib/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  910. package/lib/feature-libraries/node-key/nodeKey.js +0 -2
  911. package/lib/feature-libraries/node-key/nodeKey.js.map +1 -1
  912. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts +0 -1
  913. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  914. package/lib/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  915. package/lib/feature-libraries/object-forest/objectForest.d.ts +3 -2
  916. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  917. package/lib/feature-libraries/object-forest/objectForest.js +7 -15
  918. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  919. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
  920. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
  921. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
  922. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
  923. package/lib/feature-libraries/schemaBuilderBase.d.ts +2 -28
  924. package/lib/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  925. package/lib/feature-libraries/schemaBuilderBase.js +2 -28
  926. package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
  927. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  928. package/lib/feature-libraries/sequence-field/compose.js +25 -22
  929. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  930. package/lib/feature-libraries/sequence-field/formatV2.d.ts +3 -3
  931. package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  932. package/lib/feature-libraries/sequence-field/formatV2.js +3 -3
  933. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  934. package/lib/feature-libraries/sequence-field/formatV3.d.ts +195 -0
  935. package/lib/feature-libraries/sequence-field/formatV3.d.ts.map +1 -0
  936. package/lib/feature-libraries/sequence-field/formatV3.js +19 -0
  937. package/lib/feature-libraries/sequence-field/formatV3.js.map +1 -0
  938. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +11 -0
  939. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  940. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  941. package/lib/feature-libraries/sequence-field/index.d.ts +1 -1
  942. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  943. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  944. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  945. package/lib/feature-libraries/sequence-field/invert.js +22 -14
  946. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  947. package/lib/feature-libraries/sequence-field/markQueue.js +2 -2
  948. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  949. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +2 -2
  950. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  951. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  952. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  953. package/lib/feature-libraries/sequence-field/rebase.js +25 -7
  954. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  955. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  956. package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -3
  957. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  958. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
  959. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +40 -6
  960. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  961. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -1
  962. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  963. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +55 -11
  964. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  965. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +11 -0
  966. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -0
  967. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +81 -0
  968. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -0
  969. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  970. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +2 -0
  971. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  972. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  973. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +5 -2
  974. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  975. package/lib/feature-libraries/sequence-field/types.d.ts +23 -4
  976. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  977. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  978. package/lib/feature-libraries/sequence-field/utils.d.ts +5 -4
  979. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  980. package/lib/feature-libraries/sequence-field/utils.js +67 -41
  981. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  982. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -1
  983. package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  984. package/lib/feature-libraries/storedToViewSchema.js +0 -1
  985. package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
  986. package/lib/feature-libraries/treeCursorUtils.d.ts +0 -6
  987. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  988. package/lib/feature-libraries/treeCursorUtils.js +9 -7
  989. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  990. package/lib/feature-libraries/treeTextCursor.d.ts +0 -2
  991. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  992. package/lib/feature-libraries/treeTextCursor.js +0 -2
  993. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  994. package/lib/feature-libraries/typed-schema/flexList.d.ts +0 -3
  995. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  996. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  997. package/lib/feature-libraries/typed-schema/index.d.ts +1 -1
  998. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  999. package/lib/feature-libraries/typed-schema/index.js +1 -1
  1000. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  1001. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  1002. package/lib/feature-libraries/typed-schema/schemaCollection.js +1 -5
  1003. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  1004. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +2 -41
  1005. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  1006. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -38
  1007. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  1008. package/lib/feature-libraries/typed-schema/view.d.ts +0 -1
  1009. package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
  1010. package/lib/feature-libraries/typed-schema/view.js.map +1 -1
  1011. package/lib/index.d.ts +8 -9
  1012. package/lib/index.d.ts.map +1 -1
  1013. package/lib/index.js +4 -9
  1014. package/lib/index.js.map +1 -1
  1015. package/lib/internalTypes.d.ts +1 -1
  1016. package/lib/internalTypes.d.ts.map +1 -1
  1017. package/lib/internalTypes.js.map +1 -1
  1018. package/lib/packageVersion.d.ts +1 -1
  1019. package/lib/packageVersion.d.ts.map +1 -1
  1020. package/lib/packageVersion.js +1 -1
  1021. package/lib/packageVersion.js.map +1 -1
  1022. package/lib/public.d.ts +3 -1
  1023. package/lib/shared-tree/schematizeTree.d.ts +2 -11
  1024. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  1025. package/lib/shared-tree/schematizeTree.js +15 -4
  1026. package/lib/shared-tree/schematizeTree.js.map +1 -1
  1027. package/lib/shared-tree/schematizingTreeView.d.ts +4 -4
  1028. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  1029. package/lib/shared-tree/schematizingTreeView.js +3 -3
  1030. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  1031. package/lib/shared-tree/sharedTree.d.ts +9 -18
  1032. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  1033. package/lib/shared-tree/sharedTree.js +14 -11
  1034. package/lib/shared-tree/sharedTree.js.map +1 -1
  1035. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  1036. package/lib/shared-tree/sharedTreeChangeCodecs.js +4 -0
  1037. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  1038. package/lib/shared-tree/sharedTreeChangeEnricher.js +1 -1
  1039. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  1040. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
  1041. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  1042. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +0 -2
  1043. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  1044. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  1045. package/lib/shared-tree/treeApi.js +4 -4
  1046. package/lib/shared-tree/treeApi.js.map +1 -1
  1047. package/lib/shared-tree/treeCheckout.d.ts +10 -6
  1048. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  1049. package/lib/shared-tree/treeCheckout.js +52 -7
  1050. package/lib/shared-tree/treeCheckout.js.map +1 -1
  1051. package/lib/shared-tree/treeView.d.ts +3 -6
  1052. package/lib/shared-tree/treeView.d.ts.map +1 -1
  1053. package/lib/shared-tree/treeView.js +4 -0
  1054. package/lib/shared-tree/treeView.js.map +1 -1
  1055. package/lib/shared-tree-core/branch.d.ts +6 -0
  1056. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  1057. package/lib/shared-tree-core/branch.js +14 -7
  1058. package/lib/shared-tree-core/branch.js.map +1 -1
  1059. package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
  1060. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  1061. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  1062. package/lib/shared-tree-core/editManagerCodecs.js +1 -0
  1063. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  1064. package/lib/shared-tree-core/editManagerFormat.d.ts +2 -2
  1065. package/lib/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  1066. package/lib/shared-tree-core/editManagerFormat.js +6 -1
  1067. package/lib/shared-tree-core/editManagerFormat.js.map +1 -1
  1068. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  1069. package/lib/shared-tree-core/messageCodecs.js +1 -0
  1070. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  1071. package/lib/shared-tree-core/sharedTreeCore.d.ts +4 -0
  1072. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  1073. package/lib/shared-tree-core/sharedTreeCore.js +10 -2
  1074. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  1075. package/lib/simple-tree/api/create.d.ts +54 -0
  1076. package/lib/simple-tree/api/create.d.ts.map +1 -0
  1077. package/lib/simple-tree/api/create.js +92 -0
  1078. package/lib/simple-tree/api/create.js.map +1 -0
  1079. package/lib/simple-tree/api/index.d.ts +12 -0
  1080. package/lib/simple-tree/api/index.d.ts.map +1 -0
  1081. package/lib/simple-tree/api/index.js +13 -0
  1082. package/lib/simple-tree/api/index.js.map +1 -0
  1083. package/{dist/simple-tree → lib/simple-tree/api}/schemaCreationUtilities.d.ts +7 -4
  1084. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -0
  1085. package/lib/simple-tree/{schemaCreationUtilities.js → api/schemaCreationUtilities.js} +1 -1
  1086. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -0
  1087. package/lib/simple-tree/{schemaFactory.d.ts → api/schemaFactory.d.ts} +15 -14
  1088. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -0
  1089. package/lib/simple-tree/{schemaFactory.js → api/schemaFactory.js} +9 -8
  1090. package/lib/simple-tree/api/schemaFactory.js.map +1 -0
  1091. package/{dist/simple-tree → lib/simple-tree/api}/schemaFactoryRecursive.d.ts +40 -7
  1092. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -0
  1093. package/lib/simple-tree/{schemaFactoryRecursive.js → api/schemaFactoryRecursive.js} +1 -1
  1094. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -0
  1095. package/lib/simple-tree/api/testRecursiveDomain.d.ts +62 -0
  1096. package/lib/simple-tree/api/testRecursiveDomain.d.ts.map +1 -0
  1097. package/lib/simple-tree/api/testRecursiveDomain.js.map +1 -0
  1098. package/{dist/simple-tree → lib/simple-tree/api}/tree.d.ts +111 -20
  1099. package/lib/simple-tree/api/tree.d.ts.map +1 -0
  1100. package/lib/simple-tree/api/tree.js +165 -0
  1101. package/lib/simple-tree/api/tree.js.map +1 -0
  1102. package/lib/simple-tree/api/treeNodeApi.d.ts +87 -0
  1103. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -0
  1104. package/lib/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +32 -32
  1105. package/lib/simple-tree/api/treeNodeApi.js.map +1 -0
  1106. package/lib/simple-tree/api/verboseTree.d.ts +136 -0
  1107. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -0
  1108. package/lib/simple-tree/api/verboseTree.js +213 -0
  1109. package/lib/simple-tree/api/verboseTree.js.map +1 -0
  1110. package/lib/simple-tree/arrayNode.d.ts +3 -3
  1111. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  1112. package/lib/simple-tree/arrayNode.js +57 -54
  1113. package/lib/simple-tree/arrayNode.js.map +1 -1
  1114. package/lib/simple-tree/core/index.d.ts +10 -0
  1115. package/lib/simple-tree/core/index.d.ts.map +1 -0
  1116. package/lib/simple-tree/core/index.js +10 -0
  1117. package/lib/simple-tree/core/index.js.map +1 -0
  1118. package/{dist/simple-tree → lib/simple-tree/core}/schemaCaching.d.ts +2 -9
  1119. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -0
  1120. package/lib/simple-tree/{schemaCaching.js → core/schemaCaching.js} +1 -21
  1121. package/lib/simple-tree/core/schemaCaching.js.map +1 -0
  1122. package/lib/simple-tree/core/treeNodeKernel.d.ts +57 -0
  1123. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
  1124. package/lib/simple-tree/core/treeNodeKernel.js +121 -0
  1125. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -0
  1126. package/lib/simple-tree/core/treeNodeSchema.d.ts +149 -0
  1127. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -0
  1128. package/lib/simple-tree/core/treeNodeSchema.js +32 -0
  1129. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -0
  1130. package/lib/simple-tree/core/types.d.ts +178 -0
  1131. package/lib/simple-tree/core/types.d.ts.map +1 -0
  1132. package/lib/simple-tree/core/types.js +111 -0
  1133. package/lib/simple-tree/core/types.js.map +1 -0
  1134. package/lib/simple-tree/core/withType.d.ts +82 -0
  1135. package/lib/simple-tree/core/withType.d.ts.map +1 -0
  1136. package/lib/simple-tree/core/withType.js +36 -0
  1137. package/lib/simple-tree/core/withType.js.map +1 -0
  1138. package/lib/simple-tree/getJsonSchema.d.ts +55 -0
  1139. package/lib/simple-tree/getJsonSchema.d.ts.map +1 -0
  1140. package/lib/simple-tree/getJsonSchema.js +65 -0
  1141. package/lib/simple-tree/getJsonSchema.js.map +1 -0
  1142. package/lib/simple-tree/getSimpleFieldSchema.d.ts +14 -0
  1143. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +1 -0
  1144. package/lib/simple-tree/getSimpleFieldSchema.js +25 -0
  1145. package/lib/simple-tree/getSimpleFieldSchema.js.map +1 -0
  1146. package/lib/simple-tree/getSimpleSchema.d.ts +58 -0
  1147. package/lib/simple-tree/getSimpleSchema.d.ts.map +1 -0
  1148. package/lib/simple-tree/getSimpleSchema.js +64 -0
  1149. package/lib/simple-tree/getSimpleSchema.js.map +1 -0
  1150. package/lib/simple-tree/index.d.ts +12 -13
  1151. package/lib/simple-tree/index.d.ts.map +1 -1
  1152. package/lib/simple-tree/index.js +8 -11
  1153. package/lib/simple-tree/index.js.map +1 -1
  1154. package/lib/simple-tree/jsonSchema.d.ts +206 -0
  1155. package/lib/simple-tree/jsonSchema.d.ts.map +1 -0
  1156. package/lib/simple-tree/{nodeKeys.js → jsonSchema.js} +1 -1
  1157. package/lib/simple-tree/jsonSchema.js.map +1 -0
  1158. package/lib/simple-tree/leafNodeSchema.d.ts +1 -1
  1159. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  1160. package/lib/simple-tree/leafNodeSchema.js +1 -2
  1161. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  1162. package/lib/simple-tree/mapNode.d.ts +9 -3
  1163. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  1164. package/lib/simple-tree/mapNode.js +36 -36
  1165. package/lib/simple-tree/mapNode.js.map +1 -1
  1166. package/lib/simple-tree/objectNode.d.ts +18 -16
  1167. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  1168. package/lib/simple-tree/objectNode.js +36 -34
  1169. package/lib/simple-tree/objectNode.js.map +1 -1
  1170. package/lib/simple-tree/objectNodeTypes.d.ts +38 -0
  1171. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -0
  1172. package/lib/simple-tree/objectNodeTypes.js +15 -0
  1173. package/lib/simple-tree/objectNodeTypes.js.map +1 -0
  1174. package/lib/simple-tree/proxies.d.ts +6 -25
  1175. package/lib/simple-tree/proxies.d.ts.map +1 -1
  1176. package/lib/simple-tree/proxies.js +50 -75
  1177. package/lib/simple-tree/proxies.js.map +1 -1
  1178. package/lib/simple-tree/proxyBinding.d.ts +46 -19
  1179. package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
  1180. package/lib/simple-tree/proxyBinding.js +95 -39
  1181. package/lib/simple-tree/proxyBinding.js.map +1 -1
  1182. package/lib/simple-tree/schemaTypes.d.ts +10 -159
  1183. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  1184. package/lib/simple-tree/schemaTypes.js +9 -41
  1185. package/lib/simple-tree/schemaTypes.js.map +1 -1
  1186. package/lib/simple-tree/simpleSchema.d.ts +124 -0
  1187. package/lib/simple-tree/simpleSchema.d.ts.map +1 -0
  1188. package/lib/{feature-libraries/schema-aware/schemaAware.js → simple-tree/simpleSchema.js} +1 -1
  1189. package/lib/simple-tree/simpleSchema.js.map +1 -0
  1190. package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts +12 -0
  1191. package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +1 -0
  1192. package/lib/simple-tree/simpleSchemaToJsonSchema.js +142 -0
  1193. package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +1 -0
  1194. package/lib/simple-tree/toFlexSchema.d.ts +4 -12
  1195. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  1196. package/lib/simple-tree/toFlexSchema.js +9 -18
  1197. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  1198. package/lib/simple-tree/toMapTree.d.ts +39 -39
  1199. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  1200. package/lib/simple-tree/toMapTree.js +214 -158
  1201. package/lib/simple-tree/toMapTree.js.map +1 -1
  1202. package/lib/simple-tree/{types.d.ts → treeNodeValid.d.ts} +2 -80
  1203. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -0
  1204. package/lib/simple-tree/{types.js → treeNodeValid.js} +94 -96
  1205. package/lib/simple-tree/treeNodeValid.js.map +1 -0
  1206. package/lib/simple-tree/typesUnsafe.d.ts +35 -4
  1207. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  1208. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  1209. package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts +11 -0
  1210. package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +1 -0
  1211. package/lib/simple-tree/viewSchemaToSimpleSchema.js +167 -0
  1212. package/lib/simple-tree/viewSchemaToSimpleSchema.js.map +1 -0
  1213. package/lib/util/brand.d.ts +0 -3
  1214. package/lib/util/brand.d.ts.map +1 -1
  1215. package/lib/util/brand.js +1 -2
  1216. package/lib/util/brand.js.map +1 -1
  1217. package/lib/util/brandedMap.d.ts +0 -5
  1218. package/lib/util/brandedMap.d.ts.map +1 -1
  1219. package/lib/util/brandedMap.js +0 -1
  1220. package/lib/util/brandedMap.js.map +1 -1
  1221. package/lib/util/breakable.js +1 -1
  1222. package/lib/util/breakable.js.map +1 -1
  1223. package/lib/util/idAllocator.d.ts +0 -2
  1224. package/lib/util/idAllocator.d.ts.map +1 -1
  1225. package/lib/util/idAllocator.js +0 -1
  1226. package/lib/util/idAllocator.js.map +1 -1
  1227. package/lib/util/index.d.ts +2 -2
  1228. package/lib/util/index.d.ts.map +1 -1
  1229. package/lib/util/index.js +2 -2
  1230. package/lib/util/index.js.map +1 -1
  1231. package/lib/util/nestedMap.d.ts +5 -19
  1232. package/lib/util/nestedMap.d.ts.map +1 -1
  1233. package/lib/util/nestedMap.js +15 -16
  1234. package/lib/util/nestedMap.js.map +1 -1
  1235. package/lib/util/opaque.d.ts +0 -4
  1236. package/lib/util/opaque.d.ts.map +1 -1
  1237. package/lib/util/opaque.js +0 -2
  1238. package/lib/util/opaque.js.map +1 -1
  1239. package/lib/util/rangeMap.d.ts +0 -2
  1240. package/lib/util/rangeMap.d.ts.map +1 -1
  1241. package/lib/util/rangeMap.js +4 -3
  1242. package/lib/util/rangeMap.js.map +1 -1
  1243. package/lib/util/transactionResult.d.ts +0 -1
  1244. package/lib/util/transactionResult.d.ts.map +1 -1
  1245. package/lib/util/transactionResult.js +0 -1
  1246. package/lib/util/transactionResult.js.map +1 -1
  1247. package/lib/util/typeCheck.d.ts +2 -20
  1248. package/lib/util/typeCheck.d.ts.map +1 -1
  1249. package/lib/util/typeCheck.js.map +1 -1
  1250. package/lib/util/typeCheckTests.d.ts +4 -4
  1251. package/lib/util/typeCheckTests.d.ts.map +1 -1
  1252. package/lib/util/typeCheckTests.js.map +1 -1
  1253. package/lib/util/typeUtils.d.ts +0 -7
  1254. package/lib/util/typeUtils.d.ts.map +1 -1
  1255. package/lib/util/typeUtils.js.map +1 -1
  1256. package/lib/util/utils.d.ts +6 -8
  1257. package/lib/util/utils.d.ts.map +1 -1
  1258. package/lib/util/utils.js +12 -4
  1259. package/lib/util/utils.js.map +1 -1
  1260. package/package.json +36 -25
  1261. package/src/codec/discriminatedUnions.ts +20 -10
  1262. package/src/codec/index.ts +5 -1
  1263. package/src/core/forest/README.md +4 -2
  1264. package/src/core/forest/editableForest.ts +10 -7
  1265. package/src/core/forest/forest.ts +0 -6
  1266. package/src/core/index.ts +2 -2
  1267. package/src/core/rebase/changeRebaser.ts +0 -4
  1268. package/src/core/rebase/index.ts +0 -2
  1269. package/src/core/rebase/types.ts +1 -23
  1270. package/src/core/rebase/utils.ts +13 -11
  1271. package/src/core/schema-stored/multiplicity.ts +0 -1
  1272. package/src/core/schema-stored/schema.ts +0 -7
  1273. package/src/core/schema-stored/storedSchemaRepository.ts +0 -3
  1274. package/src/core/schema-view/view.ts +0 -3
  1275. package/src/core/tree/anchorSet.ts +21 -17
  1276. package/src/core/tree/cursor.ts +1 -6
  1277. package/src/core/tree/delta.ts +0 -11
  1278. package/src/core/tree/detachedFieldIndex.ts +217 -35
  1279. package/src/core/tree/detachedFieldIndexCodec.ts +21 -11
  1280. package/src/core/tree/detachedFieldIndexFormat.ts +1 -1
  1281. package/src/core/tree/detachedFieldIndexTypes.ts +40 -5
  1282. package/src/core/tree/index.ts +3 -2
  1283. package/src/core/tree/mapTree.ts +45 -4
  1284. package/src/core/tree/pathTree.ts +0 -11
  1285. package/src/core/tree/treeTextFormat.ts +3 -2
  1286. package/src/core/tree/types.ts +0 -11
  1287. package/src/core/tree/visitDelta.ts +59 -19
  1288. package/src/core/tree/visitPath.ts +0 -2
  1289. package/src/core/tree/visitorUtils.ts +7 -5
  1290. package/src/domains/index.ts +3 -0
  1291. package/src/domains/json/index.ts +7 -1
  1292. package/src/domains/json/jsonCursor.ts +113 -6
  1293. package/src/domains/json/jsonDomainSchema.ts +4 -5
  1294. package/src/domains/leafDomain.ts +0 -1
  1295. package/src/domains/schemaBuilder.ts +0 -22
  1296. package/src/events/events.ts +0 -4
  1297. package/src/feature-libraries/chunked-forest/README.md +9 -1
  1298. package/src/feature-libraries/chunked-forest/basicChunk.ts +14 -9
  1299. package/src/feature-libraries/chunked-forest/chunk.ts +1 -1
  1300. package/src/feature-libraries/chunked-forest/chunkTree.ts +4 -4
  1301. package/src/feature-libraries/chunked-forest/chunkedForest.ts +8 -6
  1302. package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +2 -2
  1303. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +9 -6
  1304. package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
  1305. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +18 -46
  1306. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +11 -6
  1307. package/src/feature-libraries/default-schema/defaultSchema.ts +0 -1
  1308. package/src/feature-libraries/default-schema/index.ts +1 -1
  1309. package/src/feature-libraries/default-schema/schemaChecker.ts +6 -0
  1310. package/src/feature-libraries/editableTreeBinder.ts +7 -79
  1311. package/src/feature-libraries/fieldGenerator.ts +0 -3
  1312. package/src/feature-libraries/flex-map-tree/index.ts +2 -1
  1313. package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +235 -328
  1314. package/src/feature-libraries/flex-tree/context.ts +0 -1
  1315. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +27 -376
  1316. package/src/feature-libraries/flex-tree/index.ts +7 -2
  1317. package/src/feature-libraries/flex-tree/lazyEntity.ts +0 -3
  1318. package/src/feature-libraries/flex-tree/lazyField.ts +52 -234
  1319. package/src/feature-libraries/flex-tree/lazyNode.ts +6 -108
  1320. package/src/feature-libraries/flex-tree/treeEvents.ts +0 -2
  1321. package/src/feature-libraries/flex-tree/utilities.ts +6 -1
  1322. package/src/feature-libraries/forest-summary/codec.ts +3 -3
  1323. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -0
  1324. package/src/feature-libraries/index.ts +8 -35
  1325. package/src/feature-libraries/mapTreeCursor.ts +13 -4
  1326. package/src/feature-libraries/memoizedIdRangeAllocator.ts +0 -4
  1327. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +0 -2
  1328. package/src/feature-libraries/modular-schema/discrepancies.ts +120 -4
  1329. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +0 -8
  1330. package/src/feature-libraries/modular-schema/fieldKind.ts +1 -3
  1331. package/src/feature-libraries/modular-schema/genericFieldKind.ts +69 -92
  1332. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +7 -14
  1333. package/src/feature-libraries/modular-schema/genericFieldKindTypes.ts +6 -15
  1334. package/src/feature-libraries/modular-schema/index.ts +2 -2
  1335. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +69 -35
  1336. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +350 -354
  1337. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +7 -14
  1338. package/src/feature-libraries/node-key/nodeKey.ts +0 -4
  1339. package/src/feature-libraries/node-key/nodeKeyManager.ts +0 -1
  1340. package/src/feature-libraries/object-forest/objectForest.ts +8 -16
  1341. package/src/feature-libraries/schemaBuilderBase.ts +1 -49
  1342. package/src/feature-libraries/sequence-field/compose.ts +41 -20
  1343. package/src/feature-libraries/sequence-field/formatV2.ts +3 -3
  1344. package/src/feature-libraries/sequence-field/formatV3.ts +65 -0
  1345. package/src/feature-libraries/sequence-field/helperTypes.ts +33 -0
  1346. package/src/feature-libraries/sequence-field/index.ts +1 -0
  1347. package/src/feature-libraries/sequence-field/invert.ts +28 -18
  1348. package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
  1349. package/src/feature-libraries/sequence-field/moveEffectTable.ts +2 -2
  1350. package/src/feature-libraries/sequence-field/rebase.ts +30 -13
  1351. package/src/feature-libraries/sequence-field/replaceRevisions.ts +27 -3
  1352. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +52 -7
  1353. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +92 -19
  1354. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +134 -0
  1355. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +2 -0
  1356. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +8 -2
  1357. package/src/feature-libraries/sequence-field/types.ts +24 -4
  1358. package/src/feature-libraries/sequence-field/utils.ts +78 -50
  1359. package/src/feature-libraries/storedToViewSchema.ts +0 -1
  1360. package/src/feature-libraries/treeCursorUtils.ts +11 -11
  1361. package/src/feature-libraries/treeTextCursor.ts +0 -2
  1362. package/src/feature-libraries/typed-schema/flexList.ts +0 -3
  1363. package/src/feature-libraries/typed-schema/index.ts +0 -2
  1364. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -5
  1365. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +2 -68
  1366. package/src/feature-libraries/typed-schema/view.ts +0 -1
  1367. package/src/index.ts +27 -245
  1368. package/src/internalTypes.ts +1 -0
  1369. package/src/packageVersion.ts +1 -1
  1370. package/src/shared-tree/schematizeTree.ts +25 -21
  1371. package/src/shared-tree/schematizingTreeView.ts +6 -6
  1372. package/src/shared-tree/sharedTree.ts +16 -40
  1373. package/src/shared-tree/sharedTreeChangeCodecs.ts +8 -0
  1374. package/src/shared-tree/sharedTreeChangeEnricher.ts +1 -1
  1375. package/src/shared-tree/sharedTreeChangeFamily.ts +3 -3
  1376. package/src/shared-tree/sharedTreeEditBuilder.ts +0 -2
  1377. package/src/shared-tree/treeApi.ts +4 -4
  1378. package/src/shared-tree/treeCheckout.ts +61 -12
  1379. package/src/shared-tree/treeView.ts +8 -6
  1380. package/src/shared-tree-core/branch.ts +29 -8
  1381. package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
  1382. package/src/shared-tree-core/editManagerCodecs.ts +1 -0
  1383. package/src/shared-tree-core/editManagerFormat.ts +7 -2
  1384. package/src/shared-tree-core/messageCodecs.ts +2 -1
  1385. package/src/shared-tree-core/sharedTreeCore.ts +12 -3
  1386. package/src/simple-tree/ProxyBinding.md +2 -0
  1387. package/src/simple-tree/api/README.md +7 -0
  1388. package/src/simple-tree/api/create.ts +179 -0
  1389. package/src/simple-tree/api/index.ts +36 -0
  1390. package/src/simple-tree/{schemaCreationUtilities.ts → api/schemaCreationUtilities.ts} +13 -5
  1391. package/src/simple-tree/{schemaFactory.ts → api/schemaFactory.ts} +36 -34
  1392. package/src/simple-tree/{schemaFactoryRecursive.ts → api/schemaFactoryRecursive.ts} +47 -10
  1393. package/src/simple-tree/{testRecursiveDomain.ts → api/testRecursiveDomain.ts} +3 -1
  1394. package/src/simple-tree/{tree.ts → api/tree.ts} +250 -35
  1395. package/src/simple-tree/{treeNodeApi.ts → api/treeNodeApi.ts} +57 -128
  1396. package/src/simple-tree/api/verboseTree.ts +415 -0
  1397. package/src/simple-tree/arrayNode.ts +101 -99
  1398. package/src/simple-tree/core/README.md +11 -0
  1399. package/src/simple-tree/core/index.ts +33 -0
  1400. package/src/simple-tree/{schemaCaching.ts → core/schemaCaching.ts} +3 -37
  1401. package/src/simple-tree/core/treeNodeKernel.ts +141 -0
  1402. package/src/simple-tree/core/treeNodeSchema.ts +184 -0
  1403. package/src/simple-tree/core/types.ts +255 -0
  1404. package/src/simple-tree/core/withType.ts +89 -0
  1405. package/src/simple-tree/getJsonSchema.ts +70 -0
  1406. package/src/simple-tree/getSimpleFieldSchema.ts +36 -0
  1407. package/src/simple-tree/getSimpleSchema.ts +69 -0
  1408. package/src/simple-tree/index.ts +58 -33
  1409. package/src/simple-tree/jsonSchema.ts +230 -0
  1410. package/src/simple-tree/leafNodeSchema.ts +6 -3
  1411. package/src/simple-tree/mapNode.ts +56 -55
  1412. package/src/simple-tree/objectNode.ts +66 -90
  1413. package/src/simple-tree/objectNodeTypes.ts +68 -0
  1414. package/src/simple-tree/proxies.ts +56 -93
  1415. package/src/simple-tree/proxyBinding.ts +134 -56
  1416. package/src/simple-tree/schemaTypes.ts +29 -194
  1417. package/src/simple-tree/simpleSchema.ts +138 -0
  1418. package/src/simple-tree/simpleSchemaToJsonSchema.ts +178 -0
  1419. package/src/simple-tree/toFlexSchema.ts +9 -42
  1420. package/src/simple-tree/toMapTree.ts +270 -296
  1421. package/src/simple-tree/{types.ts → treeNodeValid.ts} +166 -151
  1422. package/src/simple-tree/typesUnsafe.ts +51 -5
  1423. package/src/simple-tree/viewSchemaToSimpleSchema.ts +209 -0
  1424. package/src/util/brand.ts +1 -4
  1425. package/src/util/brandedMap.ts +0 -5
  1426. package/src/util/breakable.ts +1 -1
  1427. package/src/util/idAllocator.ts +0 -2
  1428. package/src/util/index.ts +3 -0
  1429. package/src/util/nestedMap.ts +23 -20
  1430. package/src/util/opaque.ts +0 -4
  1431. package/src/util/rangeMap.ts +5 -5
  1432. package/src/util/transactionResult.ts +0 -1
  1433. package/src/util/typeCheck.ts +2 -20
  1434. package/src/util/typeCheckTests.ts +4 -4
  1435. package/src/util/typeUtils.ts +0 -7
  1436. package/src/util/utils.ts +13 -8
  1437. package/tsconfig.json +0 -1
  1438. package/dist/feature-libraries/contextuallyTyped.d.ts +0 -209
  1439. package/dist/feature-libraries/contextuallyTyped.d.ts.map +0 -1
  1440. package/dist/feature-libraries/contextuallyTyped.js +0 -328
  1441. package/dist/feature-libraries/contextuallyTyped.js.map +0 -1
  1442. package/dist/feature-libraries/schema-aware/index.d.ts +0 -6
  1443. package/dist/feature-libraries/schema-aware/index.d.ts.map +0 -1
  1444. package/dist/feature-libraries/schema-aware/index.js.map +0 -1
  1445. package/dist/feature-libraries/schema-aware/schemaAware.d.ts +0 -76
  1446. package/dist/feature-libraries/schema-aware/schemaAware.d.ts.map +0 -1
  1447. package/dist/feature-libraries/schema-aware/schemaAware.js.map +0 -1
  1448. package/dist/simple-tree/nodeKeys.d.ts +0 -41
  1449. package/dist/simple-tree/nodeKeys.d.ts.map +0 -1
  1450. package/dist/simple-tree/nodeKeys.js +0 -7
  1451. package/dist/simple-tree/nodeKeys.js.map +0 -1
  1452. package/dist/simple-tree/schemaCaching.d.ts.map +0 -1
  1453. package/dist/simple-tree/schemaCaching.js.map +0 -1
  1454. package/dist/simple-tree/schemaCreationUtilities.d.ts.map +0 -1
  1455. package/dist/simple-tree/schemaCreationUtilities.js.map +0 -1
  1456. package/dist/simple-tree/schemaFactory.d.ts.map +0 -1
  1457. package/dist/simple-tree/schemaFactory.js.map +0 -1
  1458. package/dist/simple-tree/schemaFactoryRecursive.d.ts.map +0 -1
  1459. package/dist/simple-tree/schemaFactoryRecursive.js.map +0 -1
  1460. package/dist/simple-tree/testRecursiveDomain.d.ts +0 -61
  1461. package/dist/simple-tree/testRecursiveDomain.d.ts.map +0 -1
  1462. package/dist/simple-tree/testRecursiveDomain.js.map +0 -1
  1463. package/dist/simple-tree/tree.d.ts.map +0 -1
  1464. package/dist/simple-tree/tree.js +0 -73
  1465. package/dist/simple-tree/tree.js.map +0 -1
  1466. package/dist/simple-tree/treeNodeApi.d.ts +0 -159
  1467. package/dist/simple-tree/treeNodeApi.d.ts.map +0 -1
  1468. package/dist/simple-tree/treeNodeApi.js.map +0 -1
  1469. package/dist/simple-tree/types.d.ts.map +0 -1
  1470. package/dist/simple-tree/types.js.map +0 -1
  1471. package/lib/feature-libraries/contextuallyTyped.d.ts +0 -209
  1472. package/lib/feature-libraries/contextuallyTyped.d.ts.map +0 -1
  1473. package/lib/feature-libraries/contextuallyTyped.js +0 -311
  1474. package/lib/feature-libraries/contextuallyTyped.js.map +0 -1
  1475. package/lib/feature-libraries/schema-aware/index.d.ts +0 -6
  1476. package/lib/feature-libraries/schema-aware/index.d.ts.map +0 -1
  1477. package/lib/feature-libraries/schema-aware/index.js +0 -6
  1478. package/lib/feature-libraries/schema-aware/index.js.map +0 -1
  1479. package/lib/feature-libraries/schema-aware/schemaAware.d.ts +0 -76
  1480. package/lib/feature-libraries/schema-aware/schemaAware.d.ts.map +0 -1
  1481. package/lib/feature-libraries/schema-aware/schemaAware.js.map +0 -1
  1482. package/lib/simple-tree/nodeKeys.d.ts +0 -41
  1483. package/lib/simple-tree/nodeKeys.d.ts.map +0 -1
  1484. package/lib/simple-tree/nodeKeys.js.map +0 -1
  1485. package/lib/simple-tree/schemaCaching.d.ts.map +0 -1
  1486. package/lib/simple-tree/schemaCaching.js.map +0 -1
  1487. package/lib/simple-tree/schemaCreationUtilities.d.ts.map +0 -1
  1488. package/lib/simple-tree/schemaCreationUtilities.js.map +0 -1
  1489. package/lib/simple-tree/schemaFactory.d.ts.map +0 -1
  1490. package/lib/simple-tree/schemaFactory.js.map +0 -1
  1491. package/lib/simple-tree/schemaFactoryRecursive.d.ts.map +0 -1
  1492. package/lib/simple-tree/schemaFactoryRecursive.js.map +0 -1
  1493. package/lib/simple-tree/testRecursiveDomain.d.ts +0 -61
  1494. package/lib/simple-tree/testRecursiveDomain.d.ts.map +0 -1
  1495. package/lib/simple-tree/testRecursiveDomain.js.map +0 -1
  1496. package/lib/simple-tree/tree.d.ts.map +0 -1
  1497. package/lib/simple-tree/tree.js +0 -66
  1498. package/lib/simple-tree/tree.js.map +0 -1
  1499. package/lib/simple-tree/treeNodeApi.d.ts +0 -159
  1500. package/lib/simple-tree/treeNodeApi.d.ts.map +0 -1
  1501. package/lib/simple-tree/treeNodeApi.js.map +0 -1
  1502. package/lib/simple-tree/types.d.ts.map +0 -1
  1503. package/lib/simple-tree/types.js.map +0 -1
  1504. package/src/feature-libraries/contextuallyTyped.ts +0 -582
  1505. package/src/feature-libraries/schema-aware/README.md +0 -19
  1506. package/src/feature-libraries/schema-aware/index.ts +0 -16
  1507. package/src/feature-libraries/schema-aware/schemaAware.ts +0 -135
  1508. package/src/simple-tree/nodeKeys.ts +0 -42
  1509. /package/dist/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
  1510. /package/lib/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
@@ -8,7 +8,6 @@ import { BTree } from "@tylerbu/sorted-btree-es6";
8
8
 
9
9
  import type { ICodecFamily } from "../../codec/index.js";
10
10
  import {
11
- type ChangeAtomIdMap,
12
11
  type ChangeEncodingContext,
13
12
  type ChangeFamily,
14
13
  type ChangeFamilyEditor,
@@ -37,9 +36,7 @@ import {
37
36
  mapCursorField,
38
37
  replaceAtomRevisions,
39
38
  revisionMetadataSourceFromInfo,
40
- setInChangeAtomIdMap,
41
39
  areEqualChangeAtomIds,
42
- getFromChangeAtomIdMap,
43
40
  type ChangeAtomId,
44
41
  } from "../../core/index.js";
45
42
  import {
@@ -47,19 +44,11 @@ import {
47
44
  type IdAllocator,
48
45
  type Mutable,
49
46
  brand,
50
- deleteFromNestedMap,
51
47
  fail,
52
- forEachInNestedMap,
53
- getOrAddInMap,
54
48
  idAllocatorFromMaxId,
55
49
  idAllocatorFromState,
56
- nestedMapFromFlatList,
57
- nestedMapToFlatList,
58
- populateNestedMap,
59
- setInNestedMap,
60
- tryGetFromNestedMap,
61
- type NestedMap,
62
50
  type RangeQueryResult,
51
+ getOrAddInMapLazy,
63
52
  } from "../../util/index.js";
64
53
  import {
65
54
  type TreeChunk,
@@ -86,6 +75,7 @@ import { type FieldKindWithEditor, withEditor } from "./fieldKindWithEditor.js";
86
75
  import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
87
76
  import type { GenericChangeset } from "./genericFieldKindTypes.js";
88
77
  import type {
78
+ ChangeAtomIdBTree,
89
79
  CrossFieldKeyRange,
90
80
  CrossFieldKeyTable,
91
81
  FieldChange,
@@ -211,35 +201,31 @@ export class ModularChangeFamily
211
201
  const { revInfos, maxId } = getRevInfoFromTaggedChanges(changes);
212
202
  const idState: IdAllocationState = { maxId };
213
203
 
214
- return changes.reduce(
215
- (change1, change2) =>
216
- makeAnonChange(this.composePair(change1, change2, revInfos, idState)),
217
- makeAnonChange({
218
- fieldChanges: new Map(),
219
- nodeChanges: new Map(),
220
- nodeToParent: new Map(),
221
- nodeAliases: new Map(),
222
- crossFieldKeys: newCrossFieldKeyTable(),
223
- }),
224
- ).change;
204
+ if (changes.length === 0) {
205
+ return makeModularChangeset();
206
+ }
207
+
208
+ return changes
209
+ .map((change) => change.change)
210
+ .reduce((change1, change2) => this.composePair(change1, change2, revInfos, idState));
225
211
  }
226
212
 
227
213
  private composePair(
228
- change1: TaggedChange<ModularChangeset>,
229
- change2: TaggedChange<ModularChangeset>,
214
+ change1: ModularChangeset,
215
+ change2: ModularChangeset,
230
216
  revInfos: RevisionInfo[],
231
217
  idState: IdAllocationState,
232
218
  ): ModularChangeset {
233
219
  const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } =
234
- this.composeAllFields(change1.change, change2.change, revInfos, idState);
220
+ this.composeAllFields(change1, change2, revInfos, idState);
235
221
 
236
- const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers([
222
+ const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(
237
223
  change1,
238
224
  change2,
239
- ]);
225
+ );
240
226
 
241
227
  return makeModularChangeset(
242
- this.pruneFieldMap(fieldChanges, nodeChanges),
228
+ fieldChanges,
243
229
  nodeChanges,
244
230
  nodeToParent,
245
231
  nodeAliases,
@@ -262,10 +248,10 @@ export class ModularChangeFamily
262
248
  if (hasConflicts(change1) && hasConflicts(change2)) {
263
249
  return {
264
250
  fieldChanges: new Map(),
265
- nodeChanges: new Map(),
266
- nodeToParent: new Map(),
267
- nodeAliases: new Map(),
268
- crossFieldKeys: newBTree(),
251
+ nodeChanges: newTupleBTree(),
252
+ nodeToParent: newTupleBTree(),
253
+ nodeAliases: newTupleBTree(),
254
+ crossFieldKeys: newTupleBTree(),
269
255
  };
270
256
  } else if (hasConflicts(change1)) {
271
257
  return change2;
@@ -280,21 +266,21 @@ export class ModularChangeFamily
280
266
 
281
267
  // We merge nodeChanges, nodeToParent, and nodeAliases from the two changesets.
282
268
  // The merged tables will have correct entries for all nodes which are only referenced in one of the input changesets.
283
- // During composeFieldMaps and processInvalidatedElements we will find all nodes referenced in both input changesets
269
+ // During composeFieldMaps and composeInvalidatedElements we will find all nodes referenced in both input changesets
284
270
  // and adjust these tables as necessary.
285
271
  // Note that when merging these tables we may encounter key collisions and will arbitrarily drop values in that case.
286
272
  // A collision for a node ID means that that node is referenced in both changesets
287
273
  // (since we assume that if two changesets use the same node ID they are referring to the same node),
288
274
  // therefore all collisions will be addressed when processing the intersection of the changesets.
289
- const composedNodeChanges: ChangeAtomIdMap<NodeChangeset> = mergeNestedMaps(
290
- change1.nodeChanges,
291
- change2.nodeChanges,
275
+ const composedNodeChanges: ChangeAtomIdBTree<NodeChangeset> = brand(
276
+ mergeBTrees(change1.nodeChanges, change2.nodeChanges),
292
277
  );
293
278
 
294
- const composedNodeToParent = mergeNestedMaps(change1.nodeToParent, change2.nodeToParent);
295
- const composedNodeAliases: ChangeAtomIdMap<NodeId> = mergeNestedMaps(
296
- change1.nodeAliases,
297
- change2.nodeAliases,
279
+ const composedNodeToParent: ChangeAtomIdBTree<FieldId> = brand(
280
+ mergeBTrees(change1.nodeToParent, change2.nodeToParent),
281
+ );
282
+ const composedNodeAliases: ChangeAtomIdBTree<NodeId> = brand(
283
+ mergeBTrees(change1.nodeAliases, change2.nodeAliases),
298
284
  );
299
285
 
300
286
  const composedFields = this.composeFieldMaps(
@@ -305,7 +291,7 @@ export class ModularChangeFamily
305
291
  revisionMetadata,
306
292
  );
307
293
 
308
- this.processInvalidatedElements(
294
+ this.composeInvalidatedElements(
309
295
  crossFieldTable,
310
296
  composedFields,
311
297
  composedNodeChanges,
@@ -371,12 +357,12 @@ export class ModularChangeFamily
371
357
  *
372
358
  * Updating an element may invalidate further elements. This function runs until there is no more invalidation.
373
359
  */
374
- private processInvalidatedElements(
360
+ private composeInvalidatedElements(
375
361
  table: ComposeTable,
376
362
  composedFields: FieldChangeMap,
377
- composedNodes: ChangeAtomIdMap<NodeChangeset>,
378
- composedNodeToParent: ChangeAtomIdMap<FieldId>,
379
- nodeAliases: ChangeAtomIdMap<NodeId>,
363
+ composedNodes: ChangeAtomIdBTree<NodeChangeset>,
364
+ composedNodeToParent: ChangeAtomIdBTree<FieldId>,
365
+ nodeAliases: ChangeAtomIdBTree<NodeId>,
380
366
  genId: IdAllocator,
381
367
  metadata: RevisionMetadataSource,
382
368
  ): void {
@@ -460,7 +446,7 @@ export class ModularChangeFamily
460
446
  areBaseFields: boolean,
461
447
  affectedFields: BTree<FieldIdKey, true>,
462
448
  composedFields: FieldChangeMap,
463
- composedNodes: ChangeAtomIdMap<NodeChangeset>,
449
+ composedNodes: ChangeAtomIdBTree<NodeChangeset>,
464
450
  genId: IdAllocator,
465
451
  metadata: RevisionMetadataSource,
466
452
  ): void {
@@ -604,11 +590,11 @@ export class ModularChangeFamily
604
590
  }
605
591
 
606
592
  private composeNodesById(
607
- nodeChanges1: ChangeAtomIdMap<NodeChangeset>,
608
- nodeChanges2: ChangeAtomIdMap<NodeChangeset>,
609
- composedNodes: ChangeAtomIdMap<NodeChangeset>,
610
- composedNodeToParent: ChangeAtomIdMap<FieldId>,
611
- nodeAliases: ChangeAtomIdMap<NodeId>,
593
+ nodeChanges1: ChangeAtomIdBTree<NodeChangeset>,
594
+ nodeChanges2: ChangeAtomIdBTree<NodeChangeset>,
595
+ composedNodes: ChangeAtomIdBTree<NodeChangeset>,
596
+ composedNodeToParent: ChangeAtomIdBTree<FieldId>,
597
+ nodeAliases: ChangeAtomIdBTree<NodeId>,
612
598
  id1: NodeId,
613
599
  id2: NodeId,
614
600
  idAllocator: IdAllocator,
@@ -628,12 +614,12 @@ export class ModularChangeFamily
628
614
  setInChangeAtomIdMap(composedNodes, id1, composedNodeChangeset);
629
615
 
630
616
  if (!areEqualChangeAtomIds(id1, id2)) {
631
- deleteFromNestedMap(composedNodes, id2.revision, id2.localId);
632
- deleteFromNestedMap(composedNodeToParent, id2.revision, id2.localId);
617
+ composedNodes.delete([id2.revision, id2.localId]);
618
+ composedNodeToParent.delete([id2.revision, id2.localId]);
633
619
  setInChangeAtomIdMap(nodeAliases, id2, id1);
634
620
 
635
621
  // We need to delete id1 to avoid forming a cycle in case id1 already had an alias.
636
- deleteFromNestedMap(nodeAliases, id1.revision, id1.localId);
622
+ nodeAliases.delete([id1.revision, id1.localId]);
637
623
  }
638
624
 
639
625
  crossFieldTable.composedNodes.add(composedNodeChangeset);
@@ -679,9 +665,7 @@ export class ModularChangeFamily
679
665
  isRollback: boolean,
680
666
  ): ModularChangeset {
681
667
  // Rollback changesets destroy the nodes created by the change being rolled back.
682
- const destroys = isRollback
683
- ? invertBuilds(change.change.builds, change.revision)
684
- : undefined;
668
+ const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;
685
669
 
686
670
  // Destroys only occur in rollback changesets, which are never inverted.
687
671
  assert(
@@ -705,12 +689,11 @@ export class ModularChangeFamily
705
689
  }
706
690
 
707
691
  const genId: IdAllocator = idAllocatorFromMaxId(change.change.maxId ?? -1);
708
- const invertedNodeToParent = cloneNestedMap(change.change.nodeToParent);
709
692
 
710
693
  const crossFieldTable: InvertTable = {
711
694
  ...newCrossFieldTable<FieldChange>(),
712
695
  originalFieldToContext: new Map(),
713
- invertedNodeToParent,
696
+ invertedNodeToParent: brand(change.change.nodeToParent.clone()),
714
697
  };
715
698
 
716
699
  const { revInfos } = getRevInfoFromTaggedChanges([change]);
@@ -725,12 +708,10 @@ export class ModularChangeFamily
725
708
  revisionMetadata,
726
709
  );
727
710
 
728
- const invertedNodes: ChangeAtomIdMap<NodeChangeset> = new Map();
729
- forEachInNestedMap(change.change.nodeChanges, (nodeChangeset, revision, localId) => {
730
- setInNestedMap(
731
- invertedNodes,
732
- revision,
733
- localId,
711
+ const invertedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
712
+ change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
713
+ invertedNodes.set(
714
+ [revision, localId],
734
715
  this.invertNodeChange(
735
716
  nodeChangeset,
736
717
  { revision, localId },
@@ -773,7 +754,7 @@ export class ModularChangeFamily
773
754
  return makeModularChangeset(
774
755
  invertedFields,
775
756
  invertedNodes,
776
- invertedNodeToParent,
757
+ crossFieldTable.invertedNodeToParent,
777
758
  change.change.nodeAliases,
778
759
  crossFieldKeys,
779
760
  genId.getMaxId(),
@@ -856,15 +837,16 @@ export class ModularChangeFamily
856
837
  newChange: change,
857
838
  baseChange: over.change,
858
839
  baseFieldToContext: new Map(),
859
- baseToRebasedNodeId: new Map(),
840
+ baseToRebasedNodeId: newTupleBTree(),
860
841
  rebasedFields: new Set(),
861
- rebasedNodeToParent: cloneNestedMap(change.nodeToParent),
842
+ rebasedNodeToParent: brand(change.nodeToParent.clone()),
862
843
  rebasedCrossFieldKeys: brand(change.crossFieldKeys.clone()),
863
844
  nodeIdPairs: [],
864
- affectedBaseFields: newBTree(),
845
+ affectedBaseFields: newTupleBTree(),
846
+ fieldsWithUnattachedChild: new Set(),
865
847
  };
866
848
 
867
- let constraintState = newConstraintState(change.constraintViolationCount ?? 0);
849
+ const constraintState = newConstraintState(change.constraintViolationCount ?? 0);
868
850
 
869
851
  const getBaseRevisions = (): RevisionTag[] =>
870
852
  revisionInfoFromTaggedChange(over).map((info) => info.revision);
@@ -875,7 +857,7 @@ export class ModularChangeFamily
875
857
  getBaseRevisions,
876
858
  };
877
859
 
878
- const rebasedNodes: ChangeAtomIdMap<NodeChangeset> = cloneNestedMap(change.nodeChanges);
860
+ const rebasedNodes: ChangeAtomIdBTree<NodeChangeset> = brand(change.nodeChanges.clone());
879
861
 
880
862
  const rebasedFields = this.rebaseIntersectingFields(
881
863
  crossFieldTable,
@@ -885,64 +867,14 @@ export class ModularChangeFamily
885
867
  rebaseMetadata,
886
868
  );
887
869
 
888
- this.rebaseFieldsWithoutNewChanges(
870
+ this.rebaseInvalidatedElements(
889
871
  rebasedFields,
890
872
  rebasedNodes,
891
873
  crossFieldTable,
892
- genId,
893
874
  rebaseMetadata,
875
+ genId,
894
876
  );
895
877
 
896
- if (crossFieldTable.invalidatedFields.size > 0) {
897
- const fieldsToUpdate = crossFieldTable.invalidatedFields;
898
- crossFieldTable.invalidatedFields = new Set();
899
- constraintState = newConstraintState(change.constraintViolationCount ?? 0);
900
- for (const field of fieldsToUpdate) {
901
- const context = crossFieldTable.baseFieldToContext.get(field);
902
- assert(context !== undefined, 0x852 /* Every field should have a context */);
903
- const {
904
- changeHandler,
905
- change1: fieldChangeset,
906
- change2: baseChangeset,
907
- } = this.normalizeFieldChanges(
908
- context.newChange,
909
- context.baseChange,
910
- genId,
911
- revisionMetadata,
912
- );
913
-
914
- const rebaseChild = (
915
- curr: NodeId | undefined,
916
- base: NodeId | undefined,
917
- ): NodeId | undefined => {
918
- if (curr !== undefined) {
919
- return curr;
920
- }
921
-
922
- if (base !== undefined) {
923
- for (const id of context.baseNodeIds) {
924
- if (areEqualChangeAtomIds(base, id)) {
925
- return base;
926
- }
927
- }
928
- }
929
-
930
- return undefined;
931
- };
932
-
933
- context.rebasedChange.change = brand(
934
- changeHandler.rebaser.rebase(
935
- fieldChangeset,
936
- baseChangeset,
937
- rebaseChild,
938
- genId,
939
- new RebaseManager(crossFieldTable, field, context.fieldId),
940
- rebaseMetadata,
941
- ),
942
- );
943
- }
944
- }
945
-
946
878
  this.updateConstraintsForFields(
947
879
  rebasedFields,
948
880
  NodeAttachState.Attached,
@@ -969,7 +901,7 @@ export class ModularChangeFamily
969
901
  // TODO: Can we also handle additional passes in this method?
970
902
  private rebaseIntersectingFields(
971
903
  crossFieldTable: RebaseTable,
972
- rebasedNodes: ChangeAtomIdMap<NodeChangeset>,
904
+ rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
973
905
  genId: IdAllocator,
974
906
  constraintState: ConstraintState,
975
907
  metadata: RebaseRevisionMetadata,
@@ -1006,7 +938,7 @@ export class ModularChangeFamily
1006
938
  // This processes fields which have no new changes but have been invalidated by another field.
1007
939
  private rebaseFieldsWithoutNewChanges(
1008
940
  rebasedFields: FieldChangeMap,
1009
- rebasedNodes: ChangeAtomIdMap<NodeChangeset>,
941
+ rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
1010
942
  crossFieldTable: RebaseTable,
1011
943
  genId: IdAllocator,
1012
944
  metadata: RebaseRevisionMetadata,
@@ -1024,7 +956,10 @@ export class ModularChangeFamily
1024
956
  baseNodeId,
1025
957
  ).get(fieldKey);
1026
958
 
1027
- assert(baseFieldChange !== undefined, "Cross field key registered for empty field");
959
+ assert(
960
+ baseFieldChange !== undefined,
961
+ 0x9c2 /* Cross field key registered for empty field */,
962
+ );
1028
963
  if (crossFieldTable.baseFieldToContext.has(baseFieldChange)) {
1029
964
  // This field has already been processed because there were changes to rebase.
1030
965
  continue;
@@ -1037,7 +972,7 @@ export class ModularChangeFamily
1037
972
  baseChild: NodeId | undefined,
1038
973
  stateChange: NodeAttachState | undefined,
1039
974
  ): NodeId | undefined => {
1040
- assert(child === undefined, "There should be no new changes in this field");
975
+ assert(child === undefined, 0x9c3 /* There should be no new changes in this field */);
1041
976
  return undefined;
1042
977
  };
1043
978
 
@@ -1089,9 +1024,102 @@ export class ModularChangeFamily
1089
1024
  }
1090
1025
  }
1091
1026
 
1027
+ private rebaseInvalidatedElements(
1028
+ rebasedFields: FieldChangeMap,
1029
+ rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
1030
+ table: RebaseTable,
1031
+ metadata: RebaseRevisionMetadata,
1032
+ idAllocator: IdAllocator,
1033
+ ): void {
1034
+ this.rebaseFieldsWithoutNewChanges(
1035
+ rebasedFields,
1036
+ rebasedNodes,
1037
+ table,
1038
+ idAllocator,
1039
+ metadata,
1040
+ );
1041
+
1042
+ this.rebaseFieldsWithUnattachedChild(table, metadata, idAllocator);
1043
+ this.rebaseInvalidatedFields(table, metadata, idAllocator);
1044
+ }
1045
+
1046
+ private rebaseInvalidatedFields(
1047
+ crossFieldTable: RebaseTable,
1048
+ rebaseMetadata: RebaseRevisionMetadata,
1049
+ genId: IdAllocator,
1050
+ ): void {
1051
+ const fieldsToUpdate = crossFieldTable.invalidatedFields;
1052
+ crossFieldTable.invalidatedFields = new Set();
1053
+ for (const field of fieldsToUpdate) {
1054
+ this.rebaseInvalidatedField(field, crossFieldTable, rebaseMetadata, genId);
1055
+ }
1056
+ }
1057
+
1058
+ private rebaseFieldsWithUnattachedChild(
1059
+ table: RebaseTable,
1060
+ metadata: RebaseRevisionMetadata,
1061
+ idAllocator: IdAllocator,
1062
+ ): void {
1063
+ for (const field of table.fieldsWithUnattachedChild) {
1064
+ table.invalidatedFields.delete(field);
1065
+ this.rebaseInvalidatedField(field, table, metadata, idAllocator, true);
1066
+ }
1067
+ }
1068
+
1069
+ private rebaseInvalidatedField(
1070
+ baseField: FieldChange,
1071
+ crossFieldTable: RebaseTable,
1072
+ rebaseMetadata: RebaseRevisionMetadata,
1073
+ genId: IdAllocator,
1074
+ allowInval = false,
1075
+ ): void {
1076
+ const context = crossFieldTable.baseFieldToContext.get(baseField);
1077
+ assert(context !== undefined, 0x852 /* Every field should have a context */);
1078
+ const {
1079
+ changeHandler,
1080
+ change1: fieldChangeset,
1081
+ change2: baseChangeset,
1082
+ } = this.normalizeFieldChanges(
1083
+ context.newChange,
1084
+ context.baseChange,
1085
+ genId,
1086
+ rebaseMetadata,
1087
+ );
1088
+
1089
+ const rebaseChild = (
1090
+ curr: NodeId | undefined,
1091
+ base: NodeId | undefined,
1092
+ ): NodeId | undefined => {
1093
+ if (curr !== undefined) {
1094
+ return curr;
1095
+ }
1096
+
1097
+ if (base !== undefined) {
1098
+ for (const id of context.baseNodeIds) {
1099
+ if (areEqualChangeAtomIds(base, id)) {
1100
+ return base;
1101
+ }
1102
+ }
1103
+ }
1104
+
1105
+ return undefined;
1106
+ };
1107
+
1108
+ context.rebasedChange.change = brand(
1109
+ changeHandler.rebaser.rebase(
1110
+ fieldChangeset,
1111
+ baseChangeset,
1112
+ rebaseChild,
1113
+ genId,
1114
+ new RebaseManager(crossFieldTable, baseField, context.fieldId, allowInval),
1115
+ rebaseMetadata,
1116
+ ),
1117
+ );
1118
+ }
1119
+
1092
1120
  private attachRebasedField(
1093
1121
  rebasedFields: FieldChangeMap,
1094
- rebasedNodes: ChangeAtomIdMap<NodeChangeset>,
1122
+ rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
1095
1123
  table: RebaseTable,
1096
1124
  rebasedField: FieldChange,
1097
1125
  { nodeId, field: fieldKey }: FieldId,
@@ -1109,7 +1137,7 @@ export class ModularChangeFamily
1109
1137
  return;
1110
1138
  }
1111
1139
 
1112
- assert(!rebasedNode.fieldChanges.has(fieldKey), "Expected an empty field");
1140
+ assert(!rebasedNode.fieldChanges.has(fieldKey), 0x9c4 /* Expected an empty field */);
1113
1141
  rebasedNode.fieldChanges.set(fieldKey, rebasedField);
1114
1142
  return;
1115
1143
  }
@@ -1136,7 +1164,7 @@ export class ModularChangeFamily
1136
1164
 
1137
1165
  private attachRebasedNode(
1138
1166
  rebasedFields: FieldChangeMap,
1139
- rebasedNodes: ChangeAtomIdMap<NodeChangeset>,
1167
+ rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
1140
1168
  table: RebaseTable,
1141
1169
  baseNodeId: NodeId,
1142
1170
  parentFieldIdBase: FieldId,
@@ -1155,9 +1183,9 @@ export class ModularChangeFamily
1155
1183
  const context = table.baseFieldToContext.get(baseFieldChange);
1156
1184
  if (context !== undefined) {
1157
1185
  // We've already processed this field.
1158
- // The new child node can be attached when processing invalidated fields.
1186
+ // The new child node will be attached in rebaseFieldsWithUnattachedChild.
1159
1187
  context.baseNodeIds.push(baseNodeId);
1160
- table.invalidatedFields.add(baseFieldChange);
1188
+ table.fieldsWithUnattachedChild.add(baseFieldChange);
1161
1189
  return;
1162
1190
  }
1163
1191
 
@@ -1311,7 +1339,7 @@ export class ModularChangeFamily
1311
1339
  fields: FieldChangeMap,
1312
1340
  parentAttachState: NodeAttachState,
1313
1341
  constraintState: ConstraintState,
1314
- nodes: ChangeAtomIdMap<NodeChangeset>,
1342
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
1315
1343
  ): void {
1316
1344
  for (const field of fields.values()) {
1317
1345
  const handler = getChangeHandler(this.fieldKinds, field.fieldKind);
@@ -1330,11 +1358,9 @@ export class ModularChangeFamily
1330
1358
  nodeId: NodeId,
1331
1359
  attachState: NodeAttachState,
1332
1360
  constraintState: ConstraintState,
1333
- nodes: ChangeAtomIdMap<NodeChangeset>,
1361
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
1334
1362
  ): void {
1335
- const node =
1336
- tryGetFromNestedMap(nodes, nodeId.revision, nodeId.localId) ?? fail("Unknown node ID");
1337
-
1363
+ const node = nodes.get([nodeId.revision, nodeId.localId]) ?? fail("Unknown node ID");
1338
1364
  if (node.nodeExistsConstraint !== undefined) {
1339
1365
  const isNowViolated = attachState === NodeAttachState.Detached;
1340
1366
  if (node.nodeExistsConstraint.violated !== isNowViolated) {
@@ -1353,7 +1379,7 @@ export class ModularChangeFamily
1353
1379
 
1354
1380
  private pruneFieldMap(
1355
1381
  changeset: FieldChangeMap | undefined,
1356
- nodeMap: ChangeAtomIdMap<NodeChangeset>,
1382
+ nodeMap: ChangeAtomIdBTree<NodeChangeset>,
1357
1383
  ): FieldChangeMap | undefined {
1358
1384
  if (changeset === undefined) {
1359
1385
  return undefined;
@@ -1377,7 +1403,7 @@ export class ModularChangeFamily
1377
1403
 
1378
1404
  private pruneNodeChange(
1379
1405
  nodeId: NodeId,
1380
- nodeMap: ChangeAtomIdMap<NodeChangeset>,
1406
+ nodeMap: ChangeAtomIdBTree<NodeChangeset>,
1381
1407
  ): NodeId | undefined {
1382
1408
  const changeset = nodeChangeFromId(nodeMap, nodeId);
1383
1409
  const prunedFields =
@@ -1391,7 +1417,7 @@ export class ModularChangeFamily
1391
1417
  }
1392
1418
 
1393
1419
  if (isEmptyNodeChangeset(prunedChange)) {
1394
- deleteFromNestedMap(nodeMap, nodeId.revision, nodeId.localId);
1420
+ nodeMap.delete([nodeId.revision, nodeId.localId]);
1395
1421
  return undefined;
1396
1422
  } else {
1397
1423
  setInChangeAtomIdMap(nodeMap, nodeId, prunedChange);
@@ -1415,25 +1441,25 @@ export class ModularChangeFamily
1415
1441
  newRevision,
1416
1442
  );
1417
1443
 
1418
- const updatedNodes: ChangeAtomIdMap<NodeChangeset> = nestedMapFromFlatList(
1419
- nestedMapToFlatList(change.nodeChanges).map(([revision, id, nodeChangeset]) => [
1420
- replaceRevision(revision, oldRevisions, newRevision),
1421
- id,
1444
+ const updatedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
1445
+ for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {
1446
+ updatedNodes.set(
1447
+ [replaceRevision(revision, oldRevisions, newRevision), id],
1422
1448
  this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision),
1423
- ]),
1424
- );
1449
+ );
1450
+ }
1425
1451
 
1426
- const updatedNodeToParent: ChangeAtomIdMap<FieldId> = nestedMapFromFlatList(
1427
- nestedMapToFlatList(change.nodeToParent).map(([revision, id, fieldId]) => [
1428
- replaceRevision(revision, oldRevisions, newRevision),
1429
- id,
1452
+ const updatedNodeToParent: ChangeAtomIdBTree<FieldId> = newTupleBTree();
1453
+ for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {
1454
+ updatedNodeToParent.set(
1455
+ [replaceRevision(revision, oldRevisions, newRevision), id],
1430
1456
  replaceFieldIdRevision(
1431
1457
  normalizeFieldId(fieldId, change.nodeAliases),
1432
1458
  oldRevisions,
1433
1459
  newRevision,
1434
1460
  ),
1435
- ]),
1436
- );
1461
+ );
1462
+ }
1437
1463
 
1438
1464
  const updated: Mutable<ModularChangeset> = {
1439
1465
  ...change,
@@ -1442,7 +1468,7 @@ export class ModularChangeFamily
1442
1468
  nodeToParent: updatedNodeToParent,
1443
1469
 
1444
1470
  // We've updated all references to old node IDs, so we no longer need an alias table.
1445
- nodeAliases: new Map(),
1471
+ nodeAliases: newTupleBTree(),
1446
1472
  crossFieldKeys: replaceCrossFieldKeyTableRevisions(
1447
1473
  change.crossFieldKeys,
1448
1474
  oldRevisions,
@@ -1514,11 +1540,11 @@ export class ModularChangeFamily
1514
1540
 
1515
1541
  private makeCrossFieldKeyTable(
1516
1542
  fields: FieldChangeMap,
1517
- nodes: ChangeAtomIdMap<NodeChangeset>,
1543
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
1518
1544
  ): CrossFieldKeyTable {
1519
1545
  const keys: CrossFieldKeyTable = newCrossFieldKeyTable();
1520
1546
  this.populateCrossFieldKeyTableForFieldMap(keys, fields, undefined);
1521
- forEachInNestedMap(nodes, (node, revision, localId) => {
1547
+ nodes.forEachPair(([revision, localId], node) => {
1522
1548
  if (node.fieldChanges !== undefined) {
1523
1549
  this.populateCrossFieldKeyTableForFieldMap(keys, node.fieldChanges, {
1524
1550
  revision,
@@ -1559,9 +1585,9 @@ function replaceCrossFieldKeyTableRevisions(
1559
1585
  table: CrossFieldKeyTable,
1560
1586
  oldRevisions: Set<RevisionTag | undefined>,
1561
1587
  newRevision: RevisionTag | undefined,
1562
- nodeAliases: ChangeAtomIdMap<NodeId>,
1588
+ nodeAliases: ChangeAtomIdBTree<NodeId>,
1563
1589
  ): CrossFieldKeyTable {
1564
- const updated: CrossFieldKeyTable = newBTree();
1590
+ const updated: CrossFieldKeyTable = newTupleBTree();
1565
1591
  table.forEachPair(([target, revision, id, count], field) => {
1566
1592
  const updatedKey: CrossFieldKeyRange = [
1567
1593
  target,
@@ -1596,122 +1622,92 @@ function replaceRevision(
1596
1622
  }
1597
1623
 
1598
1624
  function replaceIdMapRevisions<T>(
1599
- map: ChangeAtomIdMap<T>,
1625
+ map: ChangeAtomIdBTree<T>,
1600
1626
  oldRevisions: Set<RevisionTag | undefined>,
1601
1627
  newRevision: RevisionTag | undefined,
1602
- ): ChangeAtomIdMap<T> {
1603
- return nestedMapFromFlatList(
1604
- nestedMapToFlatList(map).map(([revision, id, value]) => [
1605
- replaceRevision(revision, oldRevisions, newRevision),
1606
- id,
1607
- value,
1608
- ]),
1609
- );
1628
+ ): ChangeAtomIdBTree<T> {
1629
+ const updated: ChangeAtomIdBTree<T> = newTupleBTree();
1630
+ for (const [[revision, id], value] of map.entries()) {
1631
+ updated.set([replaceRevision(revision, oldRevisions, newRevision), id], value);
1632
+ }
1633
+
1634
+ return updated;
1610
1635
  }
1611
1636
 
1612
1637
  interface BuildsDestroysAndRefreshers {
1613
- readonly allBuilds: ChangeAtomIdMap<TreeChunk>;
1614
- readonly allDestroys: ChangeAtomIdMap<number>;
1615
- readonly allRefreshers: ChangeAtomIdMap<TreeChunk>;
1638
+ readonly allBuilds: ChangeAtomIdBTree<TreeChunk>;
1639
+ readonly allDestroys: ChangeAtomIdBTree<number>;
1640
+ readonly allRefreshers: ChangeAtomIdBTree<TreeChunk>;
1616
1641
  }
1617
1642
 
1618
1643
  function composeBuildsDestroysAndRefreshers(
1619
- changes: TaggedChange<ModularChangeset>[],
1644
+ change1: ModularChangeset,
1645
+ change2: ModularChangeset,
1620
1646
  ): BuildsDestroysAndRefreshers {
1621
- const allBuilds: ChangeAtomIdMap<TreeChunk> = new Map();
1622
- const allDestroys: ChangeAtomIdMap<number> = new Map();
1623
- const allRefreshers: ChangeAtomIdMap<TreeChunk> = new Map();
1624
- for (const taggedChange of changes) {
1625
- const revision = revisionFromTaggedChange(taggedChange);
1626
- const change = taggedChange.change;
1627
- if (change.builds) {
1628
- for (const [revisionKey, innerMap] of change.builds) {
1629
- const setRevisionKey = revisionKey ?? revision;
1630
- const innerDstMap = getOrAddInMap(
1631
- allBuilds,
1632
- setRevisionKey,
1633
- new Map<ChangesetLocalId, TreeChunk>(),
1647
+ // Duplicate builds can happen in compositions of commits that needed to include detached tree refreshers (e.g., undos):
1648
+ // In that case, it's possible for the refreshers to contain different trees because the latter
1649
+ // refresher may already reflect the changes made by the commit that includes the earlier
1650
+ // refresher. This composition includes the changes made by the commit that includes the
1651
+ // earlier refresher, so we need to include the build for the earlier refresher, otherwise
1652
+ // the produced changeset will build a tree one which those changes have already been applied
1653
+ // and also try to apply the changes again, effectively applying them twice.
1654
+ // Note that it would in principle be possible to adopt the later build and exclude from the
1655
+ // composition all the changes already reflected on the tree, but that is not something we
1656
+ // care to support at this time.
1657
+ const allBuilds: ChangeAtomIdBTree<TreeChunk> = brand(
1658
+ mergeBTrees(change1.builds ?? newTupleBTree(), change2.builds ?? newTupleBTree(), true),
1659
+ );
1660
+
1661
+ const allDestroys: ChangeAtomIdBTree<number> = brand(
1662
+ mergeBTrees(change1.destroys ?? newTupleBTree(), change2.destroys ?? newTupleBTree()),
1663
+ );
1664
+
1665
+ const allRefreshers: ChangeAtomIdBTree<TreeChunk> = brand(
1666
+ mergeBTrees(
1667
+ change1.refreshers ?? newTupleBTree(),
1668
+ change2.refreshers ?? newTupleBTree(),
1669
+ true,
1670
+ ),
1671
+ );
1672
+
1673
+ if (change1.destroys !== undefined && change2.builds !== undefined) {
1674
+ for (const [key, chunk] of change2.builds.entries()) {
1675
+ const destroyCount = change1.destroys.get(key);
1676
+ if (destroyCount !== undefined) {
1677
+ assert(
1678
+ destroyCount === chunk.topLevelLength,
1679
+ 0x89b /* Expected build and destroy to have the same length */,
1634
1680
  );
1635
- for (const [id, chunk] of innerMap) {
1636
- // Check for duplicate builds and prefer earlier ones.
1637
- // This can happen in compositions of commits that needed to include detached tree refreshers (e.g., undos):
1638
- // In that case, it's possible for the refreshers to contain different trees because the latter
1639
- // refresher may already reflect the changes made by the commit that includes the earlier
1640
- // refresher. This composition includes the changes made by the commit that includes the
1641
- // earlier refresher, so we need to include the build for the earlier refresher, otherwise
1642
- // the produced changeset will build a tree one which those changes have already been applied
1643
- // and also try to apply the changes again, effectively applying them twice.
1644
- // Note that it would in principle be possible to adopt the later build and exclude from the
1645
- // composition all the changes already reflected on the tree, but that is not something we
1646
- // care to support at this time.
1647
- if (!innerDstMap.has(id)) {
1648
- // Check for earlier destroys that this build might cancel-out with.
1649
- const destroyCount = tryGetFromNestedMap(allDestroys, setRevisionKey, id);
1650
- if (destroyCount === undefined) {
1651
- innerDstMap.set(id, chunk);
1652
- } else {
1653
- assert(
1654
- destroyCount === chunk.topLevelLength,
1655
- 0x89b /* Expected build and destroy to have the same length */,
1656
- );
1657
- deleteFromNestedMap(allDestroys, setRevisionKey, id);
1658
- }
1659
- }
1660
- }
1661
- if (innerDstMap.size === 0) {
1662
- allBuilds.delete(setRevisionKey);
1663
- }
1681
+
1682
+ allBuilds.delete(key);
1683
+ allDestroys.delete(key);
1664
1684
  }
1665
1685
  }
1666
- if (change.destroys !== undefined) {
1667
- for (const [revisionKey, innerMap] of change.destroys) {
1668
- const setRevisionKey = revisionKey ?? revision;
1669
- const innerDstMap = getOrAddInMap(
1670
- allDestroys,
1671
- setRevisionKey,
1672
- new Map<ChangesetLocalId, number>(),
1686
+ }
1687
+
1688
+ if (change1.builds !== undefined && change2.destroys !== undefined) {
1689
+ for (const [key, chunk] of change1.builds.entries()) {
1690
+ const destroyCount = change2.destroys.get(key);
1691
+ if (destroyCount !== undefined) {
1692
+ assert(
1693
+ destroyCount === chunk.topLevelLength,
1694
+ 0x9f0 /* Expected build and destroy to have the same length */,
1673
1695
  );
1674
- for (const [id, count] of innerMap) {
1675
- // Check for earlier builds that this destroy might cancel-out with.
1676
- const chunk = tryGetFromNestedMap(allBuilds, setRevisionKey, id);
1677
- if (chunk === undefined) {
1678
- innerDstMap.set(id, count);
1679
- } else {
1680
- assert(
1681
- count === chunk.topLevelLength,
1682
- 0x89c /* Expected build and destroy to have the same length */,
1683
- );
1684
- deleteFromNestedMap(allBuilds, setRevisionKey, id);
1685
- }
1686
- }
1687
- if (innerDstMap.size === 0) {
1688
- allDestroys.delete(setRevisionKey);
1689
- }
1696
+
1697
+ allBuilds.delete(key);
1698
+ allDestroys.delete(key);
1690
1699
  }
1691
1700
  }
1692
- // add all refreshers while preferring earlier ones
1693
- if (change.refreshers) {
1694
- populateNestedMap(change.refreshers, allRefreshers, false);
1695
- }
1696
1701
  }
1702
+
1697
1703
  return { allBuilds, allDestroys, allRefreshers };
1698
1704
  }
1699
1705
 
1700
1706
  function invertBuilds(
1701
- builds: ChangeAtomIdMap<TreeChunk> | undefined,
1702
- fallbackRevision: RevisionTag | undefined,
1703
- ): ChangeAtomIdMap<number> | undefined {
1707
+ builds: ChangeAtomIdBTree<TreeChunk> | undefined,
1708
+ ): ChangeAtomIdBTree<number> | undefined {
1704
1709
  if (builds !== undefined) {
1705
- const destroys: ChangeAtomIdMap<number> = new Map();
1706
- for (const [revision, innerBuildMap] of builds) {
1707
- const initializedRevision = revision ?? fallbackRevision;
1708
- const innerDestroyMap: Map<ChangesetLocalId, number> = new Map();
1709
- for (const [id, chunk] of innerBuildMap) {
1710
- innerDestroyMap.set(id, chunk.topLevelLength);
1711
- }
1712
- destroys.set(initializedRevision, innerDestroyMap);
1713
- }
1714
- return destroys;
1710
+ return brand(builds.mapValues((chunk) => chunk.topLevelLength));
1715
1711
  }
1716
1712
  return undefined;
1717
1713
  }
@@ -1740,7 +1736,7 @@ export function* relevantRemovedRoots(
1740
1736
 
1741
1737
  function* relevantRemovedRootsFromFields(
1742
1738
  change: FieldChangeMap,
1743
- nodeChanges: ChangeAtomIdMap<NodeChangeset>,
1739
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
1744
1740
  fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
1745
1741
  ): Iterable<DeltaDetachedNodeId> {
1746
1742
  for (const [_, fieldChange] of change) {
@@ -1776,15 +1772,13 @@ export function updateRefreshers(
1776
1772
  removedRoots: Iterable<DeltaDetachedNodeId>,
1777
1773
  requireRefreshers: boolean = true,
1778
1774
  ): ModularChangeset {
1779
- const refreshers: ChangeAtomIdMap<TreeChunk> = new Map();
1775
+ const refreshers: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
1780
1776
  const chunkLengths: Map<RevisionTag | undefined, BTree<number, number>> = new Map();
1781
1777
 
1782
1778
  if (change.builds !== undefined) {
1783
- for (const [major, buildsMap] of change.builds) {
1784
- const lengthTree = getOrAddInMap(chunkLengths, major, new BTree());
1785
- for (const [id, chunk] of buildsMap) {
1786
- lengthTree.set(id, chunk.topLevelLength);
1787
- }
1779
+ for (const [[revision, id], chunk] of change.builds.entries()) {
1780
+ const lengthTree = getOrAddInMapLazy(chunkLengths, revision, () => new BTree());
1781
+ lengthTree.set(id, chunk.topLevelLength);
1788
1782
  }
1789
1783
  }
1790
1784
 
@@ -1810,7 +1804,7 @@ export function updateRefreshers(
1810
1804
  if (node === undefined) {
1811
1805
  assert(!requireRefreshers, 0x8cd /* detached node should exist */);
1812
1806
  } else {
1813
- setInNestedMap(refreshers, root.major, root.minor, node);
1807
+ refreshers.set([root.major, brand(root.minor)], node);
1814
1808
  }
1815
1809
  }
1816
1810
 
@@ -1870,12 +1864,12 @@ export function intoDelta(
1870
1864
  }
1871
1865
  if (change.destroys !== undefined && change.destroys.size > 0) {
1872
1866
  const destroys: DeltaDetachedNodeDestruction[] = [];
1873
- forEachInNestedMap(change.destroys, (count, major, minor) => {
1867
+ for (const [[major, minor], count] of change.destroys.entries()) {
1874
1868
  destroys.push({
1875
1869
  id: makeDetachedNodeId(major, minor),
1876
1870
  count,
1877
1871
  });
1878
- });
1872
+ }
1879
1873
  rootDelta.destroy = destroys;
1880
1874
  }
1881
1875
  if (change.refreshers && change.refreshers.size > 0) {
@@ -1885,10 +1879,10 @@ export function intoDelta(
1885
1879
  }
1886
1880
 
1887
1881
  function copyDetachedNodes(
1888
- detachedNodes: ChangeAtomIdMap<TreeChunk>,
1882
+ detachedNodes: ChangeAtomIdBTree<TreeChunk>,
1889
1883
  ): DeltaDetachedNodeBuild[] | undefined {
1890
1884
  const copiedDetachedNodes: DeltaDetachedNodeBuild[] = [];
1891
- forEachInNestedMap(detachedNodes, (chunk, major, minor) => {
1885
+ for (const [[major, minor], chunk] of detachedNodes.entries()) {
1892
1886
  if (chunk.topLevelLength > 0) {
1893
1887
  const trees = mapCursorField(chunk.cursor(), (c) =>
1894
1888
  cursorForMapTreeNode(mapTreeFromCursor(c)),
@@ -1898,7 +1892,7 @@ function copyDetachedNodes(
1898
1892
  trees,
1899
1893
  });
1900
1894
  }
1901
- });
1895
+ }
1902
1896
  return copiedDetachedNodes.length > 0 ? copiedDetachedNodes : undefined;
1903
1897
  }
1904
1898
 
@@ -1907,7 +1901,7 @@ function copyDetachedNodes(
1907
1901
  */
1908
1902
  function intoDeltaImpl(
1909
1903
  change: FieldChangeMap,
1910
- nodeChanges: ChangeAtomIdMap<NodeChangeset>,
1904
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
1911
1905
  idAllocator: MemoizedIdRangeAllocator,
1912
1906
  fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
1913
1907
  ): Map<FieldKey, DeltaFieldChanges> {
@@ -1930,7 +1924,7 @@ function intoDeltaImpl(
1930
1924
 
1931
1925
  function deltaFromNodeChange(
1932
1926
  change: NodeChangeset,
1933
- nodeChanges: ChangeAtomIdMap<NodeChangeset>,
1927
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
1934
1928
  idAllocator: MemoizedIdRangeAllocator,
1935
1929
  fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
1936
1930
  ): DeltaFieldMap {
@@ -1942,7 +1936,6 @@ function deltaFromNodeChange(
1942
1936
  }
1943
1937
 
1944
1938
  /**
1945
- * @internal
1946
1939
  * @param revInfos - This should describe the revision being rebased and all revisions in the rebase path,
1947
1940
  * even if not part of the current base changeset.
1948
1941
  * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `revInfos` must include
@@ -2009,7 +2002,7 @@ interface CrossFieldTable<TFieldData> {
2009
2002
 
2010
2003
  interface InvertTable extends CrossFieldTable<FieldChange> {
2011
2004
  originalFieldToContext: Map<FieldChange, InvertContext>;
2012
- invertedNodeToParent: ChangeAtomIdMap<FieldId>;
2005
+ invertedNodeToParent: ChangeAtomIdBTree<FieldId>;
2013
2006
  }
2014
2007
 
2015
2008
  interface InvertContext {
@@ -2026,9 +2019,9 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
2026
2019
  * to the context for the field.
2027
2020
  */
2028
2021
  readonly baseFieldToContext: Map<FieldChange, RebaseFieldContext>;
2029
- readonly baseToRebasedNodeId: ChangeAtomIdMap<NodeId>;
2022
+ readonly baseToRebasedNodeId: ChangeAtomIdBTree<NodeId>;
2030
2023
  readonly rebasedFields: Set<FieldChange>;
2031
- readonly rebasedNodeToParent: ChangeAtomIdMap<FieldId>;
2024
+ readonly rebasedNodeToParent: ChangeAtomIdBTree<FieldId>;
2032
2025
  readonly rebasedCrossFieldKeys: CrossFieldKeyTable;
2033
2026
 
2034
2027
  /**
@@ -2036,6 +2029,11 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
2036
2029
  */
2037
2030
  readonly nodeIdPairs: [NodeId, NodeId, NodeAttachState | undefined][];
2038
2031
  readonly affectedBaseFields: TupleBTree<FieldIdKey, boolean>;
2032
+
2033
+ /**
2034
+ * Set of base fields which contain a node which needs to be attached in the rebased changeset.
2035
+ */
2036
+ readonly fieldsWithUnattachedChild: Set<FieldChange>;
2039
2037
  }
2040
2038
 
2041
2039
  type FieldIdKey = [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
@@ -2063,12 +2061,12 @@ function newComposeTable(
2063
2061
  newChange,
2064
2062
  fieldToContext: new Map(),
2065
2063
  newFieldToBaseField: new Map(),
2066
- newToBaseNodeId: new Map(),
2064
+ newToBaseNodeId: newTupleBTree(),
2067
2065
  composedNodes: new Set(),
2068
2066
  pendingCompositions: {
2069
2067
  nodeIdsToCompose: [],
2070
- affectedBaseFields: newBTree(),
2071
- affectedNewFields: newBTree(),
2068
+ affectedBaseFields: newTupleBTree(),
2069
+ affectedNewFields: newTupleBTree(),
2072
2070
  },
2073
2071
  };
2074
2072
  }
@@ -2082,7 +2080,7 @@ interface ComposeTable extends CrossFieldTable<FieldChange> {
2082
2080
  */
2083
2081
  readonly fieldToContext: Map<FieldChange, ComposeFieldContext>;
2084
2082
  readonly newFieldToBaseField: Map<FieldChange, FieldChange>;
2085
- readonly newToBaseNodeId: ChangeAtomIdMap<NodeId>;
2083
+ readonly newToBaseNodeId: ChangeAtomIdBTree<NodeId>;
2086
2084
  readonly composedNodes: Set<NodeChangeset>;
2087
2085
  readonly pendingCompositions: PendingCompositions;
2088
2086
  }
@@ -2122,7 +2120,6 @@ function newCrossFieldTable<T>(): CrossFieldTable<T> {
2122
2120
  }
2123
2121
 
2124
2122
  /**
2125
- * @internal
2126
2123
  */
2127
2124
  interface ConstraintState {
2128
2125
  violationCount: number;
@@ -2233,7 +2230,7 @@ class InvertManager extends CrossFieldManagerI<FieldChange> {
2233
2230
  id: ChangesetLocalId,
2234
2231
  count: number,
2235
2232
  ): void {
2236
- assert(false, "Keys should not be moved manually during invert");
2233
+ assert(false, 0x9c5 /* Keys should not be moved manually during invert */);
2237
2234
  }
2238
2235
 
2239
2236
  private get table(): InvertTable {
@@ -2269,7 +2266,7 @@ class RebaseManager extends CrossFieldManagerI<FieldChange> {
2269
2266
 
2270
2267
  assert(
2271
2268
  newFieldIds.length === 0,
2272
- "TODO: Modifying a cross-field key from the new changeset is currently unsupported",
2269
+ 0x9c6 /* TODO: Modifying a cross-field key from the new changeset is currently unsupported */,
2273
2270
  );
2274
2271
 
2275
2272
  const baseFieldIds = getFieldsForCrossFieldKey(this.table.baseChange, [
@@ -2279,7 +2276,10 @@ class RebaseManager extends CrossFieldManagerI<FieldChange> {
2279
2276
  count,
2280
2277
  ]);
2281
2278
 
2282
- assert(baseFieldIds.length > 0, "Cross field key not registered in base or new change");
2279
+ assert(
2280
+ baseFieldIds.length > 0,
2281
+ 0x9c7 /* Cross field key not registered in base or new change */,
2282
+ );
2283
2283
 
2284
2284
  for (const baseFieldId of baseFieldIds) {
2285
2285
  this.table.affectedBaseFields.set(
@@ -2356,7 +2356,7 @@ class ComposeManager extends CrossFieldManagerI<FieldChange> {
2356
2356
 
2357
2357
  assert(
2358
2358
  baseFieldIds.length > 0,
2359
- "Cross field key not registered in base or new change",
2359
+ 0x9c8 /* Cross field key not registered in base or new change */,
2360
2360
  );
2361
2361
 
2362
2362
  for (const baseFieldId of baseFieldIds) {
@@ -2390,22 +2390,22 @@ class ComposeManager extends CrossFieldManagerI<FieldChange> {
2390
2390
 
2391
2391
  function makeModularChangeset(
2392
2392
  fieldChanges: FieldChangeMap | undefined = undefined,
2393
- nodeChanges: ChangeAtomIdMap<NodeChangeset> | undefined = undefined,
2394
- nodeToParent: ChangeAtomIdMap<FieldId> | undefined = undefined,
2395
- nodeAliases: ChangeAtomIdMap<NodeId> | undefined = undefined,
2393
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset> | undefined = undefined,
2394
+ nodeToParent: ChangeAtomIdBTree<FieldId> | undefined = undefined,
2395
+ nodeAliases: ChangeAtomIdBTree<NodeId> | undefined = undefined,
2396
2396
  crossFieldKeys: CrossFieldKeyTable | undefined = undefined,
2397
2397
  maxId: number = -1,
2398
2398
  revisions: readonly RevisionInfo[] | undefined = undefined,
2399
2399
  constraintViolationCount: number | undefined = undefined,
2400
- builds?: ChangeAtomIdMap<TreeChunk>,
2401
- destroys?: ChangeAtomIdMap<number>,
2402
- refreshers?: ChangeAtomIdMap<TreeChunk>,
2400
+ builds?: ChangeAtomIdBTree<TreeChunk>,
2401
+ destroys?: ChangeAtomIdBTree<number>,
2402
+ refreshers?: ChangeAtomIdBTree<TreeChunk>,
2403
2403
  ): ModularChangeset {
2404
2404
  const changeset: Mutable<ModularChangeset> = {
2405
2405
  fieldChanges: fieldChanges ?? new Map(),
2406
- nodeChanges: nodeChanges ?? new Map(),
2407
- nodeToParent: nodeToParent ?? new Map(),
2408
- nodeAliases: nodeAliases ?? new Map(),
2406
+ nodeChanges: nodeChanges ?? newTupleBTree(),
2407
+ nodeToParent: nodeToParent ?? newTupleBTree(),
2408
+ nodeAliases: nodeAliases ?? newTupleBTree(),
2409
2409
  crossFieldKeys: crossFieldKeys ?? newCrossFieldKeyTable(),
2410
2410
  };
2411
2411
 
@@ -2470,14 +2470,12 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2470
2470
  if (content.mode === CursorLocationType.Fields && content.getFieldLength() === 0) {
2471
2471
  return { type: "global" };
2472
2472
  }
2473
- const builds: ChangeAtomIdMap<TreeChunk> = new Map();
2474
- const innerMap = new Map();
2475
- builds.set(undefined, innerMap);
2473
+ const builds: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
2476
2474
  const chunk =
2477
2475
  content.mode === CursorLocationType.Fields
2478
2476
  ? chunkFieldSingle(content, defaultChunkPolicy)
2479
2477
  : chunkTree(content, defaultChunkPolicy);
2480
- innerMap.set(firstId, chunk);
2478
+ builds.set([undefined, firstId], chunk);
2481
2479
 
2482
2480
  return {
2483
2481
  type: "global",
@@ -2504,8 +2502,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2504
2502
  const modularChange = buildModularChangesetFromField(
2505
2503
  field,
2506
2504
  { fieldKind, change },
2507
- new Map(),
2508
- new Map(),
2505
+ newTupleBTree(),
2506
+ newTupleBTree(),
2509
2507
  newCrossFieldKeyTable(),
2510
2508
  this.idAllocator,
2511
2509
  crossFieldKeys,
@@ -2539,8 +2537,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2539
2537
  fieldKind: change.fieldKind,
2540
2538
  change: change.change,
2541
2539
  },
2542
- new Map(),
2543
- new Map(),
2540
+ newTupleBTree(),
2541
+ newTupleBTree(),
2544
2542
  newCrossFieldKeyTable(),
2545
2543
  this.idAllocator,
2546
2544
  getChangeHandler(this.fieldKinds, change.fieldKind).getCrossFieldKeys(
@@ -2572,8 +2570,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2572
2570
  buildModularChangesetFromNode(
2573
2571
  path,
2574
2572
  nodeChange,
2575
- new Map(),
2576
- new Map(),
2573
+ newTupleBTree(),
2574
+ newTupleBTree(),
2577
2575
  newCrossFieldKeyTable(),
2578
2576
  this.idAllocator,
2579
2577
  ),
@@ -2584,8 +2582,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2584
2582
  function buildModularChangesetFromField(
2585
2583
  path: FieldUpPath,
2586
2584
  fieldChange: FieldChange,
2587
- nodeChanges: ChangeAtomIdMap<NodeChangeset>,
2588
- nodeToParent: ChangeAtomIdMap<FieldId>,
2585
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
2586
+ nodeToParent: ChangeAtomIdBTree<FieldId>,
2589
2587
  crossFieldKeys: CrossFieldKeyTable,
2590
2588
  idAllocator: IdAllocator = idAllocatorFromMaxId(),
2591
2589
  localCrossFieldKeys: CrossFieldKeyRange[] = [],
@@ -2646,8 +2644,8 @@ function buildModularChangesetFromField(
2646
2644
  function buildModularChangesetFromNode(
2647
2645
  path: UpPath,
2648
2646
  nodeChange: NodeChangeset,
2649
- nodeChanges: ChangeAtomIdMap<NodeChangeset>,
2650
- nodeToParent: ChangeAtomIdMap<FieldId>,
2647
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
2648
+ nodeToParent: ChangeAtomIdBTree<FieldId>,
2651
2649
  crossFieldKeys: CrossFieldKeyTable,
2652
2650
  idAllocator: IdAllocator,
2653
2651
  nodeId: NodeId = { localId: brand(idAllocator.allocate()) },
@@ -2676,7 +2674,6 @@ function buildModularChangesetFromNode(
2676
2674
  }
2677
2675
 
2678
2676
  /**
2679
- * @internal
2680
2677
  */
2681
2678
  export interface FieldEditDescription {
2682
2679
  type: "field";
@@ -2686,15 +2683,13 @@ export interface FieldEditDescription {
2686
2683
  }
2687
2684
 
2688
2685
  /**
2689
- * @internal
2690
2686
  */
2691
2687
  export interface GlobalEditDescription {
2692
2688
  type: "global";
2693
- builds?: ChangeAtomIdMap<TreeChunk>;
2689
+ builds?: ChangeAtomIdBTree<TreeChunk>;
2694
2690
  }
2695
2691
 
2696
2692
  /**
2697
- * @internal
2698
2693
  */
2699
2694
  export type EditDescription = FieldEditDescription | GlobalEditDescription;
2700
2695
 
@@ -2745,43 +2740,30 @@ function revisionInfoFromTaggedChange(
2745
2740
  return revInfos;
2746
2741
  }
2747
2742
 
2748
- function revisionFromTaggedChange(
2749
- change: TaggedChange<ModularChangeset>,
2750
- ): RevisionTag | undefined {
2751
- return change.revision ?? revisionFromRevInfos(change.change.revisions);
2752
- }
2743
+ function mergeBTrees<K extends readonly unknown[], V>(
2744
+ tree1: TupleBTree<K, V> | undefined,
2745
+ tree2: TupleBTree<K, V> | undefined,
2746
+ preferLeft = true,
2747
+ ): TupleBTree<K, V> {
2748
+ if (tree1 === undefined) {
2749
+ return tree2 !== undefined ? brand(tree2.clone()) : newTupleBTree<K, V>();
2750
+ }
2753
2751
 
2754
- function revisionFromRevInfos(
2755
- revInfos: undefined | readonly RevisionInfo[],
2756
- ): RevisionTag | undefined {
2757
- if (revInfos === undefined || revInfos.length !== 1) {
2758
- return undefined;
2752
+ const result: TupleBTree<K, V> = brand(tree1.clone());
2753
+ if (tree2 === undefined) {
2754
+ return result;
2759
2755
  }
2760
- return revInfos[0].revision;
2761
- }
2762
2756
 
2763
- function mergeBTrees<K, V>(tree1: BTree<K, V>, tree2: BTree<K, V>): BTree<K, V> {
2764
- const result = tree1.clone();
2765
- tree2.forEachPair((k, v) => {
2766
- result.set(k, v);
2767
- });
2757
+ for (const [key, value] of tree2.entries()) {
2758
+ result.set(key, value, !preferLeft);
2759
+ }
2768
2760
 
2769
2761
  return result;
2770
2762
  }
2771
2763
 
2772
- function mergeNestedMaps<K1, K2, V>(
2773
- map1: NestedMap<K1, K2, V>,
2774
- map2: NestedMap<K1, K2, V>,
2775
- ): NestedMap<K1, K2, V> {
2776
- const merged: NestedMap<K1, K2, V> = new Map();
2777
- populateNestedMap(map1, merged, true);
2778
- populateNestedMap(map2, merged, true);
2779
- return merged;
2780
- }
2781
-
2782
2764
  function fieldChangeFromId(
2783
2765
  fields: FieldChangeMap,
2784
- nodes: ChangeAtomIdMap<NodeChangeset>,
2766
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
2785
2767
  id: FieldId,
2786
2768
  ): FieldChange {
2787
2769
  const fieldMap = fieldMapFromNodeId(fields, nodes, id.nodeId);
@@ -2790,7 +2772,7 @@ function fieldChangeFromId(
2790
2772
 
2791
2773
  function fieldMapFromNodeId(
2792
2774
  rootFieldMap: FieldChangeMap,
2793
- nodes: ChangeAtomIdMap<NodeChangeset>,
2775
+ nodes: ChangeAtomIdBTree<NodeChangeset>,
2794
2776
  nodeId: NodeId | undefined,
2795
2777
  ): FieldChangeMap {
2796
2778
  if (nodeId === undefined) {
@@ -2798,7 +2780,7 @@ function fieldMapFromNodeId(
2798
2780
  }
2799
2781
 
2800
2782
  const node = nodeChangeFromId(nodes, nodeId);
2801
- assert(node.fieldChanges !== undefined, "Expected node to have field changes");
2783
+ assert(node.fieldChanges !== undefined, 0x9c9 /* Expected node to have field changes */);
2802
2784
  return node.fieldChanges;
2803
2785
  }
2804
2786
 
@@ -2814,9 +2796,9 @@ function rebasedNodeIdFromBaseNodeId(table: RebaseTable, baseId: NodeId): NodeId
2814
2796
  return getFromChangeAtomIdMap(table.baseToRebasedNodeId, baseId) ?? baseId;
2815
2797
  }
2816
2798
 
2817
- function nodeChangeFromId(nodes: ChangeAtomIdMap<NodeChangeset>, id: NodeId): NodeChangeset {
2799
+ function nodeChangeFromId(nodes: ChangeAtomIdBTree<NodeChangeset>, id: NodeId): NodeChangeset {
2818
2800
  const node = getFromChangeAtomIdMap(nodes, id);
2819
- assert(node !== undefined, "Unknown node ID");
2801
+ assert(node !== undefined, 0x9ca /* Unknown node ID */);
2820
2802
  return node;
2821
2803
  }
2822
2804
 
@@ -2850,7 +2832,7 @@ function replaceFieldIdRevision(
2850
2832
 
2851
2833
  export function getParentFieldId(changeset: ModularChangeset, nodeId: NodeId): FieldId {
2852
2834
  const parentId = getFromChangeAtomIdMap(changeset.nodeToParent, nodeId);
2853
- assert(parentId !== undefined, "Parent field should be defined");
2835
+ assert(parentId !== undefined, 0x9cb /* Parent field should be defined */);
2854
2836
  return normalizeFieldId(parentId, changeset.nodeAliases);
2855
2837
  }
2856
2838
 
@@ -2951,7 +2933,7 @@ function setInCrossFieldKeyTable(
2951
2933
  table.set([target, revision, id, count], value);
2952
2934
  }
2953
2935
 
2954
- function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdMap<NodeId>): FieldId {
2936
+ function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdBTree<NodeId>): FieldId {
2955
2937
  return fieldId.nodeId !== undefined
2956
2938
  ? { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) }
2957
2939
  : fieldId;
@@ -2960,7 +2942,7 @@ function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdMap<NodeId>
2960
2942
  /**
2961
2943
  * @returns The canonical form of nodeId, according to nodeAliases
2962
2944
  */
2963
- function normalizeNodeId(nodeId: NodeId, nodeAliases: ChangeAtomIdMap<NodeId>): NodeId {
2945
+ function normalizeNodeId(nodeId: NodeId, nodeAliases: ChangeAtomIdBTree<NodeId>): NodeId {
2964
2946
  let currentId = nodeId;
2965
2947
 
2966
2948
  // eslint-disable-next-line no-constant-condition
@@ -2979,11 +2961,13 @@ function hasConflicts(change: ModularChangeset): boolean {
2979
2961
  }
2980
2962
 
2981
2963
  export function newCrossFieldKeyTable(): CrossFieldKeyTable {
2982
- return newBTree();
2964
+ return newTupleBTree();
2983
2965
  }
2984
2966
 
2985
- function newBTree<K extends readonly unknown[], V>(): TupleBTree<K, V> {
2986
- return brand(new BTree<K, V>(undefined, compareTuples));
2967
+ export function newTupleBTree<K extends readonly unknown[], V>(
2968
+ entries?: [K, V][],
2969
+ ): TupleBTree<K, V> {
2970
+ return brand(new BTree<K, V>(entries, compareTuples));
2987
2971
  }
2988
2972
 
2989
2973
  // This assumes that the arrays are the same length.
@@ -2993,7 +2977,14 @@ function compareTuples(arrayA: readonly unknown[], arrayB: readonly unknown[]):
2993
2977
  const a = arrayA[i] as any;
2994
2978
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2995
2979
  const b = arrayB[i] as any;
2996
- if (a < b) {
2980
+
2981
+ // Less-than and greater-than always return false if either value is undefined,
2982
+ // so we handle undefined separately, treating it as less than all other values.
2983
+ if (a === undefined && b !== undefined) {
2984
+ return -1;
2985
+ } else if (b === undefined && a !== undefined) {
2986
+ return 1;
2987
+ } else if (a < b) {
2997
2988
  return -1;
2998
2989
  } else if (a > b) {
2999
2990
  return 1;
@@ -3005,14 +2996,19 @@ function compareTuples(arrayA: readonly unknown[], arrayB: readonly unknown[]):
3005
2996
 
3006
2997
  interface ModularChangesetContent {
3007
2998
  fieldChanges: FieldChangeMap;
3008
- nodeChanges: ChangeAtomIdMap<NodeChangeset>;
3009
- nodeToParent: ChangeAtomIdMap<FieldId>;
3010
- nodeAliases: ChangeAtomIdMap<NodeId>;
2999
+ nodeChanges: ChangeAtomIdBTree<NodeChangeset>;
3000
+ nodeToParent: ChangeAtomIdBTree<FieldId>;
3001
+ nodeAliases: ChangeAtomIdBTree<NodeId>;
3011
3002
  crossFieldKeys: CrossFieldKeyTable;
3012
3003
  }
3013
3004
 
3014
- function cloneNestedMap<K1, K2, V>(map: NestedMap<K1, K2, V>): NestedMap<K1, K2, V> {
3015
- const cloned: NestedMap<K1, K2, V> = new Map();
3016
- populateNestedMap(map, cloned, true);
3017
- return cloned;
3005
+ function getFromChangeAtomIdMap<T>(
3006
+ map: ChangeAtomIdBTree<T>,
3007
+ id: ChangeAtomId,
3008
+ ): T | undefined {
3009
+ return map.get([id.revision, id.localId]);
3010
+ }
3011
+
3012
+ function setInChangeAtomIdMap<T>(map: ChangeAtomIdBTree<T>, id: ChangeAtomId, value: T): void {
3013
+ map.set([id.revision, id.localId], value);
3018
3014
  }