@fluidframework/tree 2.4.0-294316 → 2.4.0-297385

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 (755) hide show
  1. package/api-report/tree.alpha.api.md +58 -28
  2. package/api-report/tree.beta.api.md +38 -27
  3. package/api-report/tree.legacy.alpha.api.md +38 -27
  4. package/api-report/tree.legacy.public.api.md +38 -27
  5. package/api-report/tree.public.api.md +38 -27
  6. package/dist/alpha.d.ts +6 -0
  7. package/dist/beta.d.ts +3 -0
  8. package/dist/core/change-family/changeFamily.d.ts +2 -2
  9. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  10. package/dist/core/change-family/changeFamily.js.map +1 -1
  11. package/dist/core/change-family/editBuilder.d.ts +3 -2
  12. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  13. package/dist/core/change-family/editBuilder.js.map +1 -1
  14. package/dist/core/rebase/changeRebaser.d.ts +2 -1
  15. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  16. package/dist/core/rebase/changeRebaser.js.map +1 -1
  17. package/dist/core/rebase/utils.js +1 -1
  18. package/dist/core/rebase/utils.js.map +1 -1
  19. package/dist/core/schema-stored/schema.d.ts +7 -0
  20. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  21. package/dist/core/schema-stored/schema.js +9 -0
  22. package/dist/core/schema-stored/schema.js.map +1 -1
  23. package/dist/core/tree/anchorSet.d.ts +1 -2
  24. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  25. package/dist/core/tree/anchorSet.js +2 -2
  26. package/dist/core/tree/anchorSet.js.map +1 -1
  27. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.js +13 -2
  29. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  30. package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  31. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  32. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
  33. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  34. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
  35. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  36. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
  37. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  38. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  39. package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
  40. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  41. package/dist/feature-libraries/editableTreeBinder.js +1 -539
  42. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  43. package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
  44. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  45. package/dist/feature-libraries/flex-tree/context.js +3 -3
  46. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  47. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  48. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  49. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  51. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
  53. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  55. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  56. package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
  57. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  58. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  59. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  60. package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
  61. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  62. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  63. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  64. package/dist/feature-libraries/index.d.ts +4 -7
  65. package/dist/feature-libraries/index.d.ts.map +1 -1
  66. package/dist/feature-libraries/index.js +5 -31
  67. package/dist/feature-libraries/index.js.map +1 -1
  68. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  69. package/dist/feature-libraries/mitigatedChangeFamily.js +4 -4
  70. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  71. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
  72. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  73. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  74. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
  75. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  76. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +179 -60
  77. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  78. package/dist/feature-libraries/optional-field/optionalField.d.ts +10 -9
  79. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  80. package/dist/feature-libraries/optional-field/optionalField.js +9 -7
  81. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  82. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
  83. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  84. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -8
  85. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  86. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  87. package/dist/feature-libraries/sequence-field/compose.js +32 -20
  88. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  89. package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  90. package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  91. package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  92. package/dist/feature-libraries/sequence-field/invert.d.ts +6 -1
  93. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  94. package/dist/feature-libraries/sequence-field/invert.js +25 -9
  95. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  96. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
  97. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  98. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
  99. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  100. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
  101. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  102. package/dist/feature-libraries/typed-schema/flexList.js +1 -13
  103. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  104. package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
  105. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  106. package/dist/feature-libraries/typed-schema/index.js +1 -19
  107. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  108. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  109. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  110. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
  111. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  112. package/dist/index.d.ts +3 -3
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +2 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/internalTypes.d.ts +1 -1
  117. package/dist/internalTypes.d.ts.map +1 -1
  118. package/dist/internalTypes.js.map +1 -1
  119. package/dist/legacy.d.ts +3 -0
  120. package/dist/packageVersion.d.ts +1 -1
  121. package/dist/packageVersion.js +1 -1
  122. package/dist/packageVersion.js.map +1 -1
  123. package/dist/public.d.ts +3 -0
  124. package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  125. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  126. package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
  127. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  128. package/dist/shared-tree/index.d.ts +3 -3
  129. package/dist/shared-tree/index.d.ts.map +1 -1
  130. package/dist/shared-tree/index.js +2 -3
  131. package/dist/shared-tree/index.js.map +1 -1
  132. package/dist/shared-tree/schematizeTree.d.ts +1 -40
  133. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  134. package/dist/shared-tree/schematizeTree.js +2 -11
  135. package/dist/shared-tree/schematizeTree.js.map +1 -1
  136. package/dist/shared-tree/schematizingTreeView.d.ts +8 -7
  137. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  138. package/dist/shared-tree/schematizingTreeView.js +16 -8
  139. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +19 -2
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +11 -3
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  145. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeFamily.js +4 -4
  147. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  148. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
  149. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  150. package/dist/shared-tree/sharedTreeEditBuilder.js +15 -11
  151. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  152. package/dist/shared-tree/treeCheckout.d.ts +71 -41
  153. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  154. package/dist/shared-tree/treeCheckout.js +119 -86
  155. package/dist/shared-tree/treeCheckout.js.map +1 -1
  156. package/dist/shared-tree-core/branch.d.ts +9 -13
  157. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  158. package/dist/shared-tree-core/branch.js +21 -25
  159. package/dist/shared-tree-core/branch.js.map +1 -1
  160. package/dist/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
  161. package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  162. package/dist/shared-tree-core/defaultResubmitMachine.js +4 -4
  163. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  164. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  165. package/dist/shared-tree-core/editManager.js +1 -1
  166. package/dist/shared-tree-core/editManager.js.map +1 -1
  167. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  168. package/dist/shared-tree-core/sharedTreeCore.js +2 -2
  169. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  170. package/dist/simple-tree/api/create.d.ts +1 -1
  171. package/dist/simple-tree/api/create.d.ts.map +1 -1
  172. package/dist/simple-tree/api/create.js +11 -13
  173. package/dist/simple-tree/api/create.js.map +1 -1
  174. package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
  175. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  176. package/dist/simple-tree/api/getJsonSchema.js +1 -1
  177. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  178. package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
  179. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  180. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  181. package/dist/simple-tree/api/index.d.ts +2 -1
  182. package/dist/simple-tree/api/index.d.ts.map +1 -1
  183. package/dist/simple-tree/api/index.js +3 -1
  184. package/dist/simple-tree/api/index.js.map +1 -1
  185. package/dist/simple-tree/api/schemaFactory.d.ts +6 -6
  186. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  187. package/dist/simple-tree/api/schemaFactory.js +15 -2
  188. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  189. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  190. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  191. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  192. package/dist/simple-tree/api/simpleSchema.d.ts +14 -10
  193. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
  194. package/dist/simple-tree/api/simpleSchema.js.map +1 -1
  195. package/dist/simple-tree/api/tree.d.ts +12 -6
  196. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  197. package/dist/simple-tree/api/tree.js +4 -4
  198. package/dist/simple-tree/api/tree.js.map +1 -1
  199. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  200. package/dist/simple-tree/api/treeNodeApi.js +8 -6
  201. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  202. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  203. package/dist/simple-tree/api/verboseTree.js +6 -10
  204. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  205. package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
  206. package/dist/simple-tree/api/view.d.ts.map +1 -0
  207. package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  208. package/dist/simple-tree/api/view.js.map +1 -0
  209. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  210. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  211. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  212. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  213. package/dist/simple-tree/arrayNode.d.ts +147 -14
  214. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  215. package/dist/simple-tree/arrayNode.js +32 -20
  216. package/dist/simple-tree/arrayNode.js.map +1 -1
  217. package/dist/simple-tree/core/context.d.ts +55 -0
  218. package/dist/simple-tree/core/context.d.ts.map +1 -0
  219. package/dist/simple-tree/core/context.js +60 -0
  220. package/dist/simple-tree/core/context.js.map +1 -0
  221. package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
  222. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  223. package/dist/simple-tree/core/getOrCreateNode.js +36 -0
  224. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
  225. package/dist/simple-tree/core/index.d.ts +7 -3
  226. package/dist/simple-tree/core/index.d.ts.map +1 -1
  227. package/dist/simple-tree/core/index.js +16 -7
  228. package/dist/simple-tree/core/index.js.map +1 -1
  229. package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
  230. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  231. package/dist/simple-tree/core/schemaCaching.js +16 -45
  232. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  233. package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
  234. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  235. package/dist/simple-tree/core/treeNodeKernel.js +94 -58
  236. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  237. package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
  238. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  240. package/dist/simple-tree/core/types.d.ts +0 -5
  241. package/dist/simple-tree/core/types.d.ts.map +1 -1
  242. package/dist/simple-tree/core/types.js.map +1 -1
  243. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  244. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  245. package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
  246. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  247. package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  248. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
  249. package/dist/simple-tree/core/walkSchema.js +34 -0
  250. package/dist/simple-tree/core/walkSchema.js.map +1 -0
  251. package/dist/simple-tree/createContext.d.ts +11 -0
  252. package/dist/simple-tree/createContext.d.ts.map +1 -0
  253. package/dist/simple-tree/createContext.js +25 -0
  254. package/dist/simple-tree/createContext.js.map +1 -0
  255. package/dist/simple-tree/index.d.ts +3 -4
  256. package/dist/simple-tree/index.d.ts.map +1 -1
  257. package/dist/simple-tree/index.js +7 -7
  258. package/dist/simple-tree/index.js.map +1 -1
  259. package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
  260. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  261. package/dist/simple-tree/leafNodeSchema.js +1 -2
  262. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  263. package/dist/simple-tree/mapNode.d.ts +4 -4
  264. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  265. package/dist/simple-tree/mapNode.js +9 -5
  266. package/dist/simple-tree/mapNode.js.map +1 -1
  267. package/dist/simple-tree/objectNode.d.ts +8 -8
  268. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  269. package/dist/simple-tree/objectNode.js +33 -14
  270. package/dist/simple-tree/objectNode.js.map +1 -1
  271. package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
  272. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  273. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  274. package/dist/simple-tree/proxies.d.ts +1 -2
  275. package/dist/simple-tree/proxies.d.ts.map +1 -1
  276. package/dist/simple-tree/proxies.js +6 -22
  277. package/dist/simple-tree/proxies.js.map +1 -1
  278. package/dist/simple-tree/schemaTypes.d.ts +2 -2
  279. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  280. package/dist/simple-tree/schemaTypes.js.map +1 -1
  281. package/dist/simple-tree/toFlexSchema.d.ts +6 -36
  282. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  283. package/dist/simple-tree/toFlexSchema.js +58 -142
  284. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  285. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  286. package/dist/simple-tree/toMapTree.js +2 -2
  287. package/dist/simple-tree/toMapTree.js.map +1 -1
  288. package/dist/simple-tree/treeNodeValid.d.ts +13 -5
  289. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  290. package/dist/simple-tree/treeNodeValid.js +19 -10
  291. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  292. package/dist/simple-tree/typesUnsafe.d.ts +4 -4
  293. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  294. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  295. package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
  296. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
  297. package/dist/simple-tree/walkFieldSchema.js +17 -0
  298. package/dist/simple-tree/walkFieldSchema.js.map +1 -0
  299. package/dist/util/index.d.ts +1 -1
  300. package/dist/util/index.d.ts.map +1 -1
  301. package/dist/util/index.js.map +1 -1
  302. package/dist/util/typeUtils.d.ts +14 -45
  303. package/dist/util/typeUtils.d.ts.map +1 -1
  304. package/dist/util/typeUtils.js.map +1 -1
  305. package/lib/alpha.d.ts +6 -0
  306. package/lib/beta.d.ts +3 -0
  307. package/lib/core/change-family/changeFamily.d.ts +2 -2
  308. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  309. package/lib/core/change-family/changeFamily.js.map +1 -1
  310. package/lib/core/change-family/editBuilder.d.ts +3 -2
  311. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  312. package/lib/core/change-family/editBuilder.js.map +1 -1
  313. package/lib/core/rebase/changeRebaser.d.ts +2 -1
  314. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  315. package/lib/core/rebase/changeRebaser.js.map +1 -1
  316. package/lib/core/rebase/utils.js +1 -1
  317. package/lib/core/rebase/utils.js.map +1 -1
  318. package/lib/core/schema-stored/schema.d.ts +7 -0
  319. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  320. package/lib/core/schema-stored/schema.js +9 -0
  321. package/lib/core/schema-stored/schema.js.map +1 -1
  322. package/lib/core/tree/anchorSet.d.ts +1 -2
  323. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  324. package/lib/core/tree/anchorSet.js +2 -2
  325. package/lib/core/tree/anchorSet.js.map +1 -1
  326. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  327. package/lib/core/tree/detachedFieldIndex.js +13 -2
  328. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  329. package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  330. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  331. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
  332. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  333. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
  334. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  335. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
  336. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  337. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  338. package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
  339. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  340. package/lib/feature-libraries/editableTreeBinder.js +1 -532
  341. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  342. package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
  343. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  344. package/lib/feature-libraries/flex-tree/context.js +3 -3
  345. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  346. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  347. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  348. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  349. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  350. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  351. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
  352. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  353. package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  354. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  355. package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
  356. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  357. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  358. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  359. package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
  360. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  361. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  362. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  363. package/lib/feature-libraries/index.d.ts +4 -7
  364. package/lib/feature-libraries/index.d.ts.map +1 -1
  365. package/lib/feature-libraries/index.js +4 -6
  366. package/lib/feature-libraries/index.js.map +1 -1
  367. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  368. package/lib/feature-libraries/mitigatedChangeFamily.js +4 -4
  369. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  370. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
  371. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  372. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  373. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
  374. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  375. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +180 -61
  376. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  377. package/lib/feature-libraries/optional-field/optionalField.d.ts +10 -9
  378. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  379. package/lib/feature-libraries/optional-field/optionalField.js +9 -7
  380. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  381. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
  382. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  383. package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -8
  384. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  385. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  386. package/lib/feature-libraries/sequence-field/compose.js +32 -20
  387. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  388. package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  389. package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  390. package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  391. package/lib/feature-libraries/sequence-field/invert.d.ts +6 -1
  392. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  393. package/lib/feature-libraries/sequence-field/invert.js +25 -9
  394. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  395. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
  396. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  397. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
  398. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  399. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
  400. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  401. package/lib/feature-libraries/typed-schema/flexList.js +0 -11
  402. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  403. package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
  404. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  405. package/lib/feature-libraries/typed-schema/index.js +0 -3
  406. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  407. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  408. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  409. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
  410. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  411. package/lib/index.d.ts +3 -3
  412. package/lib/index.d.ts.map +1 -1
  413. package/lib/index.js +1 -1
  414. package/lib/index.js.map +1 -1
  415. package/lib/internalTypes.d.ts +1 -1
  416. package/lib/internalTypes.d.ts.map +1 -1
  417. package/lib/internalTypes.js.map +1 -1
  418. package/lib/legacy.d.ts +3 -0
  419. package/lib/packageVersion.d.ts +1 -1
  420. package/lib/packageVersion.js +1 -1
  421. package/lib/packageVersion.js.map +1 -1
  422. package/lib/public.d.ts +3 -0
  423. package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  424. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  425. package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
  426. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  427. package/lib/shared-tree/index.d.ts +3 -3
  428. package/lib/shared-tree/index.d.ts.map +1 -1
  429. package/lib/shared-tree/index.js +1 -2
  430. package/lib/shared-tree/index.js.map +1 -1
  431. package/lib/shared-tree/schematizeTree.d.ts +1 -40
  432. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  433. package/lib/shared-tree/schematizeTree.js +1 -9
  434. package/lib/shared-tree/schematizeTree.js.map +1 -1
  435. package/lib/shared-tree/schematizingTreeView.d.ts +8 -7
  436. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  437. package/lib/shared-tree/schematizingTreeView.js +19 -11
  438. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  439. package/lib/shared-tree/sharedTree.d.ts +19 -2
  440. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  441. package/lib/shared-tree/sharedTree.js +11 -4
  442. package/lib/shared-tree/sharedTree.js.map +1 -1
  443. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  444. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  445. package/lib/shared-tree/sharedTreeChangeFamily.js +4 -4
  446. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  447. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
  448. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  449. package/lib/shared-tree/sharedTreeEditBuilder.js +15 -11
  450. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  451. package/lib/shared-tree/treeCheckout.d.ts +71 -41
  452. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  453. package/lib/shared-tree/treeCheckout.js +122 -89
  454. package/lib/shared-tree/treeCheckout.js.map +1 -1
  455. package/lib/shared-tree-core/branch.d.ts +9 -13
  456. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  457. package/lib/shared-tree-core/branch.js +22 -26
  458. package/lib/shared-tree-core/branch.js.map +1 -1
  459. package/lib/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
  460. package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  461. package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
  462. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  463. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  464. package/lib/shared-tree-core/editManager.js +2 -2
  465. package/lib/shared-tree-core/editManager.js.map +1 -1
  466. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  467. package/lib/shared-tree-core/sharedTreeCore.js +2 -2
  468. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  469. package/lib/simple-tree/api/create.d.ts +1 -1
  470. package/lib/simple-tree/api/create.d.ts.map +1 -1
  471. package/lib/simple-tree/api/create.js +14 -16
  472. package/lib/simple-tree/api/create.js.map +1 -1
  473. package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
  474. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  475. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  476. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  477. package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
  478. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  479. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  480. package/lib/simple-tree/api/index.d.ts +2 -1
  481. package/lib/simple-tree/api/index.d.ts.map +1 -1
  482. package/lib/simple-tree/api/index.js +1 -0
  483. package/lib/simple-tree/api/index.js.map +1 -1
  484. package/lib/simple-tree/api/schemaFactory.d.ts +6 -6
  485. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  486. package/lib/simple-tree/api/schemaFactory.js +15 -2
  487. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  488. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  489. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  490. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  491. package/lib/simple-tree/api/simpleSchema.d.ts +14 -10
  492. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
  493. package/lib/simple-tree/api/simpleSchema.js.map +1 -1
  494. package/lib/simple-tree/api/tree.d.ts +12 -6
  495. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  496. package/lib/simple-tree/api/tree.js +4 -4
  497. package/lib/simple-tree/api/tree.js.map +1 -1
  498. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  499. package/lib/simple-tree/api/treeNodeApi.js +10 -8
  500. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  501. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  502. package/lib/simple-tree/api/verboseTree.js +6 -10
  503. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  504. package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
  505. package/lib/simple-tree/api/view.d.ts.map +1 -0
  506. package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  507. package/lib/simple-tree/api/view.js.map +1 -0
  508. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  509. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  510. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  511. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  512. package/lib/simple-tree/arrayNode.d.ts +147 -14
  513. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  514. package/lib/simple-tree/arrayNode.js +37 -25
  515. package/lib/simple-tree/arrayNode.js.map +1 -1
  516. package/lib/simple-tree/core/context.d.ts +55 -0
  517. package/lib/simple-tree/core/context.d.ts.map +1 -0
  518. package/lib/simple-tree/core/context.js +55 -0
  519. package/lib/simple-tree/core/context.js.map +1 -0
  520. package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
  521. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  522. package/lib/simple-tree/core/getOrCreateNode.js +32 -0
  523. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
  524. package/lib/simple-tree/core/index.d.ts +7 -3
  525. package/lib/simple-tree/core/index.d.ts.map +1 -1
  526. package/lib/simple-tree/core/index.js +6 -2
  527. package/lib/simple-tree/core/index.js.map +1 -1
  528. package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
  529. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  530. package/lib/simple-tree/core/schemaCaching.js +13 -39
  531. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  532. package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
  533. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  534. package/lib/simple-tree/core/treeNodeKernel.js +89 -54
  535. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  536. package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
  537. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  538. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  539. package/lib/simple-tree/core/types.d.ts +0 -5
  540. package/lib/simple-tree/core/types.d.ts.map +1 -1
  541. package/lib/simple-tree/core/types.js.map +1 -1
  542. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  543. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  544. package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
  545. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  546. package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  547. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
  548. package/lib/simple-tree/core/walkSchema.js +29 -0
  549. package/lib/simple-tree/core/walkSchema.js.map +1 -0
  550. package/lib/simple-tree/createContext.d.ts +11 -0
  551. package/lib/simple-tree/createContext.d.ts.map +1 -0
  552. package/lib/simple-tree/createContext.js +21 -0
  553. package/lib/simple-tree/createContext.js.map +1 -0
  554. package/lib/simple-tree/index.d.ts +3 -4
  555. package/lib/simple-tree/index.d.ts.map +1 -1
  556. package/lib/simple-tree/index.js +3 -4
  557. package/lib/simple-tree/index.js.map +1 -1
  558. package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
  559. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  560. package/lib/simple-tree/leafNodeSchema.js +3 -4
  561. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  562. package/lib/simple-tree/mapNode.d.ts +4 -4
  563. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  564. package/lib/simple-tree/mapNode.js +12 -8
  565. package/lib/simple-tree/mapNode.js.map +1 -1
  566. package/lib/simple-tree/objectNode.d.ts +8 -8
  567. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  568. package/lib/simple-tree/objectNode.js +36 -17
  569. package/lib/simple-tree/objectNode.js.map +1 -1
  570. package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
  571. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  572. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  573. package/lib/simple-tree/proxies.d.ts +1 -2
  574. package/lib/simple-tree/proxies.d.ts.map +1 -1
  575. package/lib/simple-tree/proxies.js +7 -22
  576. package/lib/simple-tree/proxies.js.map +1 -1
  577. package/lib/simple-tree/schemaTypes.d.ts +2 -2
  578. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  579. package/lib/simple-tree/schemaTypes.js.map +1 -1
  580. package/lib/simple-tree/toFlexSchema.d.ts +6 -36
  581. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  582. package/lib/simple-tree/toFlexSchema.js +61 -142
  583. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  584. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  585. package/lib/simple-tree/toMapTree.js +4 -4
  586. package/lib/simple-tree/toMapTree.js.map +1 -1
  587. package/lib/simple-tree/treeNodeValid.d.ts +13 -5
  588. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  589. package/lib/simple-tree/treeNodeValid.js +21 -12
  590. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  591. package/lib/simple-tree/typesUnsafe.d.ts +4 -4
  592. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  593. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  594. package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
  595. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
  596. package/lib/simple-tree/walkFieldSchema.js +13 -0
  597. package/lib/simple-tree/walkFieldSchema.js.map +1 -0
  598. package/lib/util/index.d.ts +1 -1
  599. package/lib/util/index.d.ts.map +1 -1
  600. package/lib/util/index.js.map +1 -1
  601. package/lib/util/typeUtils.d.ts +14 -45
  602. package/lib/util/typeUtils.d.ts.map +1 -1
  603. package/lib/util/typeUtils.js.map +1 -1
  604. package/package.json +32 -23
  605. package/src/core/change-family/changeFamily.ts +5 -2
  606. package/src/core/change-family/editBuilder.ts +3 -2
  607. package/src/core/rebase/changeRebaser.ts +6 -1
  608. package/src/core/rebase/utils.ts +1 -1
  609. package/src/core/schema-stored/schema.ts +17 -0
  610. package/src/core/tree/anchorSet.ts +3 -4
  611. package/src/core/tree/detachedFieldIndex.ts +14 -3
  612. package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
  613. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +92 -47
  614. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +7 -7
  615. package/src/feature-libraries/editableTreeBinder.ts +2 -915
  616. package/src/feature-libraries/flex-tree/context.ts +7 -20
  617. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
  618. package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
  619. package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
  620. package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
  621. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  622. package/src/feature-libraries/index.ts +3 -71
  623. package/src/feature-libraries/mitigatedChangeFamily.ts +11 -4
  624. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +1 -0
  625. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +218 -175
  626. package/src/feature-libraries/optional-field/optionalField.ts +21 -17
  627. package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -10
  628. package/src/feature-libraries/sequence-field/compose.ts +67 -58
  629. package/src/feature-libraries/sequence-field/invert.ts +30 -6
  630. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +65 -19
  631. package/src/feature-libraries/typed-schema/flexList.ts +3 -84
  632. package/src/feature-libraries/typed-schema/index.ts +1 -33
  633. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
  634. package/src/index.ts +6 -0
  635. package/src/internalTypes.ts +0 -1
  636. package/src/packageVersion.ts +1 -1
  637. package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
  638. package/src/shared-tree/index.ts +4 -8
  639. package/src/shared-tree/schematizeTree.ts +2 -56
  640. package/src/shared-tree/schematizingTreeView.ts +34 -15
  641. package/src/shared-tree/sharedTree.ts +39 -9
  642. package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
  643. package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
  644. package/src/shared-tree/treeCheckout.ts +232 -134
  645. package/src/shared-tree-core/branch.ts +26 -40
  646. package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
  647. package/src/shared-tree-core/editManager.ts +2 -1
  648. package/src/shared-tree-core/sharedTreeCore.ts +4 -2
  649. package/src/simple-tree/api/create.ts +18 -20
  650. package/src/simple-tree/api/getJsonSchema.ts +3 -3
  651. package/src/simple-tree/api/getSimpleSchema.ts +2 -2
  652. package/src/simple-tree/api/index.ts +2 -0
  653. package/src/simple-tree/api/schemaFactory.ts +41 -12
  654. package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
  655. package/src/simple-tree/api/simpleSchema.ts +15 -10
  656. package/src/simple-tree/api/tree.ts +15 -9
  657. package/src/simple-tree/api/treeNodeApi.ts +12 -10
  658. package/src/simple-tree/api/verboseTree.ts +6 -12
  659. package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
  660. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +11 -2
  661. package/src/simple-tree/arrayNode.ts +202 -53
  662. package/src/simple-tree/core/context.ts +78 -0
  663. package/src/simple-tree/core/getOrCreateNode.ts +38 -0
  664. package/src/simple-tree/core/index.ts +11 -7
  665. package/src/simple-tree/core/schemaCaching.ts +13 -50
  666. package/src/simple-tree/core/treeNodeKernel.ts +117 -78
  667. package/src/simple-tree/core/treeNodeSchema.ts +35 -1
  668. package/src/simple-tree/core/types.ts +0 -5
  669. package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
  670. package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
  671. package/src/simple-tree/createContext.ts +24 -0
  672. package/src/simple-tree/index.ts +5 -2
  673. package/src/simple-tree/leafNodeSchema.ts +3 -9
  674. package/src/simple-tree/mapNode.ts +20 -17
  675. package/src/simple-tree/objectNode.ts +63 -38
  676. package/src/simple-tree/objectNodeTypes.ts +8 -5
  677. package/src/simple-tree/proxies.ts +8 -26
  678. package/src/simple-tree/schemaTypes.ts +2 -2
  679. package/src/simple-tree/toFlexSchema.ts +71 -204
  680. package/src/simple-tree/toMapTree.ts +5 -5
  681. package/src/simple-tree/treeNodeValid.ts +28 -22
  682. package/src/simple-tree/typesUnsafe.ts +4 -4
  683. package/src/simple-tree/walkFieldSchema.ts +19 -0
  684. package/src/util/index.ts +1 -5
  685. package/src/util/typeUtils.ts +14 -56
  686. package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
  687. package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
  688. package/dist/feature-libraries/fieldGenerator.js +0 -13
  689. package/dist/feature-libraries/fieldGenerator.js.map +0 -1
  690. package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
  691. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  692. package/dist/feature-libraries/flex-map-tree/index.js +0 -14
  693. package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
  694. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  695. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  696. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  697. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
  698. package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  699. package/dist/feature-libraries/storedToViewSchema.js +0 -67
  700. package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
  701. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  702. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  703. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
  704. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  705. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  706. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  707. package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
  708. package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  709. package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
  710. package/dist/feature-libraries/typed-schema/view.js.map +0 -1
  711. package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  712. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  713. package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
  714. package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
  715. package/dist/simple-tree/walkSchema.d.ts.map +0 -1
  716. package/dist/simple-tree/walkSchema.js +0 -49
  717. package/dist/simple-tree/walkSchema.js.map +0 -1
  718. package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
  719. package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
  720. package/lib/feature-libraries/fieldGenerator.js +0 -12
  721. package/lib/feature-libraries/fieldGenerator.js.map +0 -1
  722. package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
  723. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  724. package/lib/feature-libraries/flex-map-tree/index.js +0 -6
  725. package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
  726. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  727. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  728. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  729. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
  730. package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  731. package/lib/feature-libraries/storedToViewSchema.js +0 -62
  732. package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
  733. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  734. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  735. package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
  736. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  737. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  738. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  739. package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
  740. package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  741. package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
  742. package/lib/feature-libraries/typed-schema/view.js.map +0 -1
  743. package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  744. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  745. package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
  746. package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
  747. package/lib/simple-tree/walkSchema.d.ts.map +0 -1
  748. package/lib/simple-tree/walkSchema.js +0 -43
  749. package/lib/simple-tree/walkSchema.js.map +0 -1
  750. package/src/feature-libraries/fieldGenerator.ts +0 -47
  751. package/src/feature-libraries/flex-map-tree/index.ts +0 -14
  752. package/src/feature-libraries/storedToViewSchema.ts +0 -100
  753. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
  754. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
  755. package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/tree",
