@fluidframework/tree 2.3.1 → 2.4.0-297027

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 (674) hide show
  1. package/api-report/tree.alpha.api.md +77 -38
  2. package/api-report/tree.beta.api.md +50 -30
  3. package/api-report/tree.legacy.alpha.api.md +50 -30
  4. package/api-report/tree.legacy.public.api.md +50 -30
  5. package/api-report/tree.public.api.md +50 -30
  6. package/dist/alpha.d.ts +7 -0
  7. package/dist/beta.d.ts +4 -0
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.d.ts.map +1 -1
  10. package/dist/core/index.js +2 -1
  11. package/dist/core/index.js.map +1 -1
  12. package/dist/core/rebase/index.d.ts +1 -1
  13. package/dist/core/rebase/index.d.ts.map +1 -1
  14. package/dist/core/rebase/index.js +2 -1
  15. package/dist/core/rebase/index.js.map +1 -1
  16. package/dist/core/rebase/types.d.ts +1 -0
  17. package/dist/core/rebase/types.d.ts.map +1 -1
  18. package/dist/core/rebase/types.js +8 -1
  19. package/dist/core/rebase/types.js.map +1 -1
  20. package/dist/core/schema-stored/schema.d.ts +7 -0
  21. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  22. package/dist/core/schema-stored/schema.js +9 -0
  23. package/dist/core/schema-stored/schema.js.map +1 -1
  24. package/dist/core/tree/anchorSet.d.ts +1 -2
  25. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  26. package/dist/core/tree/anchorSet.js +2 -2
  27. package/dist/core/tree/anchorSet.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  29. package/dist/core/tree/detachedFieldIndex.js +13 -2
  30. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  32. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  33. package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
  34. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  35. package/dist/feature-libraries/editableTreeBinder.js +1 -539
  36. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  37. package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
  38. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  39. package/dist/feature-libraries/flex-tree/context.js +3 -3
  40. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  41. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  42. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  43. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  45. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  46. package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
  47. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  48. package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  49. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
  51. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  53. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
  55. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  56. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  57. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  58. package/dist/feature-libraries/index.d.ts +4 -7
  59. package/dist/feature-libraries/index.d.ts.map +1 -1
  60. package/dist/feature-libraries/index.js +5 -31
  61. package/dist/feature-libraries/index.js.map +1 -1
  62. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
  63. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  64. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +61 -17
  65. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  66. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  67. package/dist/feature-libraries/sequence-field/compose.js +3 -0
  68. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  69. package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  70. package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  71. package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  72. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  73. package/dist/feature-libraries/sequence-field/utils.js +1 -4
  74. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  75. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
  76. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  77. package/dist/feature-libraries/typed-schema/flexList.js +1 -13
  78. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  79. package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
  80. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  81. package/dist/feature-libraries/typed-schema/index.js +1 -19
  82. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  83. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  84. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  85. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
  86. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  87. package/dist/index.d.ts +3 -3
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/internalTypes.d.ts +1 -1
  92. package/dist/internalTypes.d.ts.map +1 -1
  93. package/dist/internalTypes.js.map +1 -1
  94. package/dist/legacy.d.ts +4 -0
  95. package/dist/packageVersion.d.ts +1 -1
  96. package/dist/packageVersion.d.ts.map +1 -1
  97. package/dist/packageVersion.js +1 -1
  98. package/dist/packageVersion.js.map +1 -1
  99. package/dist/public.d.ts +4 -0
  100. package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  101. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  102. package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
  103. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  104. package/dist/shared-tree/index.d.ts +3 -3
  105. package/dist/shared-tree/index.d.ts.map +1 -1
  106. package/dist/shared-tree/index.js +2 -3
  107. package/dist/shared-tree/index.js.map +1 -1
  108. package/dist/shared-tree/schematizeTree.d.ts +1 -40
  109. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  110. package/dist/shared-tree/schematizeTree.js +2 -11
  111. package/dist/shared-tree/schematizeTree.js.map +1 -1
  112. package/dist/shared-tree/schematizingTreeView.d.ts +9 -7
  113. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  114. package/dist/shared-tree/schematizingTreeView.js +19 -8
  115. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  116. package/dist/shared-tree/sharedTree.d.ts +19 -2
  117. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  118. package/dist/shared-tree/sharedTree.js +10 -2
  119. package/dist/shared-tree/sharedTree.js.map +1 -1
  120. package/dist/shared-tree/treeCheckout.d.ts +71 -41
  121. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  122. package/dist/shared-tree/treeCheckout.js +116 -84
  123. package/dist/shared-tree/treeCheckout.js.map +1 -1
  124. package/dist/shared-tree-core/branch.d.ts +8 -11
  125. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  126. package/dist/shared-tree-core/branch.js +12 -15
  127. package/dist/shared-tree-core/branch.js.map +1 -1
  128. package/dist/simple-tree/api/create.d.ts +1 -1
  129. package/dist/simple-tree/api/create.d.ts.map +1 -1
  130. package/dist/simple-tree/api/create.js +11 -13
  131. package/dist/simple-tree/api/create.js.map +1 -1
  132. package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
  133. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  134. package/dist/simple-tree/api/getJsonSchema.js +1 -1
  135. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  136. package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
  137. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  138. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  139. package/dist/simple-tree/api/index.d.ts +2 -1
  140. package/dist/simple-tree/api/index.d.ts.map +1 -1
  141. package/dist/simple-tree/api/index.js +3 -1
  142. package/dist/simple-tree/api/index.js.map +1 -1
  143. package/dist/simple-tree/api/jsonSchema.d.ts +13 -14
  144. package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
  145. package/dist/simple-tree/api/jsonSchema.js.map +1 -1
  146. package/dist/simple-tree/api/schemaFactory.d.ts +14 -8
  147. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  148. package/dist/simple-tree/api/schemaFactory.js +21 -2
  149. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  150. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  151. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  152. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  153. package/dist/simple-tree/api/simpleSchema.d.ts +18 -10
  154. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
  155. package/dist/simple-tree/api/simpleSchema.js.map +1 -1
  156. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  157. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +30 -17
  158. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  159. package/dist/simple-tree/api/tree.d.ts +16 -6
  160. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  161. package/dist/simple-tree/api/tree.js +4 -4
  162. package/dist/simple-tree/api/tree.js.map +1 -1
  163. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  164. package/dist/simple-tree/api/treeNodeApi.js +8 -6
  165. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  166. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  167. package/dist/simple-tree/api/verboseTree.js +6 -10
  168. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  169. package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
  170. package/dist/simple-tree/api/view.d.ts.map +1 -0
  171. package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  172. package/dist/simple-tree/api/view.js.map +1 -0
  173. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  174. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  175. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
  176. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  177. package/dist/simple-tree/arrayNode.d.ts +147 -14
  178. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  179. package/dist/simple-tree/arrayNode.js +32 -20
  180. package/dist/simple-tree/arrayNode.js.map +1 -1
  181. package/dist/simple-tree/core/context.d.ts +55 -0
  182. package/dist/simple-tree/core/context.d.ts.map +1 -0
  183. package/dist/simple-tree/core/context.js +60 -0
  184. package/dist/simple-tree/core/context.js.map +1 -0
  185. package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
  186. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  187. package/dist/simple-tree/core/getOrCreateNode.js +36 -0
  188. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
  189. package/dist/simple-tree/core/index.d.ts +7 -3
  190. package/dist/simple-tree/core/index.d.ts.map +1 -1
  191. package/dist/simple-tree/core/index.js +16 -7
  192. package/dist/simple-tree/core/index.js.map +1 -1
  193. package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
  194. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  195. package/dist/simple-tree/core/schemaCaching.js +16 -45
  196. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  197. package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
  198. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  199. package/dist/simple-tree/core/treeNodeKernel.js +94 -58
  200. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  201. package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
  202. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  203. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  204. package/dist/simple-tree/core/types.d.ts +0 -5
  205. package/dist/simple-tree/core/types.d.ts.map +1 -1
  206. package/dist/simple-tree/core/types.js.map +1 -1
  207. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  208. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  209. package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
  210. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  211. package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  212. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
  213. package/dist/simple-tree/core/walkSchema.js +34 -0
  214. package/dist/simple-tree/core/walkSchema.js.map +1 -0
  215. package/dist/simple-tree/createContext.d.ts +11 -0
  216. package/dist/simple-tree/createContext.d.ts.map +1 -0
  217. package/dist/simple-tree/createContext.js +25 -0
  218. package/dist/simple-tree/createContext.js.map +1 -0
  219. package/dist/simple-tree/index.d.ts +4 -5
  220. package/dist/simple-tree/index.d.ts.map +1 -1
  221. package/dist/simple-tree/index.js +7 -7
  222. package/dist/simple-tree/index.js.map +1 -1
  223. package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
  224. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  225. package/dist/simple-tree/leafNodeSchema.js +1 -2
  226. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  227. package/dist/simple-tree/mapNode.d.ts +4 -4
  228. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  229. package/dist/simple-tree/mapNode.js +9 -5
  230. package/dist/simple-tree/mapNode.js.map +1 -1
  231. package/dist/simple-tree/objectNode.d.ts +8 -8
  232. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  233. package/dist/simple-tree/objectNode.js +33 -14
  234. package/dist/simple-tree/objectNode.js.map +1 -1
  235. package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
  236. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  237. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  238. package/dist/simple-tree/proxies.d.ts +1 -2
  239. package/dist/simple-tree/proxies.d.ts.map +1 -1
  240. package/dist/simple-tree/proxies.js +6 -22
  241. package/dist/simple-tree/proxies.js.map +1 -1
  242. package/dist/simple-tree/schemaTypes.d.ts +44 -4
  243. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  244. package/dist/simple-tree/schemaTypes.js +10 -0
  245. package/dist/simple-tree/schemaTypes.js.map +1 -1
  246. package/dist/simple-tree/toFlexSchema.d.ts +6 -36
  247. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  248. package/dist/simple-tree/toFlexSchema.js +58 -142
  249. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  250. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  251. package/dist/simple-tree/toMapTree.js +2 -2
  252. package/dist/simple-tree/toMapTree.js.map +1 -1
  253. package/dist/simple-tree/treeNodeValid.d.ts +13 -5
  254. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  255. package/dist/simple-tree/treeNodeValid.js +19 -10
  256. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  257. package/dist/simple-tree/typesUnsafe.d.ts +4 -4
  258. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  259. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  260. package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
  261. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
  262. package/dist/simple-tree/walkFieldSchema.js +17 -0
  263. package/dist/simple-tree/walkFieldSchema.js.map +1 -0
  264. package/dist/util/index.d.ts +1 -1
  265. package/dist/util/index.d.ts.map +1 -1
  266. package/dist/util/index.js.map +1 -1
  267. package/dist/util/typeUtils.d.ts +14 -45
  268. package/dist/util/typeUtils.d.ts.map +1 -1
  269. package/dist/util/typeUtils.js.map +1 -1
  270. package/lib/alpha.d.ts +7 -0
  271. package/lib/beta.d.ts +4 -0
  272. package/lib/core/index.d.ts +1 -1
  273. package/lib/core/index.d.ts.map +1 -1
  274. package/lib/core/index.js +1 -1
  275. package/lib/core/index.js.map +1 -1
  276. package/lib/core/rebase/index.d.ts +1 -1
  277. package/lib/core/rebase/index.d.ts.map +1 -1
  278. package/lib/core/rebase/index.js +1 -1
  279. package/lib/core/rebase/index.js.map +1 -1
  280. package/lib/core/rebase/types.d.ts +1 -0
  281. package/lib/core/rebase/types.d.ts.map +1 -1
  282. package/lib/core/rebase/types.js +6 -0
  283. package/lib/core/rebase/types.js.map +1 -1
  284. package/lib/core/schema-stored/schema.d.ts +7 -0
  285. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  286. package/lib/core/schema-stored/schema.js +9 -0
  287. package/lib/core/schema-stored/schema.js.map +1 -1
  288. package/lib/core/tree/anchorSet.d.ts +1 -2
  289. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  290. package/lib/core/tree/anchorSet.js +2 -2
  291. package/lib/core/tree/anchorSet.js.map +1 -1
  292. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  293. package/lib/core/tree/detachedFieldIndex.js +13 -2
  294. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  295. package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  296. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  297. package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
  298. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  299. package/lib/feature-libraries/editableTreeBinder.js +1 -532
  300. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  301. package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
  302. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  303. package/lib/feature-libraries/flex-tree/context.js +3 -3
  304. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  305. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  306. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  307. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  308. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  309. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  310. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
  311. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  312. package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  313. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  314. package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
  315. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  316. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  317. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  318. package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
  319. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  320. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  321. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  322. package/lib/feature-libraries/index.d.ts +4 -7
  323. package/lib/feature-libraries/index.d.ts.map +1 -1
  324. package/lib/feature-libraries/index.js +4 -6
  325. package/lib/feature-libraries/index.js.map +1 -1
  326. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
  327. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  328. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +62 -18
  329. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  330. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  331. package/lib/feature-libraries/sequence-field/compose.js +3 -0
  332. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  333. package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  334. package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  335. package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  336. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  337. package/lib/feature-libraries/sequence-field/utils.js +2 -5
  338. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  339. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
  340. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  341. package/lib/feature-libraries/typed-schema/flexList.js +0 -11
  342. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  343. package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
  344. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  345. package/lib/feature-libraries/typed-schema/index.js +0 -3
  346. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  347. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  348. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  349. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
  350. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  351. package/lib/index.d.ts +3 -3
  352. package/lib/index.d.ts.map +1 -1
  353. package/lib/index.js +1 -1
  354. package/lib/index.js.map +1 -1
  355. package/lib/internalTypes.d.ts +1 -1
  356. package/lib/internalTypes.d.ts.map +1 -1
  357. package/lib/internalTypes.js.map +1 -1
  358. package/lib/legacy.d.ts +4 -0
  359. package/lib/packageVersion.d.ts +1 -1
  360. package/lib/packageVersion.d.ts.map +1 -1
  361. package/lib/packageVersion.js +1 -1
  362. package/lib/packageVersion.js.map +1 -1
  363. package/lib/public.d.ts +4 -0
  364. package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  365. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  366. package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
  367. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  368. package/lib/shared-tree/index.d.ts +3 -3
  369. package/lib/shared-tree/index.d.ts.map +1 -1
  370. package/lib/shared-tree/index.js +1 -2
  371. package/lib/shared-tree/index.js.map +1 -1
  372. package/lib/shared-tree/schematizeTree.d.ts +1 -40
  373. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  374. package/lib/shared-tree/schematizeTree.js +1 -9
  375. package/lib/shared-tree/schematizeTree.js.map +1 -1
  376. package/lib/shared-tree/schematizingTreeView.d.ts +9 -7
  377. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  378. package/lib/shared-tree/schematizingTreeView.js +22 -11
  379. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  380. package/lib/shared-tree/sharedTree.d.ts +19 -2
  381. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  382. package/lib/shared-tree/sharedTree.js +10 -3
  383. package/lib/shared-tree/sharedTree.js.map +1 -1
  384. package/lib/shared-tree/treeCheckout.d.ts +71 -41
  385. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  386. package/lib/shared-tree/treeCheckout.js +118 -86
  387. package/lib/shared-tree/treeCheckout.js.map +1 -1
  388. package/lib/shared-tree-core/branch.d.ts +8 -11
  389. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  390. package/lib/shared-tree-core/branch.js +12 -15
  391. package/lib/shared-tree-core/branch.js.map +1 -1
  392. package/lib/simple-tree/api/create.d.ts +1 -1
  393. package/lib/simple-tree/api/create.d.ts.map +1 -1
  394. package/lib/simple-tree/api/create.js +14 -16
  395. package/lib/simple-tree/api/create.js.map +1 -1
  396. package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
  397. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  398. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  399. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  400. package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
  401. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  402. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  403. package/lib/simple-tree/api/index.d.ts +2 -1
  404. package/lib/simple-tree/api/index.d.ts.map +1 -1
  405. package/lib/simple-tree/api/index.js +1 -0
  406. package/lib/simple-tree/api/index.js.map +1 -1
  407. package/lib/simple-tree/api/jsonSchema.d.ts +13 -14
  408. package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
  409. package/lib/simple-tree/api/jsonSchema.js.map +1 -1
  410. package/lib/simple-tree/api/schemaFactory.d.ts +14 -8
  411. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  412. package/lib/simple-tree/api/schemaFactory.js +21 -2
  413. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  414. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  415. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  416. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  417. package/lib/simple-tree/api/simpleSchema.d.ts +18 -10
  418. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
  419. package/lib/simple-tree/api/simpleSchema.js.map +1 -1
  420. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  421. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +31 -18
  422. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  423. package/lib/simple-tree/api/tree.d.ts +16 -6
  424. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  425. package/lib/simple-tree/api/tree.js +4 -4
  426. package/lib/simple-tree/api/tree.js.map +1 -1
  427. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  428. package/lib/simple-tree/api/treeNodeApi.js +10 -8
  429. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  430. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  431. package/lib/simple-tree/api/verboseTree.js +6 -10
  432. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  433. package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
  434. package/lib/simple-tree/api/view.d.ts.map +1 -0
  435. package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  436. package/lib/simple-tree/api/view.js.map +1 -0
  437. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  438. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  439. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
  440. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  441. package/lib/simple-tree/arrayNode.d.ts +147 -14
  442. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  443. package/lib/simple-tree/arrayNode.js +37 -25
  444. package/lib/simple-tree/arrayNode.js.map +1 -1
  445. package/lib/simple-tree/core/context.d.ts +55 -0
  446. package/lib/simple-tree/core/context.d.ts.map +1 -0
  447. package/lib/simple-tree/core/context.js +55 -0
  448. package/lib/simple-tree/core/context.js.map +1 -0
  449. package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
  450. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  451. package/lib/simple-tree/core/getOrCreateNode.js +32 -0
  452. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
  453. package/lib/simple-tree/core/index.d.ts +7 -3
  454. package/lib/simple-tree/core/index.d.ts.map +1 -1
  455. package/lib/simple-tree/core/index.js +6 -2
  456. package/lib/simple-tree/core/index.js.map +1 -1
  457. package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
  458. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  459. package/lib/simple-tree/core/schemaCaching.js +13 -39
  460. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  461. package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
  462. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  463. package/lib/simple-tree/core/treeNodeKernel.js +89 -54
  464. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  465. package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
  466. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  467. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  468. package/lib/simple-tree/core/types.d.ts +0 -5
  469. package/lib/simple-tree/core/types.d.ts.map +1 -1
  470. package/lib/simple-tree/core/types.js.map +1 -1
  471. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  472. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  473. package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
  474. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  475. package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  476. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
  477. package/lib/simple-tree/core/walkSchema.js +29 -0
  478. package/lib/simple-tree/core/walkSchema.js.map +1 -0
  479. package/lib/simple-tree/createContext.d.ts +11 -0
  480. package/lib/simple-tree/createContext.d.ts.map +1 -0
  481. package/lib/simple-tree/createContext.js +21 -0
  482. package/lib/simple-tree/createContext.js.map +1 -0
  483. package/lib/simple-tree/index.d.ts +4 -5
  484. package/lib/simple-tree/index.d.ts.map +1 -1
  485. package/lib/simple-tree/index.js +3 -4
  486. package/lib/simple-tree/index.js.map +1 -1
  487. package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
  488. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  489. package/lib/simple-tree/leafNodeSchema.js +3 -4
  490. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  491. package/lib/simple-tree/mapNode.d.ts +4 -4
  492. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  493. package/lib/simple-tree/mapNode.js +12 -8
  494. package/lib/simple-tree/mapNode.js.map +1 -1
  495. package/lib/simple-tree/objectNode.d.ts +8 -8
  496. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  497. package/lib/simple-tree/objectNode.js +36 -17
  498. package/lib/simple-tree/objectNode.js.map +1 -1
  499. package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
  500. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  501. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  502. package/lib/simple-tree/proxies.d.ts +1 -2
  503. package/lib/simple-tree/proxies.d.ts.map +1 -1
  504. package/lib/simple-tree/proxies.js +7 -22
  505. package/lib/simple-tree/proxies.js.map +1 -1
  506. package/lib/simple-tree/schemaTypes.d.ts +44 -4
  507. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  508. package/lib/simple-tree/schemaTypes.js +10 -0
  509. package/lib/simple-tree/schemaTypes.js.map +1 -1
  510. package/lib/simple-tree/toFlexSchema.d.ts +6 -36
  511. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  512. package/lib/simple-tree/toFlexSchema.js +61 -142
  513. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  514. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  515. package/lib/simple-tree/toMapTree.js +4 -4
  516. package/lib/simple-tree/toMapTree.js.map +1 -1
  517. package/lib/simple-tree/treeNodeValid.d.ts +13 -5
  518. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  519. package/lib/simple-tree/treeNodeValid.js +21 -12
  520. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  521. package/lib/simple-tree/typesUnsafe.d.ts +4 -4
  522. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  523. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  524. package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
  525. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
  526. package/lib/simple-tree/walkFieldSchema.js +13 -0
  527. package/lib/simple-tree/walkFieldSchema.js.map +1 -0
  528. package/lib/util/index.d.ts +1 -1
  529. package/lib/util/index.d.ts.map +1 -1
  530. package/lib/util/index.js.map +1 -1
  531. package/lib/util/typeUtils.d.ts +14 -45
  532. package/lib/util/typeUtils.d.ts.map +1 -1
  533. package/lib/util/typeUtils.js.map +1 -1
  534. package/package.json +41 -22
  535. package/src/core/index.ts +1 -0
  536. package/src/core/rebase/index.ts +1 -0
  537. package/src/core/rebase/types.ts +11 -0
  538. package/src/core/schema-stored/schema.ts +18 -0
  539. package/src/core/tree/anchorSet.ts +3 -4
  540. package/src/core/tree/detachedFieldIndex.ts +14 -3
  541. package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
  542. package/src/feature-libraries/editableTreeBinder.ts +2 -915
  543. package/src/feature-libraries/flex-tree/context.ts +7 -20
  544. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
  545. package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
  546. package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
  547. package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
  548. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  549. package/src/feature-libraries/index.ts +3 -71
  550. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +97 -10
  551. package/src/feature-libraries/sequence-field/compose.ts +3 -0
  552. package/src/feature-libraries/sequence-field/utils.ts +2 -4
  553. package/src/feature-libraries/typed-schema/flexList.ts +3 -84
  554. package/src/feature-libraries/typed-schema/index.ts +1 -33
  555. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
  556. package/src/index.ts +7 -0
  557. package/src/internalTypes.ts +0 -1
  558. package/src/packageVersion.ts +1 -1
  559. package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
  560. package/src/shared-tree/index.ts +4 -8
  561. package/src/shared-tree/schematizeTree.ts +2 -56
  562. package/src/shared-tree/schematizingTreeView.ts +38 -15
  563. package/src/shared-tree/sharedTree.ts +36 -8
  564. package/src/shared-tree/treeCheckout.ts +225 -128
  565. package/src/shared-tree-core/branch.ts +15 -26
  566. package/src/simple-tree/api/create.ts +18 -20
  567. package/src/simple-tree/api/getJsonSchema.ts +3 -3
  568. package/src/simple-tree/api/getSimpleSchema.ts +2 -2
  569. package/src/simple-tree/api/index.ts +2 -0
  570. package/src/simple-tree/api/jsonSchema.ts +19 -17
  571. package/src/simple-tree/api/schemaFactory.ts +53 -18
  572. package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
  573. package/src/simple-tree/api/simpleSchema.ts +20 -10
  574. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +40 -19
  575. package/src/simple-tree/api/tree.ts +20 -9
  576. package/src/simple-tree/api/treeNodeApi.ts +12 -10
  577. package/src/simple-tree/api/verboseTree.ts +6 -12
  578. package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
  579. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +18 -4
  580. package/src/simple-tree/arrayNode.ts +202 -53
  581. package/src/simple-tree/core/context.ts +78 -0
  582. package/src/simple-tree/core/getOrCreateNode.ts +38 -0
  583. package/src/simple-tree/core/index.ts +11 -7
  584. package/src/simple-tree/core/schemaCaching.ts +13 -50
  585. package/src/simple-tree/core/treeNodeKernel.ts +117 -78
  586. package/src/simple-tree/core/treeNodeSchema.ts +35 -1
  587. package/src/simple-tree/core/types.ts +0 -5
  588. package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
  589. package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
  590. package/src/simple-tree/createContext.ts +24 -0
  591. package/src/simple-tree/index.ts +6 -2
  592. package/src/simple-tree/leafNodeSchema.ts +3 -9
  593. package/src/simple-tree/mapNode.ts +20 -17
  594. package/src/simple-tree/objectNode.ts +63 -38
  595. package/src/simple-tree/objectNodeTypes.ts +8 -5
  596. package/src/simple-tree/proxies.ts +8 -26
  597. package/src/simple-tree/schemaTypes.ts +55 -5
  598. package/src/simple-tree/toFlexSchema.ts +71 -204
  599. package/src/simple-tree/toMapTree.ts +5 -5
  600. package/src/simple-tree/treeNodeValid.ts +28 -22
  601. package/src/simple-tree/typesUnsafe.ts +4 -4
  602. package/src/simple-tree/walkFieldSchema.ts +19 -0
  603. package/src/util/index.ts +1 -5
  604. package/src/util/typeUtils.ts +14 -56
  605. package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
  606. package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
  607. package/dist/feature-libraries/fieldGenerator.js +0 -13
  608. package/dist/feature-libraries/fieldGenerator.js.map +0 -1
  609. package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
  610. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  611. package/dist/feature-libraries/flex-map-tree/index.js +0 -14
  612. package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
  613. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  614. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  615. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  616. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
  617. package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  618. package/dist/feature-libraries/storedToViewSchema.js +0 -67
  619. package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
  620. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  621. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  622. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
  623. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  624. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  625. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  626. package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
  627. package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  628. package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
  629. package/dist/feature-libraries/typed-schema/view.js.map +0 -1
  630. package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  631. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  632. package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
  633. package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
  634. package/dist/simple-tree/walkSchema.d.ts.map +0 -1
  635. package/dist/simple-tree/walkSchema.js +0 -49
  636. package/dist/simple-tree/walkSchema.js.map +0 -1
  637. package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
  638. package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
  639. package/lib/feature-libraries/fieldGenerator.js +0 -12
  640. package/lib/feature-libraries/fieldGenerator.js.map +0 -1
  641. package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
  642. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  643. package/lib/feature-libraries/flex-map-tree/index.js +0 -6
  644. package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
  645. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  646. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  647. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  648. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
  649. package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  650. package/lib/feature-libraries/storedToViewSchema.js +0 -62
  651. package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
  652. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  653. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  654. package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
  655. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  656. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  657. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  658. package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
  659. package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  660. package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
  661. package/lib/feature-libraries/typed-schema/view.js.map +0 -1
  662. package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  663. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  664. package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
  665. package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
  666. package/lib/simple-tree/walkSchema.d.ts.map +0 -1
  667. package/lib/simple-tree/walkSchema.js +0 -43
  668. package/lib/simple-tree/walkSchema.js.map +0 -1
  669. package/src/feature-libraries/fieldGenerator.ts +0 -47
  670. package/src/feature-libraries/flex-map-tree/index.ts +0 -14
  671. package/src/feature-libraries/storedToViewSchema.ts +0 -100
  672. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
  673. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
  674. package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
