@fluidframework/tree 2.41.0 → 2.43.0-343119

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 (673) hide show
  1. package/.vscode/settings.json +1 -0
  2. package/CHANGELOG.md +33 -0
  3. package/api-report/tree.alpha.api.md +70 -28
  4. package/api-report/tree.beta.api.md +33 -0
  5. package/dist/alpha.d.ts +12 -6
  6. package/dist/beta.d.ts +6 -1
  7. package/dist/codec/codec.d.ts +23 -3
  8. package/dist/codec/codec.d.ts.map +1 -1
  9. package/dist/codec/codec.js.map +1 -1
  10. package/dist/codec/index.d.ts +1 -1
  11. package/dist/codec/index.d.ts.map +1 -1
  12. package/dist/codec/index.js.map +1 -1
  13. package/dist/codec/versioned/codec.d.ts +35 -2
  14. package/dist/codec/versioned/codec.d.ts.map +1 -1
  15. package/dist/codec/versioned/codec.js +38 -3
  16. package/dist/codec/versioned/codec.js.map +1 -1
  17. package/dist/core/index.d.ts +1 -1
  18. package/dist/core/index.d.ts.map +1 -1
  19. package/dist/core/index.js +5 -2
  20. package/dist/core/index.js.map +1 -1
  21. package/dist/core/schema-stored/formatV2.d.ts +80 -0
  22. package/dist/core/schema-stored/formatV2.d.ts.map +1 -0
  23. package/dist/core/schema-stored/formatV2.js +55 -0
  24. package/dist/core/schema-stored/formatV2.js.map +1 -0
  25. package/dist/core/schema-stored/index.d.ts +3 -1
  26. package/dist/core/schema-stored/index.d.ts.map +1 -1
  27. package/dist/core/schema-stored/index.js +5 -2
  28. package/dist/core/schema-stored/index.js.map +1 -1
  29. package/dist/core/schema-stored/schema.d.ts +49 -17
  30. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  31. package/dist/core/schema-stored/schema.js +65 -22
  32. package/dist/core/schema-stored/schema.js.map +1 -1
  33. package/dist/core/tree/detachedFieldIndex.d.ts +2 -2
  34. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  35. package/dist/core/tree/detachedFieldIndex.js +5 -1
  36. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  37. package/dist/core/tree/mapTree.d.ts +2 -1
  38. package/dist/core/tree/mapTree.d.ts.map +1 -1
  39. package/dist/core/tree/mapTree.js +11 -5
  40. package/dist/core/tree/mapTree.js.map +1 -1
  41. package/dist/core/tree/visitorUtils.d.ts +2 -2
  42. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  43. package/dist/core/tree/visitorUtils.js.map +1 -1
  44. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  45. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  46. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +13 -9
  47. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  48. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  49. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  50. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +6 -6
  51. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  52. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  54. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  55. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  56. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -2
  57. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  58. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  59. package/dist/feature-libraries/default-schema/schemaChecker.d.ts +4 -3
  60. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  61. package/dist/feature-libraries/default-schema/schemaChecker.js +4 -3
  62. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  63. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  64. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  65. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  66. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  67. package/dist/feature-libraries/flex-tree/context.d.ts +14 -6
  68. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  69. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  70. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +48 -29
  71. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  72. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
  73. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  74. package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
  75. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  76. package/dist/feature-libraries/flex-tree/index.js +1 -7
  77. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  78. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  79. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  80. package/dist/feature-libraries/flex-tree/lazyEntity.js +3 -0
  81. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  82. package/dist/feature-libraries/flex-tree/lazyField.d.ts +6 -7
  83. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  84. package/dist/feature-libraries/flex-tree/lazyField.js +2 -5
  85. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  86. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +8 -7
  87. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  88. package/dist/feature-libraries/flex-tree/lazyNode.js +17 -6
  89. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  90. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +10 -5
  91. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  92. package/dist/feature-libraries/forest-summary/forestSummarizer.js +9 -12
  93. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  94. package/dist/feature-libraries/index.d.ts +2 -2
  95. package/dist/feature-libraries/index.d.ts.map +1 -1
  96. package/dist/feature-libraries/index.js +4 -3
  97. package/dist/feature-libraries/index.js.map +1 -1
  98. package/dist/feature-libraries/mapTreeCursor.d.ts +53 -3
  99. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  100. package/dist/feature-libraries/mapTreeCursor.js +45 -7
  101. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  102. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  103. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  104. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  105. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
  106. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  107. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +5 -5
  108. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  109. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  110. package/dist/feature-libraries/object-forest/objectForest.js +2 -0
  111. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  112. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  113. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  114. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  115. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  116. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  117. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  118. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  119. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  120. package/dist/feature-libraries/schema-index/codec.js +59 -9
  121. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  122. package/dist/feature-libraries/schema-index/formatV1.d.ts +1 -1
  123. package/dist/feature-libraries/schema-index/formatV2.d.ts +42 -0
  124. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  125. package/dist/feature-libraries/schema-index/formatV2.js +26 -0
  126. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -0
  127. package/dist/feature-libraries/schema-index/index.d.ts +2 -1
  128. package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
  129. package/dist/feature-libraries/schema-index/index.js +4 -2
  130. package/dist/feature-libraries/schema-index/index.js.map +1 -1
  131. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  132. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  133. package/dist/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  134. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  135. package/dist/feature-libraries/treeCursorUtils.d.ts +5 -1
  136. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  137. package/dist/feature-libraries/treeCursorUtils.js +8 -2
  138. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  139. package/dist/index.d.ts +3 -3
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js.map +1 -1
  142. package/dist/packageVersion.d.ts +1 -1
  143. package/dist/packageVersion.d.ts.map +1 -1
  144. package/dist/packageVersion.js +1 -1
  145. package/dist/packageVersion.js.map +1 -1
  146. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  147. package/dist/shared-tree/schematizeTree.js +1 -0
  148. package/dist/shared-tree/schematizeTree.js.map +1 -1
  149. package/dist/shared-tree/schematizingTreeView.d.ts +11 -1
  150. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  151. package/dist/shared-tree/schematizingTreeView.js +36 -22
  152. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  153. package/dist/shared-tree/sharedTree.d.ts +8 -4
  154. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  155. package/dist/shared-tree/sharedTree.js +35 -5
  156. package/dist/shared-tree/sharedTree.js.map +1 -1
  157. package/dist/shared-tree/tree.d.ts.map +1 -1
  158. package/dist/shared-tree/tree.js +8 -24
  159. package/dist/shared-tree/tree.js.map +1 -1
  160. package/dist/shared-tree/treeAlpha.d.ts +2 -3
  161. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  162. package/dist/shared-tree/treeAlpha.js +4 -5
  163. package/dist/shared-tree/treeAlpha.js.map +1 -1
  164. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  165. package/dist/shared-tree/treeCheckout.js +5 -2
  166. package/dist/shared-tree/treeCheckout.js.map +1 -1
  167. package/dist/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  168. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  169. package/dist/shared-tree-core/editManagerSummarizer.js +2 -5
  170. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  171. package/dist/shared-tree-core/sharedTreeCore.d.ts +18 -7
  172. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  173. package/dist/shared-tree-core/sharedTreeCore.js +15 -2
  174. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  175. package/dist/simple-tree/api/configuration.d.ts +2 -2
  176. package/dist/simple-tree/api/configuration.js +1 -1
  177. package/dist/simple-tree/api/configuration.js.map +1 -1
  178. package/dist/simple-tree/api/create.d.ts +9 -4
  179. package/dist/simple-tree/api/create.d.ts.map +1 -1
  180. package/dist/simple-tree/api/create.js +29 -16
  181. package/dist/simple-tree/api/create.js.map +1 -1
  182. package/dist/simple-tree/api/customTree.d.ts +4 -0
  183. package/dist/simple-tree/api/customTree.d.ts.map +1 -1
  184. package/dist/simple-tree/api/customTree.js +9 -1
  185. package/dist/simple-tree/api/customTree.js.map +1 -1
  186. package/dist/simple-tree/api/index.d.ts +1 -1
  187. package/dist/simple-tree/api/index.d.ts.map +1 -1
  188. package/dist/simple-tree/api/index.js +1 -2
  189. package/dist/simple-tree/api/index.js.map +1 -1
  190. package/dist/simple-tree/api/schemaCompatibilityTester.js +1 -1
  191. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  192. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  193. package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
  194. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  195. package/dist/simple-tree/api/schemaFactory.d.ts +25 -13
  196. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  197. package/dist/simple-tree/api/schemaFactory.js +42 -9
  198. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  199. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  200. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  201. package/dist/simple-tree/api/schemaFactoryAlpha.js +31 -4
  202. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  203. package/dist/simple-tree/api/storedSchema.js +2 -2
  204. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  205. package/dist/simple-tree/api/treeChangeEvents.d.ts +8 -3
  206. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  207. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  208. package/dist/simple-tree/api/treeNodeApi.d.ts +14 -3
  209. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  210. package/dist/simple-tree/api/treeNodeApi.js +32 -17
  211. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  212. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  213. package/dist/simple-tree/api/verboseTree.js +12 -9
  214. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  215. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  216. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  217. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  218. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  219. package/dist/simple-tree/core/getOrCreateNode.js +2 -1
  220. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  221. package/dist/simple-tree/core/index.d.ts +2 -2
  222. package/dist/simple-tree/core/index.d.ts.map +1 -1
  223. package/dist/simple-tree/core/index.js +3 -4
  224. package/dist/simple-tree/core/index.js.map +1 -1
  225. package/dist/simple-tree/core/treeNodeKernel.d.ts +15 -25
  226. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  227. package/dist/simple-tree/core/treeNodeKernel.js +27 -34
  228. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  229. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +129 -64
  230. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  231. package/dist/simple-tree/core/unhydratedFlexTree.js +175 -207
  232. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  233. package/dist/simple-tree/index.d.ts +5 -5
  234. package/dist/simple-tree/index.d.ts.map +1 -1
  235. package/dist/simple-tree/index.js +5 -5
  236. package/dist/simple-tree/index.js.map +1 -1
  237. package/dist/simple-tree/leafNodeSchema.d.ts +2 -0
  238. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  240. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  241. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  242. package/dist/simple-tree/node-kinds/array/arrayNode.js +8 -7
  243. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  244. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  245. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  246. package/dist/simple-tree/node-kinds/index.js +1 -2
  247. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  248. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  249. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  250. package/dist/simple-tree/node-kinds/map/mapNode.js +6 -4
  251. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  252. package/dist/simple-tree/node-kinds/object/index.d.ts +1 -1
  253. package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  254. package/dist/simple-tree/node-kinds/object/index.js +1 -2
  255. package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
  256. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -15
  257. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  258. package/dist/simple-tree/node-kinds/object/objectNode.js +15 -44
  259. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  260. package/dist/simple-tree/prepareForInsertion.d.ts +20 -6
  261. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  262. package/dist/simple-tree/prepareForInsertion.js +31 -20
  263. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  264. package/dist/simple-tree/schemaTypes.d.ts +56 -9
  265. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  266. package/dist/simple-tree/schemaTypes.js +28 -1
  267. package/dist/simple-tree/schemaTypes.js.map +1 -1
  268. package/dist/simple-tree/simpleSchema.d.ts +22 -4
  269. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  270. package/dist/simple-tree/simpleSchema.js.map +1 -1
  271. package/dist/simple-tree/toStoredSchema.d.ts +8 -1
  272. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  273. package/dist/simple-tree/toStoredSchema.js +19 -7
  274. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  275. package/{lib/simple-tree/toMapTree.d.ts → dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts} +12 -23
  276. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -0
  277. package/dist/simple-tree/{toMapTree.js → unhydratedFlexTreeFromInsertable.js} +103 -185
  278. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -0
  279. package/dist/tableSchema.d.ts +1 -1
  280. package/dist/treeFactory.d.ts.map +1 -1
  281. package/dist/treeFactory.js +6 -1
  282. package/dist/treeFactory.js.map +1 -1
  283. package/dist/util/index.d.ts +1 -1
  284. package/dist/util/index.d.ts.map +1 -1
  285. package/dist/util/index.js +2 -1
  286. package/dist/util/index.js.map +1 -1
  287. package/dist/util/typeUtils.d.ts +2 -2
  288. package/dist/util/typeUtils.js.map +1 -1
  289. package/dist/util/utils.d.ts +6 -0
  290. package/dist/util/utils.d.ts.map +1 -1
  291. package/dist/util/utils.js +8 -1
  292. package/dist/util/utils.js.map +1 -1
  293. package/docs/user-facing/schema-evolution.md +1 -1
  294. package/lib/alpha.d.ts +12 -6
  295. package/lib/beta.d.ts +6 -1
  296. package/lib/codec/codec.d.ts +23 -3
  297. package/lib/codec/codec.d.ts.map +1 -1
  298. package/lib/codec/codec.js.map +1 -1
  299. package/lib/codec/index.d.ts +1 -1
  300. package/lib/codec/index.d.ts.map +1 -1
  301. package/lib/codec/index.js.map +1 -1
  302. package/lib/codec/versioned/codec.d.ts +35 -2
  303. package/lib/codec/versioned/codec.d.ts.map +1 -1
  304. package/lib/codec/versioned/codec.js +36 -2
  305. package/lib/codec/versioned/codec.js.map +1 -1
  306. package/lib/core/index.d.ts +1 -1
  307. package/lib/core/index.d.ts.map +1 -1
  308. package/lib/core/index.js +1 -1
  309. package/lib/core/index.js.map +1 -1
  310. package/lib/core/schema-stored/formatV2.d.ts +80 -0
  311. package/lib/core/schema-stored/formatV2.d.ts.map +1 -0
  312. package/lib/core/schema-stored/formatV2.js +52 -0
  313. package/lib/core/schema-stored/formatV2.js.map +1 -0
  314. package/lib/core/schema-stored/index.d.ts +3 -1
  315. package/lib/core/schema-stored/index.d.ts.map +1 -1
  316. package/lib/core/schema-stored/index.js +3 -1
  317. package/lib/core/schema-stored/index.js.map +1 -1
  318. package/lib/core/schema-stored/schema.d.ts +49 -17
  319. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  320. package/lib/core/schema-stored/schema.js +63 -21
  321. package/lib/core/schema-stored/schema.js.map +1 -1
  322. package/lib/core/tree/detachedFieldIndex.d.ts +2 -2
  323. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  324. package/lib/core/tree/detachedFieldIndex.js +6 -2
  325. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  326. package/lib/core/tree/mapTree.d.ts +2 -1
  327. package/lib/core/tree/mapTree.d.ts.map +1 -1
  328. package/lib/core/tree/mapTree.js +11 -5
  329. package/lib/core/tree/mapTree.js.map +1 -1
  330. package/lib/core/tree/visitorUtils.d.ts +2 -2
  331. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  332. package/lib/core/tree/visitorUtils.js.map +1 -1
  333. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  334. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  335. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +11 -7
  336. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  337. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  338. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  339. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +7 -7
  340. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  341. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  342. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  343. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  344. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  345. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -2
  346. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  347. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  348. package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -3
  349. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  350. package/lib/feature-libraries/default-schema/schemaChecker.js +4 -3
  351. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  352. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  353. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  354. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  355. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  356. package/lib/feature-libraries/flex-tree/context.d.ts +14 -6
  357. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  358. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  359. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +48 -29
  360. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  361. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
  362. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  363. package/lib/feature-libraries/flex-tree/index.d.ts +2 -3
  364. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  365. package/lib/feature-libraries/flex-tree/index.js +0 -1
  366. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  367. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  368. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  369. package/lib/feature-libraries/flex-tree/lazyEntity.js +3 -0
  370. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  371. package/lib/feature-libraries/flex-tree/lazyField.d.ts +6 -7
  372. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  373. package/lib/feature-libraries/flex-tree/lazyField.js +3 -6
  374. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  375. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +8 -7
  376. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  377. package/lib/feature-libraries/flex-tree/lazyNode.js +17 -6
  378. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  379. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +10 -5
  380. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  381. package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -7
  382. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  383. package/lib/feature-libraries/index.d.ts +2 -2
  384. package/lib/feature-libraries/index.d.ts.map +1 -1
  385. package/lib/feature-libraries/index.js +2 -2
  386. package/lib/feature-libraries/index.js.map +1 -1
  387. package/lib/feature-libraries/mapTreeCursor.d.ts +53 -3
  388. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  389. package/lib/feature-libraries/mapTreeCursor.js +43 -7
  390. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  391. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  392. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  393. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  394. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
  395. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  396. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +5 -5
  397. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  398. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  399. package/lib/feature-libraries/object-forest/objectForest.js +2 -0
  400. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  401. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  402. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  403. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  404. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  405. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  406. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  407. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  408. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  409. package/lib/feature-libraries/schema-index/codec.js +60 -10
  410. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  411. package/lib/feature-libraries/schema-index/formatV1.d.ts +1 -1
  412. package/lib/feature-libraries/schema-index/formatV2.d.ts +42 -0
  413. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  414. package/lib/feature-libraries/schema-index/formatV2.js +23 -0
  415. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -0
  416. package/lib/feature-libraries/schema-index/index.d.ts +2 -1
  417. package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
  418. package/lib/feature-libraries/schema-index/index.js +2 -1
  419. package/lib/feature-libraries/schema-index/index.js.map +1 -1
  420. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  421. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  422. package/lib/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  423. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  424. package/lib/feature-libraries/treeCursorUtils.d.ts +5 -1
  425. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  426. package/lib/feature-libraries/treeCursorUtils.js +8 -2
  427. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  428. package/lib/index.d.ts +3 -3
  429. package/lib/index.d.ts.map +1 -1
  430. package/lib/index.js.map +1 -1
  431. package/lib/packageVersion.d.ts +1 -1
  432. package/lib/packageVersion.d.ts.map +1 -1
  433. package/lib/packageVersion.js +1 -1
  434. package/lib/packageVersion.js.map +1 -1
  435. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  436. package/lib/shared-tree/schematizeTree.js +1 -0
  437. package/lib/shared-tree/schematizeTree.js.map +1 -1
  438. package/lib/shared-tree/schematizingTreeView.d.ts +11 -1
  439. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  440. package/lib/shared-tree/schematizingTreeView.js +34 -21
  441. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  442. package/lib/shared-tree/sharedTree.d.ts +8 -4
  443. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  444. package/lib/shared-tree/sharedTree.js +36 -6
  445. package/lib/shared-tree/sharedTree.js.map +1 -1
  446. package/lib/shared-tree/tree.d.ts.map +1 -1
  447. package/lib/shared-tree/tree.js +2 -18
  448. package/lib/shared-tree/tree.js.map +1 -1
  449. package/lib/shared-tree/treeAlpha.d.ts +2 -3
  450. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  451. package/lib/shared-tree/treeAlpha.js +6 -7
  452. package/lib/shared-tree/treeAlpha.js.map +1 -1
  453. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  454. package/lib/shared-tree/treeCheckout.js +6 -3
  455. package/lib/shared-tree/treeCheckout.js.map +1 -1
  456. package/lib/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  457. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  458. package/lib/shared-tree-core/editManagerSummarizer.js +2 -5
  459. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  460. package/lib/shared-tree-core/sharedTreeCore.d.ts +18 -7
  461. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  462. package/lib/shared-tree-core/sharedTreeCore.js +15 -2
  463. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  464. package/lib/simple-tree/api/configuration.d.ts +2 -2
  465. package/lib/simple-tree/api/configuration.js +1 -1
  466. package/lib/simple-tree/api/configuration.js.map +1 -1
  467. package/lib/simple-tree/api/create.d.ts +9 -4
  468. package/lib/simple-tree/api/create.d.ts.map +1 -1
  469. package/lib/simple-tree/api/create.js +22 -9
  470. package/lib/simple-tree/api/create.js.map +1 -1
  471. package/lib/simple-tree/api/customTree.d.ts +4 -0
  472. package/lib/simple-tree/api/customTree.d.ts.map +1 -1
  473. package/lib/simple-tree/api/customTree.js +7 -0
  474. package/lib/simple-tree/api/customTree.js.map +1 -1
  475. package/lib/simple-tree/api/index.d.ts +1 -1
  476. package/lib/simple-tree/api/index.d.ts.map +1 -1
  477. package/lib/simple-tree/api/index.js +1 -1
  478. package/lib/simple-tree/api/index.js.map +1 -1
  479. package/lib/simple-tree/api/schemaCompatibilityTester.js +1 -1
  480. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  481. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  482. package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
  483. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  484. package/lib/simple-tree/api/schemaFactory.d.ts +25 -13
  485. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  486. package/lib/simple-tree/api/schemaFactory.js +44 -11
  487. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  488. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  489. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  490. package/lib/simple-tree/api/schemaFactoryAlpha.js +31 -4
  491. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  492. package/lib/simple-tree/api/storedSchema.js +2 -2
  493. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  494. package/lib/simple-tree/api/treeChangeEvents.d.ts +8 -3
  495. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  496. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  497. package/lib/simple-tree/api/treeNodeApi.d.ts +14 -3
  498. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  499. package/lib/simple-tree/api/treeNodeApi.js +35 -20
  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 +13 -10
  503. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  504. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  505. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  506. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  507. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  508. package/lib/simple-tree/core/getOrCreateNode.js +3 -2
  509. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  510. package/lib/simple-tree/core/index.d.ts +2 -2
  511. package/lib/simple-tree/core/index.d.ts.map +1 -1
  512. package/lib/simple-tree/core/index.js +2 -2
  513. package/lib/simple-tree/core/index.js.map +1 -1
  514. package/lib/simple-tree/core/treeNodeKernel.d.ts +15 -25
  515. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  516. package/lib/simple-tree/core/treeNodeKernel.js +25 -33
  517. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  518. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +129 -64
  519. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  520. package/lib/simple-tree/core/unhydratedFlexTree.js +174 -208
  521. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  522. package/lib/simple-tree/index.d.ts +5 -5
  523. package/lib/simple-tree/index.d.ts.map +1 -1
  524. package/lib/simple-tree/index.js +3 -3
  525. package/lib/simple-tree/index.js.map +1 -1
  526. package/lib/simple-tree/leafNodeSchema.d.ts +2 -0
  527. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  528. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  529. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  530. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  531. package/lib/simple-tree/node-kinds/array/arrayNode.js +7 -6
  532. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  533. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  534. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  535. package/lib/simple-tree/node-kinds/index.js +1 -1
  536. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  537. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  538. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  539. package/lib/simple-tree/node-kinds/map/mapNode.js +8 -6
  540. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  541. package/lib/simple-tree/node-kinds/object/index.d.ts +1 -1
  542. package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  543. package/lib/simple-tree/node-kinds/object/index.js +1 -1
  544. package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
  545. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -15
  546. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  547. package/lib/simple-tree/node-kinds/object/objectNode.js +6 -34
  548. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  549. package/lib/simple-tree/prepareForInsertion.d.ts +20 -6
  550. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  551. package/lib/simple-tree/prepareForInsertion.js +30 -20
  552. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  553. package/lib/simple-tree/schemaTypes.d.ts +56 -9
  554. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  555. package/lib/simple-tree/schemaTypes.js +28 -1
  556. package/lib/simple-tree/schemaTypes.js.map +1 -1
  557. package/lib/simple-tree/simpleSchema.d.ts +22 -4
  558. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  559. package/lib/simple-tree/simpleSchema.js.map +1 -1
  560. package/lib/simple-tree/toStoredSchema.d.ts +8 -1
  561. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  562. package/lib/simple-tree/toStoredSchema.js +17 -5
  563. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  564. package/{dist/simple-tree/toMapTree.d.ts → lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts} +12 -23
  565. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -0
  566. package/lib/simple-tree/{toMapTree.js → unhydratedFlexTreeFromInsertable.js} +105 -186
  567. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -0
  568. package/lib/tableSchema.d.ts +1 -1
  569. package/lib/treeFactory.d.ts.map +1 -1
  570. package/lib/treeFactory.js +6 -1
  571. package/lib/treeFactory.js.map +1 -1
  572. package/lib/util/index.d.ts +1 -1
  573. package/lib/util/index.d.ts.map +1 -1
  574. package/lib/util/index.js +1 -1
  575. package/lib/util/index.js.map +1 -1
  576. package/lib/util/typeUtils.d.ts +2 -2
  577. package/lib/util/typeUtils.js.map +1 -1
  578. package/lib/util/utils.d.ts +6 -0
  579. package/lib/util/utils.d.ts.map +1 -1
  580. package/lib/util/utils.js +6 -0
  581. package/lib/util/utils.js.map +1 -1
  582. package/package.json +21 -21
  583. package/src/codec/codec.ts +24 -3
  584. package/src/codec/index.ts +1 -0
  585. package/src/codec/versioned/codec.ts +42 -5
  586. package/src/core/index.ts +3 -1
  587. package/src/core/schema-stored/formatV2.ts +78 -0
  588. package/src/core/schema-stored/index.ts +4 -1
  589. package/src/core/schema-stored/schema.ts +123 -33
  590. package/src/core/tree/detachedFieldIndex.ts +13 -4
  591. package/src/core/tree/mapTree.ts +22 -7
  592. package/src/core/tree/visitorUtils.ts +2 -2
  593. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +16 -11
  594. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -7
  595. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +4 -4
  596. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +3 -2
  597. package/src/feature-libraries/default-schema/schemaChecker.ts +7 -6
  598. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +9 -16
  599. package/src/feature-libraries/flex-tree/context.ts +17 -7
  600. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +57 -33
  601. package/src/feature-libraries/flex-tree/index.ts +4 -8
  602. package/src/feature-libraries/flex-tree/lazyEntity.ts +5 -1
  603. package/src/feature-libraries/flex-tree/lazyField.ts +12 -13
  604. package/src/feature-libraries/flex-tree/lazyNode.ts +21 -8
  605. package/src/feature-libraries/forest-summary/forestSummarizer.ts +12 -18
  606. package/src/feature-libraries/index.ts +10 -1
  607. package/src/feature-libraries/mapTreeCursor.ts +112 -16
  608. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +2 -0
  609. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +9 -5
  610. package/src/feature-libraries/object-forest/objectForest.ts +3 -0
  611. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +11 -6
  612. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +3 -3
  613. package/src/feature-libraries/schema-index/codec.ts +73 -14
  614. package/src/feature-libraries/schema-index/formatV2.ts +30 -0
  615. package/src/feature-libraries/schema-index/index.ts +2 -1
  616. package/src/feature-libraries/schema-index/schemaSummarizer.ts +11 -18
  617. package/src/feature-libraries/treeCursorUtils.ts +21 -10
  618. package/src/index.ts +6 -0
  619. package/src/packageVersion.ts +1 -1
  620. package/src/shared-tree/schematizeTree.ts +1 -0
  621. package/src/shared-tree/schematizingTreeView.ts +40 -22
  622. package/src/shared-tree/sharedTree.ts +51 -15
  623. package/src/shared-tree/tree.ts +5 -20
  624. package/src/shared-tree/treeAlpha.ts +23 -12
  625. package/src/shared-tree/treeCheckout.ts +6 -3
  626. package/src/shared-tree-core/editManagerSummarizer.ts +9 -16
  627. package/src/shared-tree-core/sharedTreeCore.ts +33 -24
  628. package/src/simple-tree/api/configuration.ts +3 -3
  629. package/src/simple-tree/api/create.ts +49 -19
  630. package/src/simple-tree/api/customTree.ts +10 -0
  631. package/src/simple-tree/api/index.ts +1 -4
  632. package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
  633. package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
  634. package/src/simple-tree/api/schemaFactory.ts +78 -24
  635. package/src/simple-tree/api/schemaFactoryAlpha.ts +53 -8
  636. package/src/simple-tree/api/storedSchema.ts +4 -4
  637. package/src/simple-tree/api/treeChangeEvents.ts +8 -3
  638. package/src/simple-tree/api/treeNodeApi.ts +48 -27
  639. package/src/simple-tree/api/verboseTree.ts +15 -12
  640. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +5 -0
  641. package/src/simple-tree/core/getOrCreateNode.ts +4 -2
  642. package/src/simple-tree/core/index.ts +2 -3
  643. package/src/simple-tree/core/treeNodeKernel.ts +38 -55
  644. package/src/simple-tree/core/unhydratedFlexTree.ts +231 -292
  645. package/src/simple-tree/index.ts +6 -3
  646. package/src/simple-tree/leafNodeSchema.ts +2 -0
  647. package/src/simple-tree/node-kinds/array/arrayNode.ts +17 -13
  648. package/src/simple-tree/node-kinds/index.ts +0 -1
  649. package/src/simple-tree/node-kinds/map/mapNode.ts +17 -11
  650. package/src/simple-tree/node-kinds/object/index.ts +0 -1
  651. package/src/simple-tree/node-kinds/object/objectNode.ts +15 -49
  652. package/src/simple-tree/prepareForInsertion.ts +54 -43
  653. package/src/simple-tree/schemaTypes.ts +103 -13
  654. package/src/simple-tree/simpleSchema.ts +27 -5
  655. package/src/simple-tree/toStoredSchema.ts +22 -5
  656. package/src/simple-tree/{toMapTree.ts → unhydratedFlexTreeFromInsertable.ts} +134 -226
  657. package/src/treeFactory.ts +6 -1
  658. package/src/util/index.ts +1 -0
  659. package/src/util/typeUtils.ts +2 -2
  660. package/src/util/utils.ts +9 -0
  661. package/dist/feature-libraries/flex-tree/navigation.d.ts +0 -46
  662. package/dist/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  663. package/dist/feature-libraries/flex-tree/navigation.js +0 -104
  664. package/dist/feature-libraries/flex-tree/navigation.js.map +0 -1
  665. package/dist/simple-tree/toMapTree.d.ts.map +0 -1
  666. package/dist/simple-tree/toMapTree.js.map +0 -1
  667. package/lib/feature-libraries/flex-tree/navigation.d.ts +0 -46
  668. package/lib/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  669. package/lib/feature-libraries/flex-tree/navigation.js +0 -97
  670. package/lib/feature-libraries/flex-tree/navigation.js.map +0 -1
  671. package/lib/simple-tree/toMapTree.d.ts.map +0 -1
  672. package/lib/simple-tree/toMapTree.js.map +0 -1
  673. package/src/feature-libraries/flex-tree/navigation.ts +0 -121
