@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
@@ -67,8 +67,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
67
67
 
68
68
  // @public @sealed
69
69
  export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
70
- custom?: TCustomMetadata;
71
- description?: string | undefined;
70
+ readonly custom?: TCustomMetadata;
71
+ readonly description?: string | undefined;
72
72
  }
73
73
 
74
74
  // @public
@@ -93,7 +93,13 @@ type FlexList<Item = unknown> = readonly LazyItem<Item>[];
93
93
  type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
94
94
 
95
95
  // @alpha
96
- export function getJsonSchema(schema: ImplicitAllowedTypes): JsonTreeSchema;
96
+ export function getBranch(tree: ITree): TreeBranch;
97
+
98
+ // @alpha
99
+ export function getBranch(view: TreeView<ImplicitFieldSchema>): TreeBranch;
100
+
101
+ // @alpha
102
+ export function getJsonSchema(schema: ImplicitFieldSchema): JsonTreeSchema;
97
103
 
98
104
  // @public
99
105
  export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
@@ -105,14 +111,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
105
111
  type _InlineTrick = 0;
106
112
 
107
113
  // @public
108
- type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
109
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
114
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
115
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
110
116
  } & {
111
- readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
117
+ readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
112
118
  }>;
113
119
 
114
120
  // @public
115
- export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
121
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
116
122
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
117
123
  } & {
118
124
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
@@ -153,7 +159,6 @@ declare namespace InternalTypes {
153
159
  ApplyKind,
154
160
  NodeBuilderData,
155
161
  FieldHasDefault,
156
- TreeNodeSchemaNonClass,
157
162
  TreeArrayNodeBase,
158
163
  ScopedSchemaName,
159
164
  DefaultProvider,
@@ -191,8 +196,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
191
196
  }
192
197
 
193
198
  // @public @sealed
194
- export interface ITree extends IFluidLoadable {
195
- viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
199
+ export interface ITree extends ViewableTree, IFluidLoadable {
196
200
  }
197
201
 
198
202
  // @public
@@ -286,7 +290,7 @@ export interface MakeNominal {
286
290
  }
287
291
 
288
292
  // @public
289
- export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
293
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
290
294
 
291
295
  // @public
292
296
  type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -322,12 +326,12 @@ export enum NodeKind {
322
326
  }
323
327
 
324
328
  // @public
325
- type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
326
- -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
329
+ type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
330
+ -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
327
331
  };
328
332
 
329
333
  // @public
330
- type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
334
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
331
335
  -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
332
336
  };
333
337
 
@@ -350,11 +354,18 @@ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
350
354
  values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
351
355
  }
352
356
 
353
- // @public
357
+ // @public @deprecated
354
358
  export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
355
359
  readonly [P in symbol | string]: P extends K ? T : never;
356
360
  };
357
361
 
362
+ // @public
363
+ export type RestrictiveStringRecord<T> = {
364
+ readonly [P in string]: T;
365
+ } & {
366
+ readonly [P in symbol]?: never;
367
+ };
368
+
358
369
  // @public @sealed