@@ -50,16 +50,25 @@ import {
50
50
  type FieldBatchCodec,
51
51
  type TreeCompressionStrategy,
52
52
  buildForest,
53
+ createNodeKeyManager,
53
54
  intoDelta,
54
55
  jsonableTreeFromCursor,
55
56
  makeFieldBatchCodec,
56
57
  } from "../feature-libraries/index.js";
57
58
  import { SharedTreeBranch, getChangeReplaceType } from "../shared-tree-core/index.js";
58
- import { type IDisposable, TransactionResult, disposeSymbol, fail } from "../util/index.js";
59
+ import { Breakable, TransactionResult, disposeSymbol, fail } from "../util/index.js";
59
60
 
60
61
  import { SharedTreeChangeFamily, hasSchemaChange } from "./sharedTreeChangeFamily.js";
61
62
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
62
63
  import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
64
+ import type { IDisposable } from "@fluidframework/core-interfaces";
65
+ import type {
66
+ ImplicitFieldSchema,
67
+ TreeView,
68
+ TreeViewConfiguration,
69
+ ViewableTree,
70
+ } from "../simple-tree/index.js";
71
+ import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
63
72
 
64
73
  /**
65
74
  * Events for {@link ITreeCheckout}.
@@ -89,6 +98,57 @@ export interface CheckoutEvents {
89
98
  commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
90
99
  }
91
100
 
101
+ /**
102
+ * A "version control"-style branch of a SharedTree.
103
+ * @remarks Branches may be used to coordinate edits to a SharedTree, e.g. via merge and rebase operations.
104
+ * Changes applied to a branch of a branch only apply to that branch and are isolated from other branches.
105
+ * Changes may be synchronized across branches via merge and rebase operations provided on the branch object.
106
+ * @alpha @sealed
107
+ */
108
+ export interface TreeBranch extends ViewableTree {
109
+ /**
110
+ * Spawn a new branch which is based off of the current state of this branch.
111
+ * Any mutations of the new branch will not apply to this branch until the new branch is merged back into this branch via `merge()`.
112
+ */
113
+ branch(): TreeBranchFork;
114
+
115
+ /**
116
+ * Apply all the new changes on the given branch to this branch.
117
+ * @param view - a branch which was created by a call to `branch()`.
118
+ * It is automatically disposed after the merge completes.
119
+ * @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
120
+ * A "commitApplied" event and a corresponding {@link Revertible} will be emitted on this branch for each new change merged from 'branch'.
121
+ */
122
+ merge(branch: TreeBranchFork): void;
123
+
124
+ /**
125
+ * Apply all the new changes on the given branch to this branch.
126
+ * @param branch - a branch which was created by a call to `branch()`.
127
+ * @param disposeMerged - whether or not to dispose `branch` after the merge completes.
128
+ * @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
129
+ */
130
+ merge(branch: TreeBranchFork, disposeMerged: boolean): void;
131
+
132
+ /**
133
+ * Rebase the given branch onto this branch.
134
+ * @param branch - a branch which was created by a call to `branch()`. It is modified by this operation.
135
+ */
136
+ rebase(branch: TreeBranchFork): void;
137
+ }
138
+
139
+ /**
140
+ * A {@link TreeBranch | branch} of a SharedTree that has merged from another branch.
141
+ * @remarks This branch should be disposed when it is no longer needed in order to free resources.
142
+ * @alpha @sealed
143
+ */
144
+ export interface TreeBranchFork extends TreeBranch, IDisposable {
145
+ /**
146
+ * Rebase the changes that have been applied to this branch over all the new changes in the given branch.
147
+ * @param branch - Either the root branch or a branch that was created by a call to `branch()`. It is not modified by this operation.
148
+ */
149
+ rebaseOnto(branch: TreeBranch): void;
150
+ }
151
+
92
152
  /**
93
153
  * Provides a means for interacting with a SharedTree.
94
154
  * This includes reading data from the tree and running transactions to mutate the tree.
@@ -97,7 +157,7 @@ export interface CheckoutEvents {
97
157
  * API for interacting with a {@link SharedTreeBranch}.
98
158
  * Implementations of this interface must implement the {@link branchKey} property.
99
159
  */
