@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
@@ -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,
@@ -19,7 +18,6 @@ import {
19
18
  makeAnonChange,
20
19
  mintCommit,
21
20
  rebaseBranch,
22
- tagChange,
23
21
  tagRollbackInverse,
24
22
  type RebaseStatsWithDuration,
25
23
  } from "../core/index.js";
@@ -46,6 +44,7 @@ import { fail } from "../util/index.js";
46
44
  export type SharedTreeBranchChange<TChange> =
47
45
  | {
48
46
  type: "append";
47
+ kind: CommitKind;
49
48
  change: TaggedChange<TChange>;
50
49
  newCommits: readonly GraphCommit<TChange>[];
51
50
  }
@@ -116,11 +115,6 @@ export interface SharedTreeBranchEvents<TEditor extends ChangeFamilyEditor, TCha
116
115
  */
117
116
  afterChange(change: SharedTreeBranchChange<TChange>): void;
118
117
 
119
- /**
120
- * {@inheritdoc TreeViewEvents.commitApplied}
121
- */
122
- commitApplied(data: CommitMetadata): void;
123
-
124
118
  /**
125
119
  * Fired when this branch forks
126
120
  * @param fork - the new branch that forked off of this branch
@@ -229,8 +223,8 @@ export class SharedTreeBranch<
229
223
  >,
230
224
  ) {
231
225
  super();
232
- this.editor = this.changeFamily.buildEditor((change) =>
233
- this.apply(change, mintRevisionTag()),
226
+ this.editor = this.changeFamily.buildEditor(mintRevisionTag, (change) =>
227
+ this.apply(change),
234
228
  );
235
229
  this.unsubscribeBranchTrimmer = branchTrimmer?.on("ancestryTrimmed", (commit) => {
236
230
  this.emit("ancestryTrimmed", commit);
@@ -248,42 +242,35 @@ export class SharedTreeBranch<
248
242
 
249
243
  /**
250
244
  * Apply a change to this branch.
251
- * @param change - the change to apply
252
- * @param revision - the revision of the new head commit of the branch that contains `change`
253
- * @param changeKind - the kind of change to apply
245
+ * @param taggedChange - the change to apply
246
+ * @param kind - the kind of change to apply
254
247
  * @returns the change that was applied and the new head commit of the branch
255
248
  */
256
249
  public apply(
257
- change: TChange,
258
- revision: RevisionTag,
259
- changeKind: CommitKind = CommitKind.Default,
250
+ taggedChange: TaggedChange<TChange>,
251
+ kind: CommitKind = CommitKind.Default,
260
252
  ): [change: TChange, newCommit: GraphCommit<TChange>] {
261
253
  this.assertNotDisposed();
262
254
 
263
- // TODO: This should not be necessary when receiving changes from other clients.
264
- const changeWithRevision = this.changeFamily.rebaser.changeRevision(change, revision);
255
+ const revisionTag = taggedChange.revision;
256
+ assert(revisionTag !== undefined, "Revision tag must be provided");
265
257
 
266
258
  const newHead = mintCommit(this.head, {
267
- revision,
268
- change: changeWithRevision,
259
+ revision: revisionTag,
260
+ change: taggedChange.change,
269
261
  });
270
262
 
271
263
  const changeEvent = {
272
264
  type: "append",
273
- change: tagChange(changeWithRevision, revision),
265
+ kind,
266
+ change: taggedChange,
274
267
  newCommits: [newHead],
275
268
  } as const;
276
269
 
277
270
  this.emit("beforeChange", changeEvent);
278
271
  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
272
  this.emit("afterChange", changeEvent);
286
- return [changeWithRevision, newHead];
273
+ return [taggedChange.change, newHead];
287
274
  }
288
275
 