359
370
  export interface Revertible {
360
371
  dispose(): void;
@@ -403,7 +414,7 @@ export interface SchemaCompatibilityStatus {
403
414
  // @public @sealed
404
415
  export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
405
416
  constructor(scope: TScope);
406
- array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
417
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
407
418
  array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
408
419
  arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
409
420
  [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
@@ -411,7 +422,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
411
422
  readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
412
423
  readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
413
424
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
414
- map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
425
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
415
426
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
416
427
  mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
417
428
  [Symbol.iterator](): Iterator<[
@@ -421,8 +432,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
421
432
  }, false, T>;
422
433
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
423
434
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
424
- object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
425
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
435
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
436
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
426
437
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
427
438
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
428
439
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -463,14 +474,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
463
474
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
464
475
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
465
476
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
466
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
467
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
477
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
478
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
468
479
  moveRangeToStart(sourceStart: number, sourceEnd: number): void;
469
480
  moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
470
481
  moveToEnd(sourceIndex: number): void;
471
482
  moveToEnd(sourceIndex: number, source: TMoveFrom): void;
472
- moveToIndex(index: number, sourceIndex: number): void;
473
- moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
483
+ moveToIndex(destinationGap: number, sourceIndex: number): void;
484
+ moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
474
485
  moveToStart(sourceIndex: number): void;
475
486
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
476
487
  removeAt(index: number): void;
@@ -487,6 +498,19 @@ export const TreeBeta: {
487
498
  readonly on: <K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>) => () => void;
488
499
  };
489
500
 
501
+ // @alpha @sealed
502
+ export interface TreeBranch extends ViewableTree {
503
+ branch(): TreeBranchFork;
504
+ merge(branch: TreeBranchFork): void;
505
+ merge(branch: TreeBranchFork, disposeMerged: boolean): void;
506
+ rebase(branch: TreeBranchFork): void;
507
+ }
508
+
509
+ // @alpha @sealed
510
+ export interface TreeBranchFork extends TreeBranch, IDisposable {
511
+ rebaseOnto(branch: TreeBranch): void;
512
+ }
513
+
490
514
  // @public @sealed
491
515
  export interface TreeChangeEvents {
492
516
  nodeChanged(unstable?: unknown): void;
@@ -561,6 +585,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
561
585
 
562
586
  // @public @sealed
563
587
  export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
588
+ readonly childTypes: ReadonlySet<TreeNodeSchema>;
564
589
  readonly identifier: Name;
565
590
  readonly implicitlyConstructable: ImplicitlyConstructable;
566
591
  readonly info: Info;
@@ -569,16 +594,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
569
594
  }
570
595
 
571
596
  // @public @sealed
572
- interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
597
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
573
598
  // (undocumented)
574
599
  create(data: TInsertable): TNode;
575
600
  }
576
601
 
577
602
  // @public
578
- export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
603
+ export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
579
604
 
580
605
  // @public
581
- export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
606
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
582
607
 
583
608
  // @public
584
609
  export enum TreeStatus {
@@ -630,15 +655,20 @@ export type Unhydrated<T> = T;
630
655
 
631
656
  // @public
632
657
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
633
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
658
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
634
659
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
635
660
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
636
661
  }[T["kind"]], false, {
637
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
662
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
638
663
  [NodeKind.Array]: ImplicitAllowedTypes;
639
664
  [NodeKind.Map]: ImplicitAllowedTypes;
640
665
  }[T["kind"]]>> = true;
641
666
 
667
+ // @public @sealed
668
+ export interface ViewableTree {
669
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
670
+ }
671
+
642
672
  // @public @sealed
643
673
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
644
674
  // @deprecated
@@ -67,8 +67,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
67
67
 
68
68
  // @public @sealed
69
69
  export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
70
- custom?: TCustomMetadata;
71
- description?: string | undefined;
70
+ readonly custom?: TCustomMetadata;
71
+ readonly description?: string | undefined;
72
72
  }
73
73
 
74
74
  // @public
@@ -99,14 +99,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
99
99
  type _InlineTrick = 0;
100
100
 
101
101
  // @public
102
- type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
102
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
104
104
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
105
+ readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
106
106
  }>;
107
107
 
108
108
  // @public
109
- export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
109
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
110
110
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
111
111
  } & {
112
112
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
@@ -147,7 +147,6 @@ declare namespace InternalTypes {
147
147
  ApplyKind,
148
148
  NodeBuilderData,
149
149
  FieldHasDefault,
150
- TreeNodeSchemaNonClass,
151
150
  TreeArrayNodeBase,
152
151
  ScopedSchemaName,
153
152
  DefaultProvider,
@@ -185,8 +184,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
185
184
  }
186
185
 
187
186
  // @public @sealed
188
- export interface ITree extends IFluidLoadable {
189
- viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
187
+ export interface ITree extends ViewableTree, IFluidLoadable {
190
188
  }
191
189
 
192
190
  // @public
@@ -218,7 +216,7 @@ export interface MakeNominal {
218
216
  }
219
217
 
220
218
  // @public
221
- export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
219
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
222
220
 
223
221
  // @public
224
222
  type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -254,12 +252,12 @@ export enum NodeKind {
254
252
  }
255
253
 
256
254
  // @public
257
- type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
258
- -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
255
+ type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
256
+ -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
259
257
  };
260
258
 
261
259
  // @public
262
- type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
260
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
263
261
  -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
264
262
  };