100
- export interface ITreeCheckout extends AnchorLocator {
160
+ export interface ITreeCheckout extends AnchorLocator, ViewableTree {
101
161
  /**
102
162
  * Read and Write access for schema stored in the document.
103
163
  *
@@ -133,33 +193,13 @@ export interface ITreeCheckout extends AnchorLocator {
133
193
  */
134
194
  readonly transaction: ITransaction;
135
195
 
136
- /**
137
- * Spawn a new view which is based off of the current state of this view.
138
- * Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
139
- */
140
- fork(): ITreeCheckoutFork;
196
+ branch(): ITreeCheckoutFork;
141
197
 
142
- /**
143
- * Apply all the new changes on the given view to this view.
144
- * @param view - a view which was created by a call to `fork()`.
145
- * It is automatically disposed after the merge completes.
146
- * @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
147
- */
148
- merge(view: ITreeCheckoutFork): void;
198
+ merge(checkout: ITreeCheckoutFork): void;
149
199
 
150
- /**
151
- * Apply all the new changes on the given view to this view.
152
- * @param view - a view which was created by a call to `fork()`.
153
- * @param disposeView - whether or not to dispose `view` after the merge completes.
154
- * @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
155
- */
156
- merge(view: ITreeCheckoutFork, disposeView: boolean): void;
200
+ merge(checkout: ITreeCheckoutFork, disposeMerged: boolean): void;
157
201
 
158
- /**
159
- * Rebase the given view onto this view.
160
- * @param view - a view which was created by a call to `fork()`. It is modified by this operation.
161
- */
162
- rebase(view: ITreeCheckoutFork): void;
202
+ rebase(checkout: ITreeCheckoutFork): void;
163
203
 
164
204
  /**
165
205
  * Replaces all schema with the provided schema.
@@ -210,6 +250,7 @@ export function createTreeCheckout(
210
250
  removedRoots?: DetachedFieldIndex;
211
251
  chunkCompressionStrategy?: TreeCompressionStrategy;
212
252
  logger?: ITelemetryLoggerExt;
253
+ breaker?: Breakable;
213
254
  },
214
255
  ): TreeCheckout {
215
256
  const forest = args?.forest ?? buildForest();
@@ -252,6 +293,7 @@ export function createTreeCheckout(
252
293
  idCompressor,
253
294
  args?.removedRoots,
254
295
  args?.logger,
296
+ args?.breaker,
255
297
  );
256
298
  }
257
299
 
@@ -263,7 +305,7 @@ export function createTreeCheckout(
263
305
  * Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
264
306
  *
265
307
  * To avoid updating observers of the view state with intermediate results during a transaction,
266
- * use {@link ITreeCheckout#fork} and {@link ISharedTreeFork#merge}.
308
+ * use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
267
309
  */
268
310
  export interface ITransaction {
269
311
  /**
@@ -328,11 +370,7 @@ class Transaction implements ITransaction {
328
370
  *
329
371
  * {@link ITreeCheckout} that has forked off of the main trunk/branch.
330
372
  */
331
- export interface ITreeCheckoutFork extends ITreeCheckout, IDisposable {
332
- /**
333
- * Rebase the changes that have been applied to this view over all the new changes in the given view.
334
- * @param view - Either the root view or a view that was created by a call to `fork()`. It is not modified by this operation.
335
- */
373
+ export interface ITreeCheckoutFork extends ITreeCheckout {
336
374
  rebaseOnto(view: ITreeCheckout): void;
337
375
  }
338
376
 
@@ -354,7 +392,9 @@ export interface RevertMetrics {
354
392
  * An implementation of {@link ITreeCheckoutFork}.
355
393
  */
356
394
  export class TreeCheckout implements ITreeCheckoutFork {
357
- private isDisposed = false;
395
+ public disposed = false;
396
+
397
+ private readonly views = new Set<TreeView<ImplicitFieldSchema>>();
358
398
 
359
399
  /**
360
400
  * Set of revertibles maintained for automatic disposal
@@ -384,7 +424,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
384
424
 
385
425
  public constructor(
386
426
  public readonly transaction: ITransaction,
387
- private readonly branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
427
+ private readonly _branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
388
428
  private readonly changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>,
389
429
  public readonly storedSchema: TreeStoredSchemaRepository,
390
430
  public readonly forest: IEditableForest,
@@ -401,17 +441,18 @@ export class TreeCheckout implements ITreeCheckoutFork {
401
441
  ),
402
442
  /** Optional logger for telemetry. */
403
443
  private readonly logger?: ITelemetryLoggerExt,
444
+ private readonly breaker: Breakable = new Breakable("TreeCheckout"),
404
445
  ) {
405
446
  // when a transaction is started, take a snapshot of the current state of removed roots
406
- branch.on("transactionStarted", () => {
447
+ _branch.on("transactionStarted", () => {
407
448
  this.removedRootsSnapshots.push(this.removedRoots.clone());
408
449
  });
409
450
  // when a transaction is committed, the latest snapshot of removed roots can be discarded
410
- branch.on("transactionCommitted", () => {
451
+ _branch.on("transactionCommitted", () => {
411
452
  this.removedRootsSnapshots.pop();
412
453
  });
413
454
  // after a transaction is rolled back, revert removed roots back to the latest snapshot
414
- branch.on("transactionRolledBack", () => {
455
+ _branch.on("transactionRolledBack", () => {
415
456
  const snapshot = this.removedRootsSnapshots.pop();
416
457
  assert(snapshot !== undefined, 0x9ae /* a snapshot for removed roots does not exist */);
417
458
  this.removedRoots = snapshot;
@@ -421,7 +462,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
421
462
  // For example, a bug in the editor might produce a malformed change object and thus applying the change to the forest will throw an error.
422
463
  // In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.
423
464
  // One important consequence of this is that we will not submit the op containing the invalid change, since op submissions happens in response to `afterChange`.
424
- branch.on("beforeChange", (event) => {
465
+ _branch.on("beforeChange", (event) => {
425
466
  if (event.change !== undefined) {
426
467
  const revision =
427
468
  event.type === "replace"
@@ -468,72 +509,83 @@ export class TreeCheckout implements ITreeCheckoutFork {
468
509
  }
469
510
  }
470
511
  });
471
- branch.on("commitApplied", (data) => {
472
- const commit = branch.getHead();
473
- const { change, revision } = commit;
474
- let withinEventContext = true;
475
-
476
- const getRevertible = hasSchemaChange(change)
477
- ? undefined
478
- : (onRevertibleDisposed?: (revertible: Revertible) => void) => {
479
- if (!withinEventContext) {
480
- throw new UsageError(
481
- "Cannot get a revertible outside of the context of a commitApplied event.",
482
- );
483
- }
484
- if (this.revertibleCommitBranches.get(revision) !== undefined) {
485
- throw new UsageError(
486
- "Cannot generate the same revertible more than once. Note that this can happen when multiple commitApplied event listeners are registered.",
487
- );
488
- }
489
- const revertibleCommits = this.revertibleCommitBranches;
490
- const revertible: DisposableRevertible = {
491
- get status(): RevertibleStatus {
492
- const revertibleCommit = revertibleCommits.get(revision);
493
- return revertibleCommit === undefined
494
- ? RevertibleStatus.Disposed
495
- : RevertibleStatus.Valid;
496
- },
497
- revert: (release: boolean = true) => {
498
- if (revertible.status === RevertibleStatus.Disposed) {
499
- throw new UsageError(
500
- "Unable to revert a revertible that has been disposed.",
501
- );
502
- }
503
-
504
- const revertMetrics = this.revertRevertible(revision, data.kind);
505
- this.logger?.sendTelemetryEvent({
506
- eventName: TreeCheckout.revertTelemetryEventName,
507
- ...revertMetrics,
508
- });
509
-
510
- if (release) {
511
- revertible.dispose();
512
- }
513
- },
514
- dispose: () => {
515
- if (revertible.status === RevertibleStatus.Disposed) {
516
- throw new UsageError(
517
- "Unable to dispose a revertible that has already been disposed.",
518
- );
519
- }
520
- this.disposeRevertible(revertible, revision);
521
- onRevertibleDisposed?.(revertible);
522
- },
523
- };
524
-
525
- this.revertibleCommitBranches.set(revision, branch.fork());
526
- this.revertibles.add(revertible);
527
- return revertible;
528
- };
529
-
530
- this.events.emit("commitApplied", data, getRevertible);
531
- withinEventContext = false;
512
+ _branch.on("afterChange", (event) => {
513
+ // The following logic allows revertibles to be generated for the change.
514
+ // Currently only appends (including merges) and transaction commits are supported.
515
+ if (!_branch.isTransacting()) {
516
+ if (
517
+ event.type === "append" ||
518
+ (event.type === "replace" && getChangeReplaceType(event) === "transactionCommit")
519
+ ) {
520
+ for (const commit of event.newCommits) {
521
+ const kind = event.type === "append" ? event.kind : CommitKind.Default;
522
+ const { change, revision } = commit;
523
+
524
+ const getRevertible = hasSchemaChange(change)
525
+ ? undefined
526
+ : (onRevertibleDisposed?: (revertible: Revertible) => void) => {
527
+ if (!withinEventContext) {
528
+ throw new UsageError(
529
+ "Cannot get a revertible outside of the context of a commitApplied event.",
530
+ );
531
+ }
532
+ if (this.revertibleCommitBranches.get(revision) !== undefined) {
533
+ throw new UsageError(
534
+ "Cannot generate the same revertible more than once. Note that this can happen when multiple commitApplied event listeners are registered.",
535
+ );
536
+ }
537
+ const revertibleCommits = this.revertibleCommitBranches;
538
+ const revertible: DisposableRevertible = {
539
+ get status(): RevertibleStatus {
540
+ const revertibleCommit = revertibleCommits.get(revision);
541
+ return revertibleCommit === undefined
542
+ ? RevertibleStatus.Disposed
543
+ : RevertibleStatus.Valid;
544
+ },
545
+ revert: (release: boolean = true) => {
546
+ if (revertible.status === RevertibleStatus.Disposed) {
547
+ throw new UsageError(
548
+ "Unable to revert a revertible that has been disposed.",
549
+ );
550
+ }
551
+
552
+ const revertMetrics = this.revertRevertible(revision, kind);
553
+ this.logger?.sendTelemetryEvent({
554
+ eventName: TreeCheckout.revertTelemetryEventName,
555
+ ...revertMetrics,
556
+ });
557
+
558
+ if (release) {
559
+ revertible.dispose();
560
+ }
561
+ },
562
+ dispose: () => {
563
+ if (revertible.status === RevertibleStatus.Disposed) {
564
+ throw new UsageError(
565
+ "Unable to dispose a revertible that has already been disposed.",
566
+ );
567
+ }
568
+ this.disposeRevertible(revertible, revision);
569
+ onRevertibleDisposed?.(revertible);
570
+ },
571
+ };
572
+
573
+ this.revertibleCommitBranches.set(revision, _branch.fork(commit));
574
+ this.revertibles.add(revertible);
575
+ return revertible;
576
+ };
577
+
578
+ let withinEventContext = true;
579
+ this.events.emit("commitApplied", { isLocal: true, kind }, getRevertible);
580
+ withinEventContext = false;
581
+ }
582
+ }
583
+ }
532
584
  });
533
585
 
534
586
  // When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the
535
587
  // trimmed revisions.
536
- branch.on("ancestryTrimmed", (revisions) => {
588
+ _branch.on("ancestryTrimmed", (revisions) => {
537
589
  this.withCombinedVisitor((visitor) => {
538
590
  revisions.forEach((revision) => {
539
591
  // get all the roots last created or used by the revision
@@ -560,8 +612,29 @@ export class TreeCheckout implements ITreeCheckoutFork {
560
612
  combinedVisitor.free();
561
613
  }
562
614
 
563
- private checkNotDisposed(): void {
564
- assert(!this.isDisposed, 0x911 /* Invalid operation on a disposed TreeCheckout */);
615
+ private checkNotDisposed(usageError?: string): void {
616
+ if (this.disposed) {
617
+ if (usageError !== undefined) {
618
+ throw new UsageError(usageError);
619
+ }
620
+ assert(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
621
+ }
622
+ }
623
+
624
+ public viewWith<TRoot extends ImplicitFieldSchema>(
625
+ config: TreeViewConfiguration<TRoot>,
626
+ ): SchematizingSimpleTreeView<TRoot> {
627
+ const view = new SchematizingSimpleTreeView(
628
+ this,
629
+ config,
630
+ createNodeKeyManager(this.idCompressor),
631
+ this.breaker,
632
+ () => {
633
+ this.views.delete(view);
634
+ },
635
+ );
636
+ this.views.add(view);
637
+ return view;
565
638
  }
566
639
 
567
640
  public get rootEvents(): Listenable<AnchorSetRootEvents> {
@@ -570,7 +643,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
570
643
 
571
644
  public get editor(): ISharedTreeEditor {
572
645
  this.checkNotDisposed();
573
- return this.branch.editor;
646
+ return this._branch.editor;
574
647
  }
575
648
 
576
649
  public locate(anchor: Anchor): AnchorNode | undefined {
@@ -578,10 +651,12 @@ export class TreeCheckout implements ITreeCheckoutFork {
578
651
  return this.forest.anchors.locate(anchor);
579
652
  }
580
653
 
581
- public fork(): TreeCheckout {
582
- this.checkNotDisposed();
654
+ public branch(): TreeCheckout {
655
+ this.checkNotDisposed(
656
+ "The parent branch has already been disposed and can no longer create new branches.",
657
+ );
583
658
  const anchors = new AnchorSet();
584
- const branch = this.branch.fork();
659
+ const branch = this._branch.fork();
585
660
  const storedSchema = this.storedSchema.clone();
586
661
  const forest = this.forest.clone(storedSchema, anchors);
587
662
  const transaction = new Transaction(branch);
@@ -597,37 +672,50 @@ export class TreeCheckout implements ITreeCheckoutFork {
597
672
  this.idCompressor,
598
673
  this.removedRoots.clone(),
599
674
  this.logger,
675
+ this.breaker,
600
676
  );
601
677
  }
602
678
 
603
- public rebase(view: TreeCheckout): void {
604
- this.checkNotDisposed();
679
+ public rebase(checkout: TreeCheckout): void {
680
+ this.checkNotDisposed(
681
+ "The target of the branch rebase has been disposed and cannot be rebased.",
682
+ );
683
+ checkout.checkNotDisposed(
684
+ "The source of the branch rebase has been disposed and cannot be rebased.",
685
+ );
605
686
  assert(
606
- !view.transaction.inProgress(),
687
+ !checkout.transaction.inProgress(),
607
688
  0x9af /* A view cannot be rebased while it has a pending transaction */,
608
689
  );
609
- view.branch.rebaseOnto(this.branch);
690
+ checkout._branch.rebaseOnto(this._branch);
610
691
  }
611
692
 
612
- public rebaseOnto(view: ITreeCheckout): void {
613
- this.checkNotDisposed();
614
- view.rebase(this);
693
+ public rebaseOnto(checkout: ITreeCheckout): void {
694
+ this.checkNotDisposed(
695
+ "The target of the branch rebase has been disposed and cannot be rebased.",
696
+ );
697
+ checkout.rebase(this);
615
698
  }
616
699
 
617
- public merge(view: TreeCheckout): void;
618
- public merge(view: TreeCheckout, disposeView: boolean): void;
619
- public merge(view: TreeCheckout, disposeView = true): void {
620
- this.checkNotDisposed();
700
+ public merge(checkout: TreeCheckout): void;
701
+ public merge(checkout: TreeCheckout, disposeMerged: boolean): void;
702
+ public merge(checkout: TreeCheckout, disposeMerged = true): void {
703
+ this.checkNotDisposed(
704
+ "The target of the branch merge has been disposed and cannot be merged.",
705
+ );
706
+ checkout.checkNotDisposed(
707
+ "The source of the branch merge has been disposed and cannot be merged.",
708
+ );
621
709
  assert(
622
710
  !this.transaction.inProgress(),
623
711
  0x9b0 /* Views cannot be merged into a view while it has a pending transaction */,
624
712
  );
625
- while (view.transaction.inProgress()) {
626
- view.transaction.commit();
713
+ while (checkout.transaction.inProgress()) {
714
+ checkout.transaction.commit();
627
715
  }
628
- this.branch.merge(view.branch);
629
- if (disposeView) {
630
- view[disposeSymbol]();
716
+ this._branch.merge(checkout._branch);
717
+ if (disposeMerged) {
718
+ checkout[disposeSymbol]();
631
719
  }
632
720
  }
633
721
 
@@ -636,11 +724,20 @@ export class TreeCheckout implements ITreeCheckoutFork {
636
724
  this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);
637
725
  }
638
726
 
727
+ public dispose(): void {
728
+ this[disposeSymbol]();
729
+ }
730
+
639
731
  public [disposeSymbol](): void {
640
- this.checkNotDisposed();
641
- this.isDisposed = true;
732
+ this.checkNotDisposed(
733
+ "The branch has already been disposed and cannot be disposed again.",
734
+ );
735
+ this.disposed = true;
642
736
  this.purgeRevertibles();
643
- this.branch.dispose();
737
+ this._branch.dispose();
738
+ for (const view of this.views) {
739
+ view.dispose();
740
+ }
644
741
  }
645
742
 
646
743
  public getRemovedRoots(): [string | number | undefined, number, JsonableTree][] {
@@ -681,7 +778,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
681
778
  }
682
779
 
683
780
  private revertRevertible(revision: RevisionTag, kind: CommitKind): RevertMetrics {
684
- if (this.branch.isTransacting()) {
781
+ if (this._branch.isTransacting()) {
685
782
  throw new UsageError("Undo is not yet supported during transactions.");
686
783
  }
687
784
 
@@ -693,7 +790,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
693
790
  this.changeFamily.rebaser.invert(tagChange(commitToRevert.change, revision), false),
694
791
  );
695
792
 
696
- const headCommit = this.branch.getHead();
793
+ const headCommit = this._branch.getHead();
697
794
  // Rebase the inverted change onto any commits that occurred after the undoable commits.
698
795
  if (commitToRevert !== headCommit) {
699
796
  change = makeAnonChange(
@@ -707,7 +804,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
707
804
  );
708
805
  }
709
806
 
710
- this.branch.apply(
807
+ this._branch.apply(
711
808
  change.change,
712
809
  this.mintRevisionTag(),
713
810
  kind === CommitKind.Default || kind === CommitKind.Redo
@@ -11,7 +11,6 @@ import {
11
11
  type ChangeFamily,
12
12
  type ChangeFamilyEditor,
13
13
  CommitKind,
14
- type CommitMetadata,
15
14
  type GraphCommit,
16
15
  type RevisionTag,
17
16
  type TaggedChange,
@@ -46,6 +45,7 @@ import { fail } from "../util/index.js";
46
45
  export type SharedTreeBranchChange<TChange> =
47
46
  | {
48
47
  type: "append";
48
+ kind: CommitKind;
49
49
  change: TaggedChange<TChange>;
50
50
  newCommits: readonly GraphCommit<TChange>[];
51
51
  }
@@ -116,11 +116,6 @@ export interface SharedTreeBranchEvents<TEditor extends ChangeFamilyEditor, TCha
116
116
  */
117
117
  afterChange(change: SharedTreeBranchChange<TChange>): void;
118
118
 
119
- /**
120
- * {@inheritdoc TreeViewEvents.commitApplied}
121
- */
122
- commitApplied(data: CommitMetadata): void;
123
-
124
119
  /**
125
120
  * Fired when this branch forks
126
121
  * @param fork - the new branch that forked off of this branch
@@ -250,13 +245,13 @@ export class SharedTreeBranch<
250
245
  * Apply a change to this branch.
251
246
  * @param change - the change to apply
252
247
  * @param revision - the revision of the new head commit of the branch that contains `change`
253
- * @param changeKind - the kind of change to apply
248
+ * @param kind - the kind of change to apply
254
249
  * @returns the change that was applied and the new head commit of the branch
255
250
  */
256
251
  public apply(
257
252
  change: TChange,
258
253
  revision: RevisionTag,
259
- changeKind: CommitKind = CommitKind.Default,
254
+ kind: CommitKind = CommitKind.Default,
260
255
  ): [change: TChange, newCommit: GraphCommit<TChange>] {
261
256
  this.assertNotDisposed();
262
257
 
@@ -270,18 +265,13 @@ export class SharedTreeBranch<
270
265
 
271
266
  const changeEvent = {
272
267
  type: "append",
268
+ kind,
273
269
  change: tagChange(changeWithRevision, revision),
274
270
  newCommits: [newHead],
275
271
  } as const;
276
272
 
277
273
  this.emit("beforeChange", changeEvent);
278
274
  this.head = newHead;
279
-
280
- // If this is not part of a transaction, emit a commitApplied event
281
- if (!this.isTransacting()) {
282
- this.emit("commitApplied", { isLocal: true, kind: changeKind });
283
- }
284
-
285
275
  this.emit("afterChange", changeEvent);
286
276
  return [changeWithRevision, newHead];
287
277
  }
@@ -351,12 +341,6 @@ export class SharedTreeBranch<
351
341
 
352
342
  this.emit("beforeChange", changeEvent);
353
343
  this.head = newHead;
354
-
355
- // If this transaction is not nested, emit a commitApplied event
356
- if (!this.isTransacting()) {
357
- this.emit("commitApplied", { isLocal: true, kind: CommitKind.Default });
358
- }
359
-
360
344
  this.emit("afterChange", changeEvent);
361
345
  return [commits, newHead];
362
346
  }
@@ -442,14 +426,14 @@ export class SharedTreeBranch<
442
426
 
443
427
  /**
444
428
  * Spawn a new branch that is based off of the current state of this branch.
445
- * Changes made to the new branch will not be applied to this branch until the new branch is merged back in.
446
- *
447
- * @remarks Forks created during a transaction will be disposed when the transaction ends.
429
+ * @param commit - The commit to base the new branch off of. Defaults to the head of this branch.
430
+ * @remarks Changes made to the new branch will not be applied to this branch until the new branch is {@link SharedTreeBranch.merge | merged} back in.
431
+ * Forks created during a transaction will be disposed when the transaction ends.
448
432
  */
449
- public fork(): SharedTreeBranch<TEditor, TChange> {
433
+ public fork(commit: GraphCommit<TChange> = this.head): SharedTreeBranch<TEditor, TChange> {
450
434
  this.assertNotDisposed();
451
435
  const fork = new SharedTreeBranch(
452
- this.head,
436
+ commit,
453
437
  this.changeFamily,
454
438
  this.mintRevisionTag,
455
439
  this.branchTrimmer,
@@ -501,9 +485,9 @@ export class SharedTreeBranch<
501
485
  removedCommits: deletedSourceCommits,
502
486
  newCommits,
503
487
  } as const;
488
+
504
489
  this.emit("beforeChange", changeEvent);
505
490
  this.head = newSourceHead;
506
-
507
491
  this.emit("afterChange", changeEvent);
508
492
  return rebaseResult;
509
493
  }
@@ -525,6 +509,10 @@ export class SharedTreeBranch<
525
509
  0x597 /* Branch may not be merged while transaction is in progress */,
526
510
  );
527
511
 
512
+ if (branch === this) {
513
+ return undefined;
514
+ }
515
+
528
516
  // Rebase the given branch onto this branch
529
517
  const rebaseResult = this.rebaseBranch(branch, this);
530
518
  if (rebaseResult === undefined) {
@@ -537,6 +525,7 @@ export class SharedTreeBranch<
537
525
  const taggedChange = makeAnonChange(change);
538
526
  const changeEvent = {
539
527
  type: "append",
528
+ kind: CommitKind.Default,
540
529
  get change(): TaggedChange<TChange> {
541
530
  return taggedChange;
542
531
  },