3
- "version": "2.4.0-294316",
3
+ "version": "2.4.0-297385",
4
4
  "description": "Distributed tree",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -87,17 +87,17 @@
87
87
  "temp-directory": "nyc/.nyc_output"
88
88
  },
89
89
  "dependencies": {
90
- "@fluid-internal/client-utils": "2.4.0-294316",
91
- "@fluidframework/container-runtime": "2.4.0-294316",
92
- "@fluidframework/core-interfaces": "2.4.0-294316",
93
- "@fluidframework/core-utils": "2.4.0-294316",
94
- "@fluidframework/datastore-definitions": "2.4.0-294316",
95
- "@fluidframework/driver-definitions": "2.4.0-294316",
96
- "@fluidframework/id-compressor": "2.4.0-294316",
97
- "@fluidframework/runtime-definitions": "2.4.0-294316",
98
- "@fluidframework/runtime-utils": "2.4.0-294316",
99
- "@fluidframework/shared-object-base": "2.4.0-294316",
100
- "@fluidframework/telemetry-utils": "2.4.0-294316",
90
+ "@fluid-internal/client-utils": "2.4.0-297385",
91
+ "@fluidframework/container-runtime": "2.4.0-297385",
92
+ "@fluidframework/core-interfaces": "2.4.0-297385",
93
+ "@fluidframework/core-utils": "2.4.0-297385",
94
+ "@fluidframework/datastore-definitions": "2.4.0-297385",
95
+ "@fluidframework/driver-definitions": "2.4.0-297385",
96
+ "@fluidframework/id-compressor": "2.4.0-297385",
97
+ "@fluidframework/runtime-definitions": "2.4.0-297385",
98
+ "@fluidframework/runtime-utils": "2.4.0-297385",
99
+ "@fluidframework/shared-object-base": "2.4.0-297385",
100
+ "@fluidframework/telemetry-utils": "2.4.0-297385",
101
101
  "@sinclair/typebox": "^0.32.29",
102
102
  "@tylerbu/sorted-btree-es6": "^1.8.0",
103
103
  "@ungap/structured-clone": "^1.2.0",
@@ -106,20 +106,20 @@
106
106
  "devDependencies": {
107
107
  "@arethetypeswrong/cli": "^0.15.2",
108
108
  "@biomejs/biome": "~1.8.3",
109
- "@fluid-internal/mocha-test-setup": "2.4.0-294316",
110
- "@fluid-private/stochastic-test-utils": "2.4.0-294316",
111
- "@fluid-private/test-dds-utils": "2.4.0-294316",
112
- "@fluid-private/test-drivers": "2.4.0-294316",
109
+ "@fluid-internal/mocha-test-setup": "2.4.0-297385",
110
+ "@fluid-private/stochastic-test-utils": "2.4.0-297385",
111
+ "@fluid-private/test-dds-utils": "2.4.0-297385",
112
+ "@fluid-private/test-drivers": "2.4.0-297385",
113
113
  "@fluid-tools/benchmark": "^0.50.0",
114
114
  "@fluid-tools/build-cli": "^0.46.0",
115
115
  "@fluidframework/build-common": "^2.0.3",
116
116
  "@fluidframework/build-tools": "^0.46.0",
117
- "@fluidframework/container-definitions": "2.4.0-294316",
118
- "@fluidframework/container-loader": "2.4.0-294316",
117
+ "@fluidframework/container-definitions": "2.4.0-297385",
118
+ "@fluidframework/container-loader": "2.4.0-297385",
119
119
  "@fluidframework/eslint-config-fluid": "^5.4.0",
120
- "@fluidframework/test-runtime-utils": "2.4.0-294316",
121
- "@fluidframework/test-utils": "2.4.0-294316",
122
- "@fluidframework/tree-previous": "npm:@fluidframework/tree@2.3.0",
120
+ "@fluidframework/test-runtime-utils": "2.4.0-297385",
121
+ "@fluidframework/test-utils": "2.4.0-297385",
122
+ "@fluidframework/tree-previous": "npm:@fluidframework/tree@~2.3.0",
123
123
  "@microsoft/api-extractor": "7.47.8",
124
124
  "@types/diff": "^3.5.1",
125
125
  "@types/easy-table": "^0.0.32",
@@ -163,6 +163,12 @@
163
163
  },
164
164
  "typeValidation": {
165
165
  "broken": {
166
+ "TypeAlias_MapNodeInsertableData": {
167
+ "backCompat": false
168
+ },
169
+ "Interface_InternalTypes_TreeNodeSchemaNonClass": {
170
+ "backCompat": false
171
+ },
166
172
  "Interface_FieldSchemaUnsafe": {
167
173
  "forwardCompat": false
168
174
  },
@@ -171,9 +177,12 @@
171
177
  },
172
178
  "TypeAlias_ImplicitFieldSchema": {
173
179
  "forwardCompat": false
180
+ },
181
+ "TypeAlias_ImplicitAllowedTypes": {
182
+ "forwardCompat": false
174
183
  }
175
184
  },
176
- "entrypoint": "internal"
185
+ "entrypoint": "public"
177
186
  },