@@ -7,7 +7,6 @@ import { unreachableCase, fail } from "@fluidframework/core-utils/internal";
7
7
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import {
10
- type MapTree,
11
10
  type TreeFieldStoredSchema,
12
11
  LeafNodeStoredSchema,
13
12
  ObjectNodeStoredSchema,
@@ -16,6 +15,8 @@ import {
16
15
  type SchemaAndPolicy,
17
16
  } from "../../core/index.js";
18
17
  import { allowsValue } from "../valueUtilities.js";
18
+ import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "../mapTreeCursor.js";
19
+ import { iterableHasSome, mapIterable } from "../../util/index.js";
19
20
 
20
21
  export enum SchemaValidationError {
21
22
  Field_KindNotInSchemaPolicy,
@@ -45,7 +46,7 @@ export function inSchemaOrThrow(maybeError: SchemaValidationError | undefined):
45
46
  * Deeply checks that the provided node complies with the schema based on its identifier.
46
47
  */
47
48
  export function isNodeInSchema(
48
- node: MapTree,
49
+ node: MinimalMapTreeNodeView,
49
50
  schemaAndPolicy: SchemaAndPolicy,
50
51
  ): SchemaValidationError | undefined {
51
52
  // Validate the schema declared by the node exists
@@ -57,7 +58,7 @@ export function isNodeInSchema(
57
58
  // Validate the node is well formed according to its schema
58
59
 
59
60
  if (schema instanceof LeafNodeStoredSchema) {
60
- if (node.fields.size !== 0) {
61
+ if (iterableHasSome(node.fields)) {
61
62
  return SchemaValidationError.LeafNode_FieldsNotAllowed;
62
63
  }
63
64
  if (!allowsValue(schema.leafValue, node.value)) {
@@ -69,7 +70,7 @@ export function isNodeInSchema(
69
70
  }
70
71
 
71
72
  if (schema instanceof ObjectNodeStoredSchema) {
72
- const uncheckedFieldsFromNode = new Set(node.fields.keys());
73
+ const uncheckedFieldsFromNode = new Set(mapIterable(node.fields, ([key, field]) => key));
73
74
  for (const [fieldKey, fieldSchema] of schema.objectNodeFields) {
74
75
  const nodeField = node.fields.get(fieldKey) ?? [];
75
76
  const fieldInSchemaResult = isFieldInSchema(nodeField, fieldSchema, schemaAndPolicy);
@@ -86,7 +87,7 @@ export function isNodeInSchema(
86
87
  return SchemaValidationError.ObjectNode_FieldNotInSchema;
87
88
  }
88
89
  } else if (schema instanceof MapNodeStoredSchema) {
89
- for (const field of node.fields.values()) {
90
+ for (const [_key, field] of node.fields) {
90
91
  const fieldInSchemaResult = isFieldInSchema(field, schema.mapFields, schemaAndPolicy);
91
92
  if (fieldInSchemaResult !== undefined) {
92
93
  return fieldInSchemaResult;
@@ -104,7 +105,7 @@ export function isNodeInSchema(
104
105
  * Deeply checks that the nodes comply with the field schema and included schema.
105
106
  */
106
107
  export function isFieldInSchema(
107
- childNodes: readonly MapTree[],
108
+ childNodes: MapTreeFieldViewGeneric<MinimalMapTreeNodeView>,
108
109
  schema: TreeFieldStoredSchema,
109
110
  schemaAndPolicy: SchemaAndPolicy,
110
111
  ): SchemaValidationError | undefined {
@@ -6,6 +6,7 @@
6
6
  import { bufferToString } from "@fluid-internal/client-utils";
7
7
  import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
8
8
  import type {
9
+ IExperimentalIncrementalSummaryContext,
9
10
  ISummaryTreeWithStats,
10
11
  ITelemetryContext,
11
12
  } from "@fluidframework/runtime-definitions/internal";
@@ -32,23 +33,15 @@ export class DetachedFieldIndexSummarizer implements Summarizable {
32
33
 
33
34
  public constructor(private readonly detachedFieldIndex: DetachedFieldIndex) {}
34
35
 
35
- public getAttachSummary(
36
- stringify: SummaryElementStringifier,
37
- fullTree?: boolean,
38
- trackState?: boolean,
39
- telemetryContext?: ITelemetryContext,
40
- ): ISummaryTreeWithStats {
36
+ public summarize(props: {
37
+ stringify: SummaryElementStringifier;
38
+ fullTree?: boolean;
39
+ trackState?: boolean;
40
+ telemetryContext?: ITelemetryContext;
41
+ incrementalSummaryContext?: IExperimentalIncrementalSummaryContext;
42
+ }): ISummaryTreeWithStats {
41
43
  const data = this.detachedFieldIndex.encode();
42
- return createSingleBlobSummary(detachedFieldIndexBlobKey, stringify(data));
43
- }
44
-
45
- public async summarize(
46
- stringify: SummaryElementStringifier,
47
- fullTree?: boolean,
48
- trackState?: boolean,
49
- telemetryContext?: ITelemetryContext,
50
- ): Promise<ISummaryTreeWithStats> {
51
- return this.getAttachSummary(stringify, fullTree, trackState, telemetryContext);
44
+ return createSingleBlobSummary(detachedFieldIndexBlobKey, props.stringify(data));
52
45
  }
53
46
 
54
47
  public async load(
@@ -54,16 +54,12 @@ export interface FlexTreeContext {
54
54
  }
55
55
 
56
56
  /**
57
- * A common context of a "forest" of FlexTrees.
58
- * It handles group operations like transforming cursors into anchors for edits.
57
+ * Subset of a hydrated context which can be used in more cases (like before the root and events are set up).
59
58
  */
60
- export interface FlexTreeHydratedContext extends FlexTreeContext {
61
- readonly events: Listenable<ForestEvents>;
59
+ export interface FlexTreeHydratedContextMinimal {
62
60
  /**
63
- * Gets the root field of the tree.
61
+ * The {@link NodeIdentifierManager} responsible for allocating and compressing identifiers for nodes in this context.
64
62
  */
65
- get root(): FlexTreeField;
66
-
67
63
  readonly nodeKeyManager: NodeIdentifierManager;
68
64
 
69
65
  /**
@@ -72,6 +68,20 @@ export interface FlexTreeHydratedContext extends FlexTreeContext {
72
68
  readonly checkout: ITreeCheckout;
73
69
  }
74
70
 
71
+ /**
72
+ * A common context of a "forest" of FlexTrees.
73
+ * It handles group operations like transforming cursors into anchors for edits.
74
+ */
75
+ export interface FlexTreeHydratedContext
76
+ extends FlexTreeContext,
77
+ FlexTreeHydratedContextMinimal {
78
+ readonly events: Listenable<ForestEvents>;
79
+ /**
80
+ * Gets the root field of the tree.
81
+ */
82
+ get root(): FlexTreeField;
83
+ }
84
+
75
85
  /**
76
86
  * Creating multiple flex tree contexts for the same branch, and thus with the same underlying AnchorSet does not work due to how TreeNode caching works.
77
87
  * This slot is used to detect if one already exists and error if creating a second.
@@ -5,12 +5,10 @@
5
5
 
6
6
  import {
7
7
  type AnchorNode,
8
- type ExclusiveMapTree,
9
8
  type FieldKey,
10
9
  type FieldKindIdentifier,
11
10
  type ITreeCursorSynchronous,
12
11
  type NormalizedFieldUpPath,
13
- type TreeNodeSchemaIdentifier,
14
12
  type TreeValue,
15
13
  anchorSlot,
16
14
  } from "../../core/index.js";
@@ -20,15 +18,21 @@ import type {
20
18
  ValueFieldEditBuilder,
21
19
  OptionalFieldEditBuilder,
22
20
  } from "../default-schema/index.js";
21
+ import type {
22
+ MapTreeFieldViewGeneric,
23
+ MapTreeNodeViewGeneric,
24
+ MinimalFieldMap,
25
+ MinimalMapTreeNodeView,
26
+ } from "../mapTreeCursor.js";
23
27
  import type { FlexFieldKind } from "../modular-schema/index.js";
24
28
 
25
- import type { FlexTreeContext } from "./context.js";
29
+ import type { FlexTreeContext, FlexTreeHydratedContext } from "./context.js";
26
30
 
27
31
  /**
28
32
  * An anchor slot which records the {@link FlexTreeNode} associated with that anchor, if there is one.
29
33
  * @remarks This always points to a "real" {@link FlexTreeNode} (i.e. a `LazyTreeNode`), never to a "raw" node.
30
34
  */
31
- export const flexTreeSlot = anchorSlot<FlexTreeNode>();
35
+ export const flexTreeSlot = anchorSlot<HydratedFlexTreeNode>();
32
36
 
33
37
  /**
34
38
  * Indicates that an object is a flex tree.
@@ -75,6 +79,14 @@ export interface FlexTreeEntity {
75
79
  * A common context of FlexTrees.
76
80
  */
77
81
  readonly context: FlexTreeContext;
82
+
83
+ /**
84
+ * Get a cursor for the underlying data.
85
+ * @remarks
86
+ * This cursor might be one the node uses in its implementation, and thus must be returned to its original location before using any other APIs to interact with the tree.
87
+ * Must not be held onto across edits or any other tree API use.
88
+ */
89
+ borrowCursor(): ITreeCursorSynchronous;
78
90
  }
79
91
 
80
92
  /**
@@ -98,6 +110,10 @@ export enum TreeStatus {
98
110
  * Nodes can enter this state for multiple reasons:
99
111
  * - The node was removed and nothing (e.g. undo/redo history) kept it from being cleaned up.
100
112
  * - The {@link TreeView} was disposed or had a schema change which made the tree incompatible.
113
+ *
114
+ * Deleted nodes' contents should not be observed or edited. This includes functionality exposed via {@link (Tree:variable)},
115
+ * with the exception of {@link TreeNodeApi.status}.
116
+ *
101
117
  * @privateRemarks
102
118
  * There was planned work (AB#17948) to make the first reason a node could become "Deleted" impossible,
103
119
  * at least as an opt in feature,
@@ -138,14 +154,9 @@ export enum TreeStatus {
138
154
  * @remarks
139
155
  * All editing is actually done via {@link FlexTreeField}s: the nodes are immutable other than that they contain mutable fields.
140
156
  */
141
- export interface FlexTreeNode extends FlexTreeEntity {
157
+ export interface FlexTreeNode extends FlexTreeEntity, MapTreeNodeViewGeneric<FlexTreeNode> {
142
158
  readonly [flexTreeMarker]: FlexTreeEntityKind.Node;
143
159
 
144
- /**
145
- * Value stored on this node.
146
- */
147
- readonly value?: TreeValue;
148
-
149
160
  /**
150
161
  * Gets a field of this node, if it is not empty.
151
162
  */
@@ -164,20 +175,24 @@ export interface FlexTreeNode extends FlexTreeEntity {
164
175
 
165
176
  /**
166
177
  * The field this tree is in, and the index within that field.
178
+ * @remarks
179
+ * The behavior of this at the root (especially removed and unhydrated roots) is currently not very consistent.
180
+ * Since very little relies on this, limit what it exposes to reduce the potential impact of inconsistent root handling.
167
181
  */
168
- readonly parentField: { readonly parent: FlexTreeField; readonly index: number };
182
+ readonly parentField: {
183
+ readonly parent: Pick<FlexTreeField, "parent" | "schema" | "key">;
184
+ readonly index: number;
185
+ };
169
186
 
170
- boxedIterator(): IterableIterator<FlexTreeField>;
187
+ /**
188
+ * The non-empty fields on this node.
189
+ */
190
+ readonly fields: MinimalFieldMap<FlexTreeField>;
171
191
 
172
192
  /**
173
- * The anchor node associated with this node
174
- *
175
- * @remarks
176
- * The ref count keeping this alive is owned by the FlexTreeNode:
177
- * if holding onto this anchor for longer than the FlexTreeNode might be alive,
178
- * a separate Anchor (and thus ref count) must be allocated to keep it alive.
193
+ * The non-empty fields on this node.
179
194
  */
180
- readonly anchorNode: AnchorNode;
195
+ [Symbol.iterator](): IterableIterator<FlexTreeField>;
181
196
 
182
197
  /**
183
198
  * Returns an iterable of keys for non-empty fields.
@@ -190,18 +205,31 @@ export interface FlexTreeNode extends FlexTreeEntity {
190
205
  keys(): IterableIterator<FieldKey>;
191
206
 
192
207
  /**
193
- * Schema for this entity.
194
- * If well-formed, it must follow this schema.
208
+ * If true, this node is a {@link HydratedFlexTreeNode}.
209
+ *
210
+ * If false, this node is unhydrated.
195
211
  */
196
- readonly schema: TreeNodeSchemaIdentifier;
212
+ isHydrated(): this is HydratedFlexTreeNode;
213
+ }
197
214
 
215
+ /**
216
+ * A FlexTreeNode that is hydrated, meaning it is associated with a {@link FlexTreeHydratedContext}.
217
+ */
218
+ export interface HydratedFlexTreeNode extends FlexTreeNode {
198
219
  /**
199
- * Get a cursor for the underlying data.
220
+ * {@inheritDoc FlexTreeNode.context}
221
+ */
222
+ readonly context: FlexTreeHydratedContext;
223
+
224
+ /**
225
+ * The anchor node associated with this node
226
+ *
200
227
  * @remarks
201
- * This cursor might be one the node uses in its implementation, and thus must be returned to its original location before using any other APIs to interact with the tree.
202
- * Must not be held onto across edits or any other tree API use.
228
+ * The ref count keeping this alive is owned by the FlexTreeNode:
229
+ * if holding onto this anchor for longer than the FlexTreeNode might be alive,
230
+ * a separate Anchor (and thus ref count) must be allocated to keep it alive.
203
231
  */
204
- borrowCursor(): ITreeCursorSynchronous;
232
+ readonly anchorNode: AnchorNode;
205
233
  }
206
234
 
207
235
  /**
@@ -222,7 +250,7 @@ export interface FlexTreeNode extends FlexTreeEntity {
222
250
  * All content in the tree is accessible without down-casting, but if the schema is known,
223
251
  * the schema aware API may be more ergonomic.
224
252
  */
225
- export interface FlexTreeField extends FlexTreeEntity {
253
+ export interface FlexTreeField extends FlexTreeEntity, MapTreeFieldViewGeneric<FlexTreeNode> {
226
254
  readonly [flexTreeMarker]: FlexTreeEntityKind.Field;
227
255
 
228
256
  /**
@@ -247,8 +275,6 @@ export interface FlexTreeField extends FlexTreeEntity {
247
275
  */
248
276
  is<TKind extends FlexFieldKind>(kind: TKind): this is FlexTreeTypedField<TKind>;
249
277
 
250
- boxedIterator(): IterableIterator<FlexTreeNode>;
251
-
252
278
  /**
253
279
  * Gets a node of this field by its index without unboxing.
254
280
  * @param index - Zero-based index of the item to retrieve. Negative values are interpreted from the end of the sequence.
@@ -278,12 +304,12 @@ export interface FlexTreeField extends FlexTreeEntity {
278
304
  /**
279
305
  * Typed tree for inserting as the content of a field.
280
306
  */
281
- export type FlexibleFieldContent = ExclusiveMapTree[];
307
+ export type FlexibleFieldContent = readonly FlexibleNodeContent[];
282
308
 
283
309
  /**
284
310
  * Tree for inserting as a node.
285
311
  */
286
- export type FlexibleNodeContent = ExclusiveMapTree;
312
+ export type FlexibleNodeContent = MinimalMapTreeNodeView;
287
313
 
288
314
  /**
289
315
  * {@link FlexTreeField} that stores a sequence of children.
@@ -329,8 +355,6 @@ export interface FlexTreeSequenceField extends FlexTreeField {
329
355
  * Get an editor for this sequence.
330
356
  */
331
357
  readonly editor: SequenceFieldEditBuilder<FlexibleFieldContent>;
332
-
333
- boxedIterator(): IterableIterator<FlexTreeNode>;
334
358
  }
335
359
 
336
360
  /**
@@ -17,21 +17,17 @@ export {
17
17
  FlexTreeEntityKind,
18
18
  isFlexTreeNode,
19
19
  flexTreeSlot,
20
+ type FlexibleNodeContent,
21
+ type FlexibleFieldContent,
22
+ type HydratedFlexTreeNode,
20
23
  } from "./flexTreeTypes.js";
21
24
 
22
- export {
23
- visitBipartiteIterableTree,
24
- Skip,
25
- visitBipartiteIterableTreeWithState,
26
- visitIterableTree,
27
- visitIterableTreeWithState,
28
- } from "./navigation.js";
29
-
30
25
  export {
31
26
  type FlexTreeContext,
32
27
  type FlexTreeHydratedContext,
33
28
  Context,
34
29
  ContextSlot,
30
+ type FlexTreeHydratedContextMinimal,
35
31
  } from "./context.js";
36
32
 
37
33
  export { type FlexTreeNodeEvents } from "./treeEvents.js";
@@ -6,6 +6,7 @@
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import {
9
+ type ITreeCursorSynchronous,
9
10
  type ITreeSubscriptionCursor,
10
11
  ITreeSubscriptionCursorState,
11
12
  TreeNavigationResult,
@@ -48,7 +49,10 @@ export abstract class LazyEntity<TAnchor = unknown> implements FlexTreeEntity, I
48
49
  this.context.withAnchors.add(this);
49
50
  }
50
51
 
51
- public abstract boxedIterator(): IterableIterator<FlexTreeEntity>;
52
+ public borrowCursor(): ITreeCursorSynchronous {
53
+ return this.cursor as ITreeCursorSynchronous;
54
+ }
55
+
52
56
  public abstract get [flexTreeMarker](): FlexTreeEntityKind;
53
57
 
54
58
  public [disposeSymbol](): void {
@@ -19,6 +19,7 @@ import {
19
19
  type TreeNavigationResult,
20
20
  inCursorNode,
21
21
  iterateCursorField,
22
+ mapCursorField,
22
23
  rootFieldKey,
23
24
  } from "../../core/index.js";
24
25
  import { disposeSymbol, getOrCreate } from "../../util/index.js";
@@ -37,12 +38,14 @@ import type { Context } from "./context.js";
37
38
  import {
38
39
  FlexTreeEntityKind,
39
40
  type FlexTreeField,
40
- type FlexTreeNode,
41
41
  type FlexTreeOptionalField,
42
42
  type FlexTreeRequiredField,
43
43
  type FlexTreeSequenceField,
44
44
  type FlexTreeTypedField,
45
45
  type FlexTreeUnknownUnboxed,
46
+ type FlexibleFieldContent,
47
+ type FlexibleNodeContent,
48
+ type HydratedFlexTreeNode,
46
49
  TreeStatus,
47
50
  flexTreeMarker,
48
51
  flexTreeSlot,
@@ -159,7 +162,7 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
159
162
  return this.schema === kind.identifier;
160
163
  }
161
164
 
162
- public get parent(): FlexTreeNode | undefined {
165
+ public get parent(): HydratedFlexTreeNode | undefined {
163
166
  if (this.anchor.parent === undefined) {
164
167
  return undefined;
165
168
  }
@@ -193,7 +196,7 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
193
196
  );
194
197
  }
195
198
 
196
- public boxedAt(index: number): FlexTreeNode | undefined {
199
+ public boxedAt(index: number): HydratedFlexTreeNode | undefined {
197
200
  const finalIndex = indexForAt(index, this.length);
198
201
 
199
202
  if (finalIndex === undefined) {
@@ -204,19 +207,15 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
204
207
  }
205
208
 
206
209
  public map<U>(callbackfn: (value: FlexTreeUnknownUnboxed, index: number) => U): U[] {
207
- return Array.from(this, callbackfn);
210
+ return mapCursorField(this.cursor, (cursor) =>
211
+ callbackfn(unboxedFlexNode(this.context, cursor, this.anchor), cursor.fieldIndex),
212
+ );
208
213
  }
209
214
 
210
- public boxedIterator(): IterableIterator<FlexTreeNode> {
215
+ public [Symbol.iterator](): IterableIterator<HydratedFlexTreeNode> {
211
216
  return iterateCursorField(this.cursor, (cursor) => makeTree(this.context, cursor));
212
217
  }
213
218
 
214
- public [Symbol.iterator](): IterableIterator<FlexTreeUnknownUnboxed> {
215
- return iterateCursorField(this.cursor, (cursor) =>
216
- unboxedFlexNode(this.context, cursor, this.anchor),
217
- );
218
- }
219
-
220
219
  public getFieldPath(): NormalizedFieldUpPath {
221
220
  return { parent: this.parent?.anchorNode, field: this.key };
222
221
  }
@@ -263,7 +262,7 @@ export class LazySequence extends LazyField implements FlexTreeSequenceField {
263
262
  return this.map((x) => x);
264
263
  }
265
264
 
266
- public editor: SequenceFieldEditBuilder<ExclusiveMapTree[]> = {
265
+ public editor: SequenceFieldEditBuilder<FlexibleFieldContent> = {
267
266
  insert: (index, newContent) => {
268
267
  this.sequenceEditor().insert(index, cursorForMapTreeField(newContent));
269
268
  },
@@ -279,7 +278,7 @@ export class LazySequence extends LazyField implements FlexTreeSequenceField {
279
278
  }
280
279
 
281
280
  export class LazyValueField extends LazyField implements FlexTreeRequiredField {
282
- public editor: ValueFieldEditBuilder<ExclusiveMapTree> = {
281
+ public editor: ValueFieldEditBuilder<FlexibleNodeContent> = {
283
282
  set: (newContent) => {
284
283
  this.valueFieldEditor().set(cursorForMapTreeField([newContent]));
285
284
  },
@@ -10,7 +10,6 @@ import {
10
10
  type AnchorNode,
11
11
  CursorLocationType,
12
12
  type FieldKey,
13
- type ITreeCursorSynchronous,
14
13
  type FieldKindIdentifier,
15
14
  type ITreeSubscriptionCursor,
16
15
  type TreeNavigationResult,
@@ -28,7 +27,7 @@ import type { Context } from "./context.js";
28
27
  import {
29
28
  FlexTreeEntityKind,
30
29
  type FlexTreeField,
31
- type FlexTreeNode,
30
+ type HydratedFlexTreeNode,
32
31
  flexTreeMarker,
33
32
  flexTreeSlot,
34
33
  } from "./flexTreeTypes.js";
@@ -63,7 +62,7 @@ function cleanupTree(anchor: AnchorNode): void {
63
62
  /**
64
63
  * Lazy implementation of {@link FlexTreeNode}.
65
64
  */
66
- export class LazyTreeNode extends LazyEntity<Anchor> implements FlexTreeNode {
65
+ export class LazyTreeNode extends LazyEntity<Anchor> implements HydratedFlexTreeNode {
67
66
  public get [flexTreeMarker](): FlexTreeEntityKind.Node {
68
67
  return FlexTreeEntityKind.Node;
69
68
  }
@@ -75,21 +74,21 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements FlexTreeNode {
75
74
 
76
75
  public constructor(
77
76
  context: Context,
78
- public readonly schema: TreeNodeSchemaIdentifier,
77
+ public readonly type: TreeNodeSchemaIdentifier,
79
78
  cursor: ITreeSubscriptionCursor,
80
79
  public readonly anchorNode: AnchorNode,
81
80
  anchor: Anchor,
82
81
  ) {
83
82
  super(context, cursor, anchor);
84
83
  this.storedSchema =
85
- context.schema.nodeSchema.get(this.schema) ?? fail(0xb14 /* missing schema */);
84
+ context.schema.nodeSchema.get(this.type) ?? fail(0xb14 /* missing schema */);
86
85
  assert(cursor.mode === CursorLocationType.Nodes, 0x783 /* must be in nodes mode */);
87
86
  anchorNode.slots.set(flexTreeSlot, this);
88
87
  this.#removeDeleteCallback = anchorNode.events.on("afterDestroy", cleanupTree);
89
88
  }
90
89
 
91
- public borrowCursor(): ITreeCursorSynchronous {
92
- return this.cursor as ITreeCursorSynchronous;
90
+ public isHydrated(): this is HydratedFlexTreeNode {
91
+ return true;
93
92
  }
94
93
 
95
94
  protected override tryMoveCursorToAnchor(
@@ -111,6 +110,20 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements FlexTreeNode {
111
110
  return this.cursor.value;
112
111
  }
113
112
 
113
+ public readonly fields: Pick<Map<FieldKey, FlexTreeField>, typeof Symbol.iterator | "get"> =
114
+ {
115
+ get: (key: FieldKey): FlexTreeField | undefined => this.tryGetField(key),
116
+ [Symbol.iterator]: (): IterableIterator<[FieldKey, FlexTreeField]> =>
117
+ mapCursorFields(this.cursor, (cursor) => {
118
+ const key: FieldKey = cursor.getFieldKey();
119
+ const pair: [FieldKey, FlexTreeField] = [
120
+ key,
121
+ makeField(this.context, this.storedSchema.getFieldSchema(key).kind, cursor),
122
+ ];
123
+ return pair;
124
+ }).values(),
125
+ };
126
+
114
127
  public tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {
115
128
  const schema = this.storedSchema.getFieldSchema(fieldKey);
116
129
  return inCursorField(this.cursor, fieldKey, (cursor) => {
@@ -128,7 +141,7 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements FlexTreeNode {
128
141
  });
129
142
  }
130
143
 
131
- public boxedIterator(): IterableIterator<FlexTreeField> {
144
+ public [Symbol.iterator](): IterableIterator<FlexTreeField> {
132
145
  return mapCursorFields(this.cursor, (cursor) =>
133
146
  makeField(
134
147
  this.context,
@@ -8,12 +8,13 @@ import { assert } from "@fluidframework/core-utils/internal";
8
8
  import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
9
9
  import type { IIdCompressor } from "@fluidframework/id-compressor";
10
10
  import type {
11
+ IExperimentalIncrementalSummaryContext,
11
12
  ISummaryTreeWithStats,
12
13
  ITelemetryContext,
13
14
  } from "@fluidframework/runtime-definitions/internal";
14
15
  import { createSingleBlobSummary } from "@fluidframework/shared-object-base/internal";
15
16
 
16
- import { type ICodecOptions, noopValidator } from "../../codec/index.js";
17
+ import type { CodecWriteOptions } from "../../codec/index.js";
17
18
  import {
18
19
  type DeltaDetachedNodeBuild,
19
20
  type DeltaFieldChanges,
@@ -60,9 +61,10 @@ export class ForestSummarizer implements Summarizable {
60
61
  private readonly revisionTagCodec: RevisionTagCodec,
61
62
  fieldBatchCodec: FieldBatchCodec,
62
63
  private readonly encoderContext: FieldBatchEncodingContext,
63
- options: ICodecOptions = { jsonValidator: noopValidator },
64
+ options: CodecWriteOptions,
64
65
  private readonly idCompressor: IIdCompressor,
65
66
  ) {
67
+ // TODO: this should take in CodecWriteOptions, and use it to pick the write version.
66
68
  this.codec = makeForestSummarizerCodec(options, fieldBatchCodec);
67
69
  }
68
70
 
@@ -94,22 +96,14 @@ export class ForestSummarizer implements Summarizable {
94
96
  return stringify(encoded);
95
97
  }
96
98
 
97
- public getAttachSummary(
98
- stringify: SummaryElementStringifier,
99
- fullTree?: boolean,
100
- trackState?: boolean,
101
- telemetryContext?: ITelemetryContext,
102
- ): ISummaryTreeWithStats {
103
- return createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));
104
- }
105
-
106
- public async summarize(
107
- stringify: SummaryElementStringifier,
108
- fullTree?: boolean,
109
- trackState?: boolean,
110
- telemetryContext?: ITelemetryContext,
111
- ): Promise<ISummaryTreeWithStats> {
112
- return createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));
99
+ public summarize(props: {
100
+ stringify: SummaryElementStringifier;
101
+ fullTree?: boolean;
102
+ trackState?: boolean;
103
+ telemetryContext?: ITelemetryContext;
104
+ incrementalSummaryContext?: IExperimentalIncrementalSummaryContext;
105
+ }): ISummaryTreeWithStats {
106
+ return createSingleBlobSummary(treeBlobKey, this.getTreeString(props.stringify));
113
107
  }
114
108
 
115
109
  public async load(
@@ -15,6 +15,12 @@ export {
15
15
  cursorForMapTreeNode,
16
16
  mapTreeFromCursor,
17
17
  mapTreeFieldFromCursor,
18
+ type MinimalMapTreeNodeView,
19
+ mapTreeFieldsWithField,
20
+ mapTreeWithField,
21
+ type MapTreeFieldViewGeneric,
22
+ type MapTreeNodeViewGeneric,
23
+ type MinimalFieldMap,
18
24
  } from "./mapTreeCursor.js";
19
25
  export { buildForest } from "./object-forest/index.js";
20
26
  export {
@@ -152,7 +158,6 @@ export {
152
158
  type FlexTreeOptionalField,
153
159
  type FlexTreeRequiredField,
154
160
  type FlexTreeSequenceField,
155
- Skip,
156
161
  type FlexTreeContext,
157
162
  type FlexTreeHydratedContext,
158
163
  type FlexTreeTypedField,
@@ -174,6 +179,10 @@ export {
174
179
  treeStatusFromAnchorCache,
175
180
  indexForAt,
176
181
  FlexTreeEntityKind,
182
+ type FlexibleNodeContent,
183
+ type FlexibleFieldContent,
184
+ type FlexTreeHydratedContextMinimal,
185
+ type HydratedFlexTreeNode,
177
186
  } from "./flex-tree/index.js";
178
187
 
179
188
  export { TreeCompressionStrategy } from "./treeCompressionUtils.js";