289
276
  /**
@@ -351,12 +338,6 @@ export class SharedTreeBranch<
351
338
 
352
339
  this.emit("beforeChange", changeEvent);
353
340
  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
341
  this.emit("afterChange", changeEvent);
361
342
  return [commits, newHead];
362
343
  }
@@ -387,7 +368,7 @@ export class SharedTreeBranch<
387
368
  const commit =
388
369
  commits[i] ?? fail("This wont run because we are iterating through commits");
389
370
  const inverse = this.changeFamily.rebaser.changeRevision(
390
- this.changeFamily.rebaser.invert(commit, true),
371
+ this.changeFamily.rebaser.invert(commit, true, revision),
391
372
  revision,
392
373
  commit.revision,
393
374
  );
@@ -442,14 +423,14 @@ export class SharedTreeBranch<
442
423
 
443
424
  /**
444
425
  * 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.
426
+ * @param commit - The commit to base the new branch off of. Defaults to the head of this branch.
427
+ * @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.
428
+ * Forks created during a transaction will be disposed when the transaction ends.
448
429
  */
449
- public fork(): SharedTreeBranch<TEditor, TChange> {
430
+ public fork(commit: GraphCommit<TChange> = this.head): SharedTreeBranch<TEditor, TChange> {
450
431
  this.assertNotDisposed();
451
432
  const fork = new SharedTreeBranch(
452
- this.head,
433
+ commit,
453
434
  this.changeFamily,
454
435
  this.mintRevisionTag,
455
436
  this.branchTrimmer,
@@ -501,9 +482,9 @@ export class SharedTreeBranch<
501
482
  removedCommits: deletedSourceCommits,
502
483
  newCommits,
503
484
  } as const;
485
+
504
486
  this.emit("beforeChange", changeEvent);
505
487
  this.head = newSourceHead;
506
-
507
488
  this.emit("afterChange", changeEvent);
508
489
  return rebaseResult;
509
490
  }
@@ -525,6 +506,10 @@ export class SharedTreeBranch<
525
506
  0x597 /* Branch may not be merged while transaction is in progress */,
526
507
  );
527
508
 
509
+ if (branch === this) {
510
+ return undefined;
511
+ }
512
+
528
513
  // Rebase the given branch onto this branch
529
514
  const rebaseResult = this.rebaseBranch(branch, this);