178
187
  "scripts": {
179
188
  "api": "fluid-build . --task api",
@@ -235,7 +244,7 @@
235
244
  "test:snapshots:regen": "pnpm test:mocha:esm --snapshot",
236
245
  "test:stress": "cross-env FUZZ_TEST_COUNT=20 FUZZ_STRESS_RUN=true mocha --ignore \"lib/test/memory/**/*\" --recursive \"lib/test/**/*.spec.js\"",
237
246
  "tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ../../../common/build/build-common/src/cjs/package.json ./dist",
238
- "typetests:gen": "flub generate typetests --dir . -v --level public",
247
+ "typetests:gen": "flub generate typetests --dir . -v",
239
248
  "typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
240
249
  }
241
250
  }
@@ -8,10 +8,13 @@ import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
8
8
  import type { ICodecFamily, IJsonCodec } from "../../codec/index.js";
9
9
  import type { SchemaAndPolicy } from "../../core/index.js";
10
10
  import type { JsonCompatibleReadOnly } from "../../util/index.js";
11
- import type { ChangeRebaser, RevisionTag } from "../rebase/index.js";
11
+ import type { ChangeRebaser, RevisionTag, TaggedChange } from "../rebase/index.js";
12
12
 
13
13
  export interface ChangeFamily<TEditor extends ChangeFamilyEditor, TChange> {
14
- buildEditor(changeReceiver: (change: TChange) => void): TEditor;
14
+ buildEditor(
15
+ mintRevisionTag: () => RevisionTag,
16
+ changeReceiver: (change: TaggedChange<TChange>) => void,
17
+ ): TEditor;
15
18
 
16
19
  readonly rebaser: ChangeRebaser<TChange>;
17
20
  readonly codecs: ICodecFamily<TChange, ChangeEncodingContext>;
@@ -3,12 +3,13 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import type { TaggedChange } from "../rebase/index.js";
6
7
  import type { ChangeFamily, ChangeFamilyEditor } from "./changeFamily.js";
7
8
 
8
9
  export abstract class EditBuilder<TChange> implements ChangeFamilyEditor {
9
10
  public constructor(
10
11
  protected readonly changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>,
11
- private readonly changeReceiver: (change: TChange) => void,
12
+ private readonly changeReceiver: (change: TaggedChange<TChange>) => void,
12
13
  ) {}
13
14
 
14
15
  /**
@@ -16,7 +17,7 @@ export abstract class EditBuilder<TChange> implements ChangeFamilyEditor {
16
17
  *
17
18
  * @sealed
18
19
  */
19
- protected applyChange(change: TChange): void {
20
+ protected applyChange(change: TaggedChange<TChange>): void {
20
21
  this.changeReceiver(change);
21
22
  }
22
23
 
@@ -51,6 +51,7 @@ export interface ChangeRebaser<TChangeset> {
51
51
  * @param changes - The changes to invert.
52
52
  * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
53
53
  * performing a sandwich rebase.
54
+ * @param revision - The revision for the invert changeset.
54
55
  * This flag is relevant to merge semantics that are dependent on edit sequencing order:
55
56
  * - In the context of an undo, this function inverts a change that is sequenced and applied before the produced inverse.
56
57
  * - In the context of a rollback, this function inverts a change that is sequenced after but applied before the produced inverse.
@@ -59,7 +60,11 @@ export interface ChangeRebaser<TChangeset> {
59
60
  * `compose([changes, inverse(changes)])` be equal to `compose([])`:
60
61
  * See {@link ChangeRebaser} for details.
61
62
  */
62
- invert(changes: TaggedChange<TChangeset>, isRollback: boolean): TChangeset;
63
+ invert(
64
+ changes: TaggedChange<TChangeset>,
65
+ isRollback: boolean,
66
+ revision: RevisionTag,
67
+ ): TChangeset;
63
68
 
64
69
  /**
65
70
  * Rebase `change` over `over`.
@@ -444,8 +444,8 @@ function rollbackFromCommit<TChange>(
444
444
  if (commit.rollback !== undefined) {
445
445
  return commit.rollback;
446
446
  }
447
- const untagged = changeRebaser.invert(commit, true);
448
447
  const tag = mintRevisionTag();
448
+ const untagged = changeRebaser.invert(commit, true, tag);
449
449
  const deeplyTaggedRollback = changeRebaser.changeRevision(untagged, tag, commit.revision);
450
450
  const fullyTaggedRollback = tagRollbackInverse(deeplyTaggedRollback, tag, commit.revision);
451
451
 
@@ -166,6 +166,11 @@ export abstract class TreeNodeStoredSchema {
166
166
  * and is runtime validated by the codec.
167
167
  */
168
168
  public abstract encode(): ErasedTreeNodeSchemaDataFormat;
169
+
170
+ /**
171
+ * Returns the schema for the provided field.
172
+ */
173
+ public abstract getFieldSchema(field: FieldKey): TreeFieldStoredSchema;
169
174
  }
170
175
 
171
176
  /**
@@ -202,6 +207,10 @@ export class ObjectNodeStoredSchema extends TreeNodeStoredSchema {
202
207
  object: fieldsObject,
203
208
  });
204
209
  }
210
+
211
+ public override getFieldSchema(field: FieldKey): TreeFieldStoredSchema {
212
+ return this.objectNodeFields.get(field) ?? storedEmptyFieldSchema;
213
+ }
205
214
  }
206
215
 
207
216
  /**
@@ -225,6 +234,10 @@ export class MapNodeStoredSchema extends TreeNodeStoredSchema {
225
234
  map: encodeFieldSchema(this.mapFields),
226
235
  });
227
236
  }
237
+
238
+ public override getFieldSchema(field: FieldKey): TreeFieldStoredSchema {
239
+ return this.mapFields;
240
+ }
228
241
  }
229
242
 
230
243
  /**
@@ -252,6 +265,10 @@ export class LeafNodeStoredSchema extends TreeNodeStoredSchema {
252
265
  leaf: encodeValueSchema(this.leafValue),
253
266
  });
254
267
  }
268
+
269
+ public override getFieldSchema(field: FieldKey): TreeFieldStoredSchema {
270
+ return storedEmptyFieldSchema;
271
+ }
255
272
  }
256
273
 
257
274
  export const storedSchemaDecodeDispatcher: DiscriminatedUnionDispatcher<
@@ -128,7 +128,6 @@ export interface AnchorEvents {
128
128
  * Compare to {@link AnchorEvents.childrenChanged} which is emitted in the middle of the batch/delta-visit.
129
129
  */
130
130
  childrenChangedAfterBatch(arg: {
131
- anchor: AnchorNode;
132
131
  changedFields: ReadonlySet<FieldKey>;
133
132
  }): void;
134
133
 
@@ -179,7 +178,7 @@ export interface AnchorEvents {
179
178
  * subtree changed, compared to {@link AnchorEvents.subtreeChanged} or {@link AnchorEvents.subtreeChanging} which
180
179
  * fire when something _may_ have changed or _may_ be about to change.
181
180
  */
182
- subtreeChangedAfterBatch(anchor: AnchorNode): void;
181
+ subtreeChangedAfterBatch(): void;
183
182
  }
184
183
 
185
184
  /**
@@ -775,9 +774,9 @@ export class AnchorSet implements Listenable<AnchorSetRootEvents>, AnchorLocator
775
774
  e.changedField ??
776
775
  fail("childrenChangedAfterBatch events should have a changedField"),
777
776
  );
778
- node.events.emit(event, { anchor: node, changedFields: new Set(fieldKeys) });
777
+ node.events.emit(event, { changedFields: new Set(fieldKeys) });
779
778
  } else {
780
- node.events.emit(event, node);
779
+ node.events.emit(event);
781
780
  }
782
781
  }
783
782
  },
@@ -150,7 +150,15 @@ export class DetachedFieldIndex {
150
150
  });
151
151
  }
152
152
  this.latestRelevantRevisionToFields.delete(current);
153
- this.latestRelevantRevisionToFields.set(updated, inner);
153
+
154
+ const updatedInner = this.latestRelevantRevisionToFields.get(updated);
155
+ if (updatedInner !== undefined) {
156
+ for (const [root, nodeId] of inner) {
157
+ updatedInner.set(root, nodeId);
158
+ }
159
+ } else {
160
+ this.latestRelevantRevisionToFields.set(updated, inner);
161
+ }
154
162
  }
155
163
  }
156
164
 
@@ -349,10 +357,13 @@ export class DetachedFieldIndex {
349
357
  0x9bd /* revisions should only be set once using this function after loading data from a summary */,
350
358
  );
351
359
 
352
- const newDetachedNodeToField = new Map();
360
+ const newDetachedNodeToField: NestedMap<Major, Minor, DetachedField> = new Map();
353
361
  const rootMap = new Map();
354
362
  forEachInNestedMap(this.detachedNodeToField, ({ root }, major, minor) => {
355
- setInNestedMap(newDetachedNodeToField, major, minor, { root, latestRevision });
363
+ setInNestedMap(newDetachedNodeToField, major, minor, {
364
+ root,
365
+ latestRelevantRevision: latestRevision,
366
+ });
356
367
  rootMap.set(root, { major, minor });
357
368
  });
358
369
 
@@ -27,7 +27,7 @@ export type ForestRootId = Brand<number, "tree.ForestRootId">;
27
27
  export interface DetachedField {
28
28
  /**
29
29
  * The atomic ID that the `DetachedFieldIndex` uses to uniquely identify the first (and only) root in the field.
30
- * This ID is scoped to the specific `DetachedFieldIndex` from witch this object was retrieved.
30
+ * This ID is scoped to the specific `DetachedFieldIndex` from which this object was retrieved.
31
31
  *
32
32
  * The current implementation only supports a single root per field.
33
33
  * This will be changed in the future for performance reasons.
@@ -8,16 +8,17 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import type { ICodecFamily } from "../../codec/index.js";
10
10
  import {
11
+ type ChangeAtomId,
11
12
  type ChangeEncodingContext,
12
13
  type ChangeFamily,
13
14
  type ChangeFamilyEditor,
14
15
  type ChangeRebaser,
15
- type ChangesetLocalId,
16
16
  CursorLocationType,
17
17
  type DeltaDetachedNodeId,
18
18
  type DeltaRoot,
19
19
  type FieldUpPath,
20
20
  type ITreeCursorSynchronous,
21
+ type RevisionTag,
21
22
  type TaggedChange,
22
23
  type UpPath,
23
24
  compareFieldUpPaths,
@@ -43,6 +44,7 @@ import {
43
44
  required as valueFieldKind,
44
45
  } from "./defaultFieldKinds.js";
45
46
  import type { IIdCompressor } from "@fluidframework/id-compressor";
47
+ import type { CellId } from "../sequence-field/index.js";
46
48
 
47
49
  export type DefaultChangeset = ModularChangeset;
48
50
 
@@ -68,8 +70,11 @@ export class DefaultChangeFamily
68
70
  return this.modularFamily.codecs;
69
71
  }
70
72
 
71
- public buildEditor(changeReceiver: (change: DefaultChangeset) => void): DefaultEditBuilder {
72
- return new DefaultEditBuilder(this, changeReceiver);
73
+ public buildEditor(
74
+ mintRevisionTag: () => RevisionTag,
75
+ changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
76
+ ): DefaultEditBuilder {
77
+ return new DefaultEditBuilder(this, mintRevisionTag, changeReceiver);
73
78
  }
74
79
  }
75
80
 
@@ -168,7 +173,8 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
168
173
 
169
174
  public constructor(
170
175
  family: ChangeFamily<ChangeFamilyEditor, DefaultChangeset>,
171
- changeReceiver: (change: DefaultChangeset) => void,
176
+ private readonly mintRevisionTag: () => RevisionTag,
177
+ changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
172
178
  private readonly idCompressor?: IIdCompressor,
173
179
  ) {
174
180
  this.modularBuilder = new ModularEditBuilder(family, fieldKinds, changeReceiver);
@@ -182,19 +188,25 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
182
188
  }
183
189
 
184
190
  public addNodeExistsConstraint(path: UpPath): void {
185
- this.modularBuilder.addNodeExistsConstraint(path);
191
+ this.modularBuilder.addNodeExistsConstraint(path, this.mintRevisionTag());
186
192
  }
187
193
 
188
194
  public valueField(field: FieldUpPath): ValueFieldEditBuilder<ITreeCursorSynchronous> {
189
195
  return {
190
196
  set: (newContent: ITreeCursorSynchronous): void => {
191
- const fillId = this.modularBuilder.generateId();
192
-
193
- const build = this.modularBuilder.buildTrees(fillId, newContent, this.idCompressor);
197
+ const revision = this.mintRevisionTag();
198
+ const fill: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
199
+ const detach: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
200
+ const build = this.modularBuilder.buildTrees(
201
+ fill.localId,
202
+ newContent,
203
+ revision,
204
+ this.idCompressor,
205
+ );
194
206
  const change: FieldChangeset = brand(
195
207
  valueFieldKind.changeHandler.editor.set({
196
- fill: fillId,
197
- detach: this.modularBuilder.generateId(),
208
+ fill,
209
+ detach,
198
210
  }),
199
211
  );
200
212
 
@@ -203,8 +215,9 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
203
215
  field,
204
216
  fieldKind: valueFieldKind.identifier,
205
217
  change,
218
+ revision,
206
219
  };
207
- this.modularBuilder.submitChanges([build, edit]);
220
+ this.modularBuilder.submitChanges([build, edit], revision);
208
221
  },
209
222
  };
210
223
  }
@@ -212,21 +225,26 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
212
225
  public optionalField(field: FieldUpPath): OptionalFieldEditBuilder<ITreeCursorSynchronous> {
213
226
  return {
214
227
  set: (newContent: ITreeCursorSynchronous | undefined, wasEmpty: boolean): void => {
215
- const detachId = this.modularBuilder.generateId();
216
- let fillId: ChangesetLocalId | undefined;
217
228
  const edits: EditDescription[] = [];
218
229
  let optionalChange: OptionalChangeset;
230
+ const revision = this.mintRevisionTag();
231
+ const detach: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
219
232
  if (newContent !== undefined) {
220
- fillId = this.modularBuilder.generateId();
221
- const build = this.modularBuilder.buildTrees(fillId, newContent, this.idCompressor);
233
+ const fill: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
234
+ const build = this.modularBuilder.buildTrees(
235
+ fill.localId,
236
+ newContent,
237
+ revision,
238
+ this.idCompressor,
239
+ );
222
240
  edits.push(build);
223
241
 
224
242
  optionalChange = optional.changeHandler.editor.set(wasEmpty, {
225
- fill: fillId,
226
- detach: detachId,
243
+ fill,
244
+ detach,
227
245
  });
228
246
  } else {
229
- optionalChange = optional.changeHandler.editor.clear(wasEmpty, detachId);
247
+ optionalChange = optional.changeHandler.editor.clear(wasEmpty, detach);
230
248
  }
231
249
 
232
250
  const change: FieldChangeset = brand(optionalChange);
@@ -235,10 +253,11 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
235
253
  field,
236
254
  fieldKind: optional.identifier,
237
255
  change,
256
+ revision,
238
257
  };
239
258
  edits.push(edit);
240
259
 
241
- this.modularBuilder.submitChanges(edits);
260
+ this.modularBuilder.submitChanges(edits, revision);
242
261
  },
243
262
  };
244
263
  }
@@ -255,17 +274,24 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
255
274
  } else if (count < 0 || !Number.isSafeInteger(count)) {
256
275
  throw new UsageError(`Expected non-negative integer count, got ${count}.`);
257
276
  }
258
- const detachId = this.modularBuilder.generateId(count);
259
- const attachId = this.modularBuilder.generateId(count);
277
+ const revision = this.mintRevisionTag();
278
+ const detachCellId = this.modularBuilder.generateId(count);
279
+ const attachCellId: CellId = { localId: this.modularBuilder.generateId(count), revision };
260
280
  if (compareFieldUpPaths(sourceField, destinationField)) {
261
281
  const change = sequence.changeHandler.editor.move(
262
282
  sourceIndex,
263
283
  count,
264
284
  destIndex,
265
- detachId,
266
- attachId,
285
+ detachCellId,
286
+ attachCellId,
287
+ revision,
288
+ );
289
+ this.modularBuilder.submitChange(
290
+ sourceField,
291
+ sequence.identifier,
292
+ brand(change),
293
+ revision,
267
294
  );
268
- this.modularBuilder.submitChange(sourceField, sequence.identifier, brand(change));
269
295
  } else {
270
296
  const detachPath = topDownPath(sourceField.parent);
271
297
  const attachPath = topDownPath(destinationField.parent);
@@ -307,27 +333,38 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
307
333
  }
308
334
  }
309
335
  }
310
- const moveOut = sequence.changeHandler.editor.moveOut(sourceIndex, count, detachId);
336
+ const moveOut = sequence.changeHandler.editor.moveOut(
337
+ sourceIndex,
338
+ count,
339
+ detachCellId,
340
+ revision,
341
+ );
311
342
  const moveIn = sequence.changeHandler.editor.moveIn(
312
343
  destIndex,
313
344
  count,
314
- detachId,
315
- attachId,
345
+ detachCellId,
346
+ attachCellId,
347
+ revision,
348
+ );
349
+ this.modularBuilder.submitChanges(
350
+ [
351
+ {
352
+ type: "field",
353
+ field: sourceField,
354
+ fieldKind: sequence.identifier,
355
+ change: brand(moveOut),
356
+ revision,
357
+ },
358
+ {
359
+ type: "field",
360
+ field: adjustedAttachField,
361
+ fieldKind: sequence.identifier,
362
+ change: brand(moveIn),
363
+ revision,
364
+ },
365
+ ],
366
+ revision,
316
367
  );
317
- this.modularBuilder.submitChanges([
318
- {
319
- type: "field",
320
- field: sourceField,
321
- fieldKind: sequence.identifier,
322
- change: brand(moveOut),
323
- },
324
- {
325
- type: "field",
326
- field: adjustedAttachField,
327
- fieldKind: sequence.identifier,
328
- change: brand(moveIn),
329
- },
330
- ]);
331
368
  }
332
369
  }
333
370
 
@@ -340,30 +377,38 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
340
377
  return;
341
378
  }
342
379
 
343
- const firstId = this.modularBuilder.generateId(length);
344
- const build = this.modularBuilder.buildTrees(firstId, content, this.idCompressor);
380
+ const revision = this.mintRevisionTag();
381
+ const firstId: CellId = { localId: this.modularBuilder.generateId(length), revision };
382
+ const build = this.modularBuilder.buildTrees(
383
+ firstId.localId,
384
+ content,
385
+ revision,
386
+ this.idCompressor,
387
+ );
345
388
  const change: FieldChangeset = brand(
346
- sequence.changeHandler.editor.insert(index, length, firstId),
389
+ sequence.changeHandler.editor.insert(index, length, firstId, revision),
347
390
  );
348
391
  const attach: FieldEditDescription = {
349
392
  type: "field",
350
393
  field,
351
394
  fieldKind: sequence.identifier,
352
395
  change,
396
+ revision,
353
397
  };
354
398
  // The changes have to be submitted together, otherwise they will be assigned different revisions,
355
399
  // which will prevent the build ID and the insert ID from matching.
356
- this.modularBuilder.submitChanges([build, attach]);
400
+ this.modularBuilder.submitChanges([build, attach], revision);
357
401
  },
358
402
  remove: (index: number, count: number): void => {
359
403
  if (count === 0) {
360
404
  return;
361
405
  }
406
+ const revision = this.mintRevisionTag();
362
407
  const id = this.modularBuilder.generateId(count);
363
408
  const change: FieldChangeset = brand(
364
- sequence.changeHandler.editor.remove(index, count, id),
409
+ sequence.changeHandler.editor.remove(index, count, id, revision),
365
410
  );
366
- this.modularBuilder.submitChange(field, sequence.identifier, change);
411
+ this.modularBuilder.submitChange(field, sequence.identifier, change, revision);
367
412
  },
368
413
  };
369
414
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import {
7
- type ChangesetLocalId,
7
+ type ChangeAtomId,
8
8
  type DeltaDetachedNodeId,
9
9
  type DeltaFieldChanges,
10
10
  type FieldKindIdentifier,
@@ -54,11 +54,9 @@ export const noChangeHandler: FieldChangeHandler<0> = {
54
54
  export interface ValueFieldEditor extends FieldEditor<OptionalChangeset> {
55
55
  /**
56
56
  * Creates a change which replaces the current value of the field with `newValue`.
57
- * @param newContent - the new content for the field
58
- * @param changeId - the ID associated with the replacement of the current content.
59
- * @param buildId - the ID associated with the creation of the `newContent`.
57
+ * @param ids - The ids for the fill and detach fields.
60
58
  */
61
- set(ids: { fill: ChangesetLocalId; detach: ChangesetLocalId }): OptionalChangeset;
59
+ set(ids: { fill: ChangeAtomId; detach: ChangeAtomId }): OptionalChangeset;
62
60
  }
63
61
 
64
62
  const optionalIdentifier = "Optional";
@@ -77,8 +75,10 @@ export const optional = new FieldKindWithEditor(
77
75
 
78
76
  export const valueFieldEditor: ValueFieldEditor = {
79
77
  ...optionalFieldEditor,
80
- set: (ids: { fill: ChangesetLocalId; detach: ChangesetLocalId }): OptionalChangeset =>
81
- optionalFieldEditor.set(false, ids),
78
+ set: (ids: {
79
+ fill: ChangeAtomId;
80
+ detach: ChangeAtomId;
81
+ }): OptionalChangeset => optionalFieldEditor.set(false, ids),
82
82
  };
83
83
 
84
84
  export const valueChangeHandler: FieldChangeHandler<OptionalChangeset, ValueFieldEditor> = {