265
263
 
@@ -282,11 +280,18 @@ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
282
280
  values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
283
281
  }
284
282
 
285
- // @public
283
+ // @public @deprecated
286
284
  export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
287
285
  readonly [P in symbol | string]: P extends K ? T : never;
288
286
  };
289
287
 
288
+ // @public
289
+ export type RestrictiveStringRecord<T> = {
290
+ readonly [P in string]: T;
291
+ } & {
292
+ readonly [P in symbol]?: never;
293
+ };
294
+
290
295
  // @public @sealed
291
296
  export interface Revertible {
292
297
  dispose(): void;
@@ -335,7 +340,7 @@ export interface SchemaCompatibilityStatus {
335
340
  // @public @sealed
336
341
  export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
337
342
  constructor(scope: TScope);
338
- array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
343
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
339
344
  array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
340
345
  arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
341
346
  [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
@@ -343,7 +348,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
343
348
  readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
344
349
  readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
345
350
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
346
- map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
351
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
347
352
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
348
353
  mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
349
354
  [Symbol.iterator](): Iterator<[
@@ -353,8 +358,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
353
358
  }, false, T>;
354
359
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
355
360
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
356
- object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
357
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
361
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
362
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
358
363
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
359
364
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
360
365
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -395,14 +400,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
395
400
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
396
401
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
397
402
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
398
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
399
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
403
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
404
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
400
405
  moveRangeToStart(sourceStart: number, sourceEnd: number): void;
401
406
  moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
402
407
  moveToEnd(sourceIndex: number): void;
403
408
  moveToEnd(sourceIndex: number, source: TMoveFrom): void;
404
- moveToIndex(index: number, sourceIndex: number): void;
405
- moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
409
+ moveToIndex(destinationGap: number, sourceIndex: number): void;
410
+ moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
406
411
  moveToStart(sourceIndex: number): void;
407
412
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
408
413
  removeAt(index: number): void;
@@ -493,6 +498,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
493
498
 
494
499
  // @public @sealed
495
500
  export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
501
+ readonly childTypes: ReadonlySet<TreeNodeSchema>;
496
502
  readonly identifier: Name;
497
503
  readonly implicitlyConstructable: ImplicitlyConstructable;
498
504
  readonly info: Info;
@@ -501,16 +507,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
501
507
  }
502
508
 
503
509
  // @public @sealed
504
- interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
510
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
505
511
  // (undocumented)
506
512
  create(data: TInsertable): TNode;
507
513
  }
508
514
 
509
515
  // @public
510
- export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
516
+ export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
511
517
 
512
518
  // @public
513
- export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
519
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
514
520
 
515
521
  // @public
516
522
  export enum TreeStatus {
@@ -562,15 +568,20 @@ export type Unhydrated<T> = T;
562
568
 
563
569
  // @public
564
570
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
565
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
571
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
566
572
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
567
573
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
568
574
  }[T["kind"]], false, {
569
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
575
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
570
576
  [NodeKind.Array]: ImplicitAllowedTypes;
571
577
  [NodeKind.Map]: ImplicitAllowedTypes;
572
578
  }[T["kind"]]>> = true;
573
579
 
580
+ // @public @sealed
581
+ export interface ViewableTree {
582
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
583
+ }
584
+
574
585
  // @public @sealed
575
586
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
576
587
  // @deprecated
@@ -67,8 +67,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
67
67
 
68
68
  // @public @sealed
69
69
  export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
70
- custom?: TCustomMetadata;
71
- description?: string | undefined;
70
+ readonly custom?: TCustomMetadata;
71
+ readonly description?: string | undefined;
72
72
  }
73
73
 
74
74
  // @public
@@ -99,14 +99,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
99
99
  type _InlineTrick = 0;
100
100
 
101
101
  // @public
102
- type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
102
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
104
104
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
105
+ readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
106
106
  }>;
107
107
 
108
108
  // @public