530
515
  if (rebaseResult === undefined) {
@@ -537,6 +522,7 @@ export class SharedTreeBranch<
537
522
  const taggedChange = makeAnonChange(change);
538
523
  const changeEvent = {
539
524
  type: "append",
525
+ kind: CommitKind.Default,
540
526
  get change(): TaggedChange<TChange> {
541
527
  return taggedChange;
542
528
  },
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, oob } from "@fluidframework/core-utils/internal";
7
- import type { ChangeRebaser, GraphCommit } from "../core/index.js";
7
+ import type { GraphCommit, TaggedChange } from "../core/index.js";
8
8
  import { disposeSymbol } from "../util/index.js";
9
9
  import type { ChangeEnricherReadonlyCheckout, ResubmitMachine } from "./index.js";
10
10
 
@@ -36,9 +36,9 @@ export class DefaultResubmitMachine<TChange> implements ResubmitMachine<TChange>
36
36
 
37
37
  public constructor(
38
38
  /**
39
- * A function that can invert a change.
39
+ * A function that can create a rollback for a given change.
40
40
  */
41
- private readonly inverter: ChangeRebaser<TChange>["invert"],
41
+ private readonly makeRollback: (change: TaggedChange<TChange>) => TChange,
42
42
  /**
43
43
  * Change enricher that represent the tip of the top-level local branch (i.e., the branch on which in-flight
44
44
  * commits are applied and automatically rebased).
@@ -75,7 +75,7 @@ export class DefaultResubmitMachine<TChange> implements ResubmitMachine<TChange>
75
75
  // Roll back the checkout to the state before the oldest commit
76
76
  for (let iCommit = toResubmit.length - 1; iCommit >= 0; iCommit -= 1) {
77
77
  const commit = toResubmit[iCommit] ?? oob();
78
- const rollback = this.inverter(commit, true);
78
+ const rollback = this.makeRollback(commit);
79
79
  // WARNING: it's not currently possible to roll back past a schema change (see AB#7265).
80
80
  // Either we have to make it possible to do so, or this logic will have to change to work
81
81
  // forwards from an earlier fork instead of backwards.
@@ -17,6 +17,7 @@ import {
17
17
  mintCommit,
18
18
  rebaseChange,
19
19
  type RebaseStatsWithDuration,
20
+ tagChange,
20
21
  } from "../core/index.js";
21
22
  import { type Mutable, brand, fail, getOrCreate, mapIterable } from "../util/index.js";
22
23
 
@@ -642,7 +643,7 @@ export class EditManager<
642
643
  ...newChangeFullyRebased.telemetryProperties,
643
644
  });
644
645
 
645
- peerLocalBranch.apply(newCommit.change, newCommit.revision);
646
+ peerLocalBranch.apply(tagChange(newCommit.change, newCommit.revision));
646
647
  this.pushCommitToTrunk(sequenceId, {
647
648
  ...newCommit,
648
649
  change: newChangeFullyRebased.change,
@@ -32,6 +32,7 @@ import {
32
32
  RevisionTagCodec,
33
33
  type SchemaAndPolicy,
34
34
  type SchemaPolicy,
35
+ type TaggedChange,
35
36
  type TreeStoredSchemaRepository,
36
37
  } from "../core/index.js";
37
38
  import {
@@ -271,7 +272,8 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
271
272
  this.resubmitMachine =
272
273
  resubmitMachine ??
273
274
  new DefaultResubmitMachine(
274
- changeFamily.rebaser.invert.bind(changeFamily.rebaser),
275
+ (change: TaggedChange<TChange>) =>
276
+ changeFamily.rebaser.invert(change, true, this.mintRevisionTag()),
275
277
  changeEnricher,
276
278
  );
277
279
  this.commitEnricher = new BranchCommitEnricher(changeFamily.rebaser, changeEnricher);
@@ -446,7 +448,7 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
446
448
  const {
447
449
  commit: { revision, change },
448
450
  } = this.messageCodec.decode(content, { idCompressor: this.idCompressor });
449
- this.editManager.localBranch.apply(change, revision);
451
+ this.editManager.localBranch.apply({ change, revision });
450
452
  }
451
453
 
452
454
  public override getGCData(fullGC?: boolean): IGarbageCollectionData {
@@ -7,7 +7,6 @@ import type { IFluidHandle } from "@fluidframework/core-interfaces";
7
7
  import { assert } from "@fluidframework/core-utils/internal";
8
8
 
9
9
  import type { ITreeCursorSynchronous, SchemaAndPolicy } from "../../core/index.js";
10
- import { fail } from "../../util/index.js";
11
10
  import type {
12
11
  TreeLeafValue,
13
12
  ImplicitFieldSchema,
@@ -16,19 +15,20 @@ import type {
16
15
  FieldSchema,
17
16
  FieldKind,
18
17
  } from "../schemaTypes.js";
19
- import type { Unhydrated } from "../core/index.js";
18
+ import {
19
+ getOrCreateNodeFromInnerNode,
20
+ UnhydratedFlexTreeNode,
21
+ type Unhydrated,
22
+ } from "../core/index.js";
20
23
  import {
21
24
  cursorForMapTreeNode,
22
25
  defaultSchemaPolicy,
23
26
  FieldKinds,
24
- intoStoredSchema,
25
27
  mapTreeFromCursor,
26
- UnhydratedContext,
27
28
  type NodeKeyManager,
28
29
  } from "../../feature-libraries/index.js";
29
- import { getOrCreateNodeFromFlexTreeNode } from "../proxies.js";
30
- import { getOrCreateMapTreeNode, isFieldInSchema } from "../../feature-libraries/index.js";
31
- import { toFlexSchema } from "../toFlexSchema.js";
30
+ import { isFieldInSchema } from "../../feature-libraries/index.js";
31
+ import { toStoredSchema } from "../toFlexSchema.js";
32
32
  import { inSchemaOrThrow, mapTreeFromNodeData, type InsertableContent } from "../toMapTree.js";
33
33
  import {
34
34
  applySchemaToParserOptions,
@@ -37,6 +37,7 @@ import {
37
37
  type VerboseTree,
38
38
  type VerboseTreeNode,
39
39
  } from "./verboseTree.js";
40
+ import { getUnhydratedContext } from "../createContext.js";
40
41
 
41
42
  /**
42
43
  * Construct tree content that is compatible with the field defined by the provided `schema`.
@@ -78,11 +79,11 @@ export function cursorFromInsertable<TSchema extends ImplicitFieldSchema>(
78
79
  ):
79
80
  | ITreeCursorSynchronous
80
81
  | (TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never) {
81
- const flexSchema = toFlexSchema(schema);
82
+ const storedSchema = toStoredSchema(schema);
82
83
  const schemaValidationPolicy: SchemaAndPolicy = {
83
84
  policy: defaultSchemaPolicy,
84
85
  // TODO: optimize: This isn't the most efficient operation since its not cached, and has to convert all the schema.
85
- schema: intoStoredSchema(flexSchema),
86
+ schema: storedSchema,
86
87
  };
87
88
 
88
89
  const mapTree = mapTreeFromNodeData(
@@ -93,7 +94,7 @@ export function cursorFromInsertable<TSchema extends ImplicitFieldSchema>(
93
94
  );
94
95
  if (mapTree === undefined) {
95
96
  assert(
96
- flexSchema.rootFieldSchema.kind === FieldKinds.optional,
97
+ storedSchema.rootFieldSchema.kind === FieldKinds.optional.identifier,
97
98
  0xa10 /* missing non-optional field */,
98
99
  );
99
100
  return undefined as TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never;
@@ -149,17 +150,17 @@ export function createFromCursor<TSchema extends ImplicitFieldSchema>(
149
150
  cursor: ITreeCursorSynchronous | undefined,
150
151
  ): Unhydrated<TreeFieldFromImplicitField<TSchema>> {
151
152
  const mapTrees = cursor === undefined ? [] : [mapTreeFromCursor(cursor)];
152
- const flexSchema = toFlexSchema(schema);
153
+ const context = getUnhydratedContext(schema);
154
+ const flexSchema = context.flexContext.schema;
153
155
 
154
156
  const schemaValidationPolicy: SchemaAndPolicy = {
155
157
  policy: defaultSchemaPolicy,
156
- // TODO: optimize: This isn't the most efficient operation since its not cached, and has to convert all the schema.
157
- schema: intoStoredSchema(flexSchema),
158
+ schema: context.flexContext.schema,
158
159
  };
159
160
 
160
161
  const maybeError = isFieldInSchema(
161
162
  mapTrees,
162
- flexSchema.rootFieldSchema.stored,
163
+ flexSchema.rootFieldSchema,
163
164
  schemaValidationPolicy,
164
165
  );
165
166
  inSchemaOrThrow(maybeError);
@@ -171,14 +172,11 @@ export function createFromCursor<TSchema extends ImplicitFieldSchema>(
171
172
  // Length asserted above, so this is safe. This assert is done instead of checking for undefined after indexing to ensure a length greater than 1 also errors.
172
173
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
174
  const mapTree = mapTrees[0]!;
174
- const rootSchema = flexSchema.nodeSchema.get(mapTree.type) ?? fail("missing schema");
175
- const mapTreeNode = getOrCreateMapTreeNode(
176
- new UnhydratedContext(flexSchema),
177
- rootSchema,
175
+ const mapTreeNode = UnhydratedFlexTreeNode.getOrCreate(
176
+ getUnhydratedContext(schema),
178
177
  mapTree,
179
178
  );
180
179
 
181
- // TODO: ensure this works for InnerNodes to create unhydrated nodes
182
- const result = getOrCreateNodeFromFlexTreeNode(mapTreeNode);
180
+ const result = getOrCreateNodeFromInnerNode(mapTreeNode);
183
181
  return result as Unhydrated<TreeFieldFromImplicitField<TSchema>>;
184
182
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { JsonTreeSchema } from "./jsonSchema.js";
7
- import type { ImplicitAllowedTypes } from "../schemaTypes.js";
7
+ import type { ImplicitFieldSchema } from "../schemaTypes.js";
8
8
  import { toJsonSchema } from "./simpleSchemaToJsonSchema.js";
9
9
  import { getSimpleSchema } from "./getSimpleSchema.js";
10
10
  import { getOrCreate } from "../../util/index.js";
@@ -53,7 +53,7 @@ const jsonSchemaCache = new WeakMap<TreeNodeSchema, JsonTreeSchema>();
53
53
  * "required": ["foo"],
54
54
  * },
55
55
  * },
56
- * "anyOf": [ { "$ref": "#/$defs/com.myapp.MyObject" } ],
56
+ * "$ref": "#/$defs/com.myapp.MyObject",
57
57
  * }
58
58
  * ```
59
59
  *
@@ -62,7 +62,7 @@ const jsonSchemaCache = new WeakMap<TreeNodeSchema, JsonTreeSchema>();
62
62
  *
63
63
  * @alpha
64
64
  */
65
- export function getJsonSchema(schema: ImplicitAllowedTypes): JsonTreeSchema {
65
+ export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema {
66
66
  return getOrCreate(jsonSchemaCache, schema, () => {
67
67
  const simpleSchema = getSimpleSchema(schema);
68
68
  return toJsonSchema(simpleSchema);
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { getOrCreate } from "../../util/index.js";
7
7
  import type { TreeNodeSchema } from "../core/index.js";
8
- import type { ImplicitAllowedTypes } from "../schemaTypes.js";
8
+ import type { ImplicitFieldSchema } from "../schemaTypes.js";
9
9
  import type { SimpleTreeSchema } from "./simpleSchema.js";
10
10
  import { toSimpleTreeSchema } from "./viewSchemaToSimpleSchema.js";
11
11
 
@@ -64,6 +64,6 @@ const simpleSchemaCache = new WeakMap<TreeNodeSchema, SimpleTreeSchema>();
64
64
  * @privateRemarks In the future, we may wish to move this to a more discoverable API location.
65
65
  * For now, while still an experimental API, it is surfaced as a free function.
66
66
  */
67
- export function getSimpleSchema(schema: ImplicitAllowedTypes): SimpleTreeSchema {
67
+ export function getSimpleSchema(schema: ImplicitFieldSchema): SimpleTreeSchema {
68
68
  return getOrCreate(simpleSchemaCache, schema, () => toSimpleTreeSchema(schema));
69
69
  }
@@ -6,6 +6,7 @@
6
6
  export {
7
7
  type ITree,
8
8
  type TreeView,
9
+ type ViewableTree,
9
10
  type TreeViewEvents,
10
11
  TreeViewConfiguration,
11
12
  type ITreeViewConfiguration,
@@ -44,6 +45,7 @@ export {
44
45
  } from "./jsonSchema.js";
45
46
  export { getJsonSchema } from "./getJsonSchema.js";
46
47
  export { getSimpleSchema } from "./getSimpleSchema.js";
48
+ export { ViewSchema } from "./view.js";
47
49
 
48
50
  export { TreeBeta, type NodeChangedData, type TreeChangeEventsBeta } from "./treeApiBeta.js";
49
51
 
@@ -18,7 +18,7 @@ import {
18
18
  isLazy,
19
19
  } from "../../feature-libraries/index.js";
20
20
  import {
21
- type RestrictiveReadonlyRecord,
21
+ type RestrictiveStringRecord,
22
22
  getOrCreate,
23
23
  isReadonlyArray,
24
24
  } from "../../util/index.js";
@@ -48,6 +48,8 @@ import type {
48
48
  WithType,
49
49
  TreeNodeSchema,
50
50
  TreeNodeSchemaClass,
51
+ TreeNodeSchemaNonClass,
52
+ TreeNodeSchemaBoth,
51
53
  } from "../core/index.js";
52
54
  import { type TreeArrayNode, arraySchema } from "../arrayNode.js";
53
55
  import {
@@ -291,7 +293,7 @@ export class SchemaFactory<
291
293
  */
292
294
  public object<
293
295
  const Name extends TName,
294
- const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
296
+ const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
295
297
  >(
296
298
  name: Name,
297
299
  fields: T,
@@ -331,7 +333,7 @@ export class SchemaFactory<
331
333
  */
332
334
  public map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(
333
335
  allowedTypes: T,
334
- ): TreeNodeSchema<
336
+ ): TreeNodeSchemaNonClass<
335
337
  ScopedSchemaName<TScope, `Map<${string}>`>,
336
338
  NodeKind.Map,
337
339
  TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>,
@@ -362,6 +364,12 @@ export class SchemaFactory<
362
364
  T
363
365
  >;
364
366
 
367
+ /**
368
+ * @privateRemarks
369
+ * This should return `TreeNodeSchemaBoth`, however TypeScript gives an error if one of the overloads implicitly up-casts the return type of the implementation.
370
+ * This seems like a TypeScript bug getting variance backwards for overload return types since it's erroring when the relation between the overload
371
+ * and the implementation is type safe, and forcing an unsafe typing instead.
372
+ */
365
373
  public map<const T extends ImplicitAllowedTypes>(
366
374
  nameOrAllowedTypes: TName | ((T & TreeNodeSchema) | readonly TreeNodeSchema[]),
367
375
  allowedTypes?: T,
@@ -379,7 +387,7 @@ export class SchemaFactory<
379
387
  false,
380
388
  true,
381
389
  ) as TreeNodeSchema,
382
- ) as TreeNodeSchemaClass<
390
+ ) as TreeNodeSchemaBoth<
383
391
  string,
384
392
  NodeKind.Map,
385
393
  TreeMapNode<T>,
@@ -388,7 +396,16 @@ export class SchemaFactory<
388
396
  T
389
397
  >;
390
398
  }
391
- return this.namedMap(nameOrAllowedTypes as TName, allowedTypes, true, true);
399
+ // To actually have type safety, assign to the type this method should return before implicitly upcasting when returning.
400
+ const out: TreeNodeSchemaBoth<
401
+ string,
402
+ NodeKind.Map,
403
+ TreeMapNode<T>,
404
+ MapNodeInsertableData<T>,
405
+ true,
406
+ T
407
+ > = this.namedMap(nameOrAllowedTypes as TName, allowedTypes, true, true);
408
+ return out;
392
409
  }
393
410
 
394
411
  /**
@@ -405,7 +422,7 @@ export class SchemaFactory<
405
422
  allowedTypes: T,
406
423
  customizable: boolean,
407
424
  implicitlyConstructable: ImplicitlyConstructable,
408
- ): TreeNodeSchemaClass<
425
+ ): TreeNodeSchemaBoth<
409
426
  ScopedSchemaName<TScope, Name>,
410
427
  NodeKind.Map,
411
428
  TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>,
@@ -457,7 +474,7 @@ export class SchemaFactory<
457
474
  */
458
475
  public array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(
459
476
  allowedTypes: T,
460
- ): TreeNodeSchema<
477
+ ): TreeNodeSchemaNonClass<
461
478
  ScopedSchemaName<TScope, `Array<${string}>`>,
462
479
  NodeKind.Array,
463
480
  TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>,
@@ -490,6 +507,10 @@ export class SchemaFactory<
490
507
  T
491
508
  >;
492
509
 
510
+ /**
511
+ * @privateRemarks
512
+ * This should return TreeNodeSchemaBoth: see note on "map" implementation for details.
513
+ */
493
514
  public array<const T extends ImplicitAllowedTypes>(
494
515
  nameOrAllowedTypes: TName | ((T & TreeNodeSchema) | readonly TreeNodeSchema[]),
495
516
  allowedTypes?: T,
@@ -515,7 +536,15 @@ export class SchemaFactory<
515
536
  T
516
537
  >;
517
538
  }
518
- return this.namedArray(nameOrAllowedTypes as TName, allowedTypes, true, true);
539
+ const out: TreeNodeSchemaBoth<
540
+ ScopedSchemaName<TScope, string>,
541
+ NodeKind.Array,
542
+ TreeArrayNode<T>,
543
+ Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
544
+ true,
545
+ T
546
+ > = this.namedArray(nameOrAllowedTypes as TName, allowedTypes, true, true);
547
+ return out;
519
548
  }
520
549
 
521
550
  /**
@@ -536,7 +565,7 @@ export class SchemaFactory<
536
565
  allowedTypes: T,
537
566
  customizable: boolean,
538
567
  implicitlyConstructable: ImplicitlyConstructable,
539
- ): TreeNodeSchemaClass<
568
+ ): TreeNodeSchemaBoth<
540
569
  ScopedSchemaName<TScope, Name>,
541
570
  NodeKind.Array,
542
571
  TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, string>, NodeKind.Array>,
@@ -662,12 +691,12 @@ export class SchemaFactory<
662
691
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
663
692
  public objectRecursive<
664
693
  const Name extends TName,
665
- const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>,
694
+ const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>,
666
695
  >(name: Name, t: T) {
667
696
  type TScopedName = ScopedSchemaName<TScope, Name>;
668
697
  return this.object(
669
698
  name,
670
- t as T & RestrictiveReadonlyRecord<string, ImplicitFieldSchema>,
699
+ t as T & RestrictiveStringRecord<ImplicitFieldSchema>,
671
700
  ) as unknown as TreeNodeSchemaClass<
672
701
  TScopedName,
673
702
  NodeKind.Object,
@@ -760,7 +789,7 @@ export class SchemaFactory<
760
789
  >;
761
790
  },
762
791
  // Ideally this would be included, but doing so breaks recursive types.
763
- // | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>,
792
+ // | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>,
764
793
  false,
765
794
  T
766
795
  >;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { Unenforced } from "../../feature-libraries/index.js";
7
- import type { RestrictiveReadonlyRecord } from "../../util/index.js";
7
+ import type { RestrictiveStringRecord } from "../../util/index.js";
8
8
  import type { InsertableObjectFromSchemaRecord } from "../objectNode.js";
9
9
 
10
10
  import {
@@ -131,10 +131,7 @@ export type ValidateRecursiveSchema<
131
131
  // TInsertable: What can be passed to the constructor. This should be enough to catch most issues with incorrect schema.
132
132
  // These match whats defined in the recursive methods on `SchemaFactory` except they do not use `Unenforced`.
133
133
  {
134
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<
135
- string,
136
- ImplicitFieldSchema
137
- >
134
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema>
138
135
  ? InsertableObjectFromSchemaRecord<T["info"]>
139
136
  : unknown;
140
137
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes
@@ -148,7 +145,7 @@ export type ValidateRecursiveSchema<
148
145
  false,
149
146
  // Info: What's passed to the method to create the schema. Constraining these here should be about as effective as if the actual constraints existed on the actual method itself.
150
147
  {
151
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
148
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
152
149
  [NodeKind.Array]: ImplicitAllowedTypes;
153
150
  [NodeKind.Map]: ImplicitAllowedTypes;
154
151
  }[T["kind"]]
@@ -99,7 +99,7 @@ export type SimpleNodeSchema =
99
99
  */
100
100
  export interface SimpleFieldSchema {
101
101
  /**
102
- * The kind of object field.
102
+ * The kind of tree field.
103
103
  */
104
104
  readonly kind: FieldKind;
105
105
 
@@ -120,24 +120,29 @@ export interface SimpleFieldSchema {
120
120
  /**
121
121
  * A simplified representation of a schema for a tree.
122
122
  *
123
- * @remarks Contains the complete set of schema {@link SimpleTreeSchema.definitions} required to resolve references
124
- * by schema identifier.
123
+ * @remarks Contains the complete set of schema {@link SimpleTreeSchema.definitions} required to resolve references,
124
+ * which are represented inline with identifiers.
125
125
  *
126
126
  * @sealed
127
127
  */
128
- export interface SimpleTreeSchema {
128
+ export interface SimpleTreeSchema extends SimpleFieldSchema {
129
129
  /**
130
- * The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.allowedTypes}.
131
- *
132
- * @remarks the keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
130
+ * The kind of tree field representing the root of the tree.
133
131
  */
134
- readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;
132
+ readonly kind: FieldKind;
135
133
 
136
134
  /**
137
- * The types allowed under the root of the tree.
135
+ * The types allowed under the tree root.
138
136
  *
139
137
  * @remarks Refers to the types by identifier.
140
- * {@link SimpleTreeSchema.definitions} can be used to resolve these identifiers to their associated schema definition.
138
+ * Can be resolved via {@link SimpleTreeSchema.definitions}.
141
139
  */
142
140
  readonly allowedTypes: ReadonlySet<string>;
141
+
142
+ /**
143
+ * The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.allowedTypes}.
144
+ *
145
+ * @remarks the keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
146
+ */
147
+ readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;
143
148
  }