109
- export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
109
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
110
110
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
111
111
  } & {
112
112
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
@@ -147,7 +147,6 @@ declare namespace InternalTypes {
147
147
  ApplyKind,
148
148
  NodeBuilderData,
149
149
  FieldHasDefault,
150
- TreeNodeSchemaNonClass,
151
150
  TreeArrayNodeBase,
152
151
  ScopedSchemaName,
153
152
  DefaultProvider,
@@ -185,8 +184,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
185
184
  }
186
185
 
187
186
  // @public @sealed
188
- export interface ITree extends IFluidLoadable {
189
- viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
187
+ export interface ITree extends ViewableTree, IFluidLoadable {
190
188
  }
191
189
 
192
190
  // @public
@@ -218,7 +216,7 @@ export interface MakeNominal {
218
216
  }
219
217
 
220
218
  // @public
221
- export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
219
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
222
220
 
223
221
  // @public
224
222
  type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -249,12 +247,12 @@ export enum NodeKind {
249
247
  }
250
248
 
251
249
  // @public
252
- type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
253
- -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
250
+ type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
251
+ -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
254
252
  };
255
253
 
256
254
  // @public
257
- type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
255
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
258
256
  -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
259
257
  };
260
258
 
@@ -277,11 +275,18 @@ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
277
275
  values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
278
276
  }
279
277
 
280
- // @public
278
+ // @public @deprecated
281
279
  export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
282
280
  readonly [P in symbol | string]: P extends K ? T : never;
283
281
  };
284
282
 
283
+ // @public
284
+ export type RestrictiveStringRecord<T> = {
285
+ readonly [P in string]: T;
286
+ } & {
287
+ readonly [P in symbol]?: never;
288
+ };
289
+
285
290
  // @public @sealed
286
291
  export interface Revertible {
287
292
  dispose(): void;
@@ -330,7 +335,7 @@ export interface SchemaCompatibilityStatus {
330
335
  // @public @sealed
331
336
  export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
332
337
  constructor(scope: TScope);
333
- array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
338
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
334
339
  array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
335
340
  arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
336
341
  [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
@@ -338,7 +343,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
338
343
  readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
339
344
  readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
340
345
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
341
- map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
346
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
342
347
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
343
348
  mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
344
349
  [Symbol.iterator](): Iterator<[
@@ -348,8 +353,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
348
353
  }, false, T>;
349
354
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
350
355
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
351
- object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
352
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
356
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
357
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
353
358
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
354
359
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
355
360
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -393,14 +398,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
393
398
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
394
399
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
395
400
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
396
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
397
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
401
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
402
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
398
403
  moveRangeToStart(sourceStart: number, sourceEnd: number): void;
399
404
  moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
400
405
  moveToEnd(sourceIndex: number): void;
401
406
  moveToEnd(sourceIndex: number, source: TMoveFrom): void;
402
- moveToIndex(index: number, sourceIndex: number): void;
403
- moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
407
+ moveToIndex(destinationGap: number, sourceIndex: number): void;
408
+ moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
404
409
  moveToStart(sourceIndex: number): void;
405
410
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
406
411
  removeAt(index: number): void;
@@ -481,6 +486,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
481
486
 
482
487
  // @public @sealed
483
488
  export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
489
+ readonly childTypes: ReadonlySet<TreeNodeSchema>;
484
490
  readonly identifier: Name;
485
491
  readonly implicitlyConstructable: ImplicitlyConstructable;
486
492
  readonly info: Info;
@@ -489,16 +495,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
489
495
  }
490
496
 
491
497
  // @public @sealed
492
- interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
498
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
493
499
  // (undocumented)
494
500
  create(data: TInsertable): TNode;
495
501
  }
496
502
 
497
503
  // @public
498
- export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
504
+ export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
499
505
 
500
506
  // @public
501
- export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
507
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
502
508
 
503
509
  // @public
504
510
  export enum TreeStatus {
@@ -550,15 +556,20 @@ export type Unhydrated<T> = T;
550
556
 
551
557
  // @public
552
558
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
553
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
559
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
554
560
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
555
561
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
556
562
  }[T["kind"]], false, {
557
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
563
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
558
564
  [NodeKind.Array]: ImplicitAllowedTypes;
559
565
  [NodeKind.Map]: ImplicitAllowedTypes;
560
566
  }[T["kind"]]>> = true;
561
567
 
568
+ // @public @sealed
569
+ export interface ViewableTree {
570
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
571
+ }
572
+
562
573
  // @public @sealed
563
574
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
564
575
  // @deprecated