@fluidframework/tree 2.41.0-337492 → 2.41.0-338401

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 (491) hide show
  1. package/api-report/tree.alpha.api.md +165 -5
  2. package/dist/alpha.d.ts +2 -0
  3. package/dist/codec/codec.d.ts +42 -7
  4. package/dist/codec/codec.d.ts.map +1 -1
  5. package/dist/codec/codec.js +50 -8
  6. package/dist/codec/codec.js.map +1 -1
  7. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  8. package/dist/core/change-family/editBuilder.js.map +1 -1
  9. package/dist/core/forest/forest.d.ts.map +1 -1
  10. package/dist/core/forest/forest.js.map +1 -1
  11. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  12. package/dist/core/schema-stored/schema.js.map +1 -1
  13. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  14. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  15. package/dist/core/schema-stored/storedSchemaRepository.js +1 -1
  16. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  17. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  18. package/dist/core/tree/anchorSet.js +2 -2
  19. package/dist/core/tree/anchorSet.js.map +1 -1
  20. package/dist/core/tree/chunk.d.ts.map +1 -1
  21. package/dist/core/tree/chunk.js.map +1 -1
  22. package/dist/core/tree/delta.d.ts.map +1 -1
  23. package/dist/core/tree/delta.js.map +1 -1
  24. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  25. package/dist/core/tree/deltaUtil.js.map +1 -1
  26. package/dist/core/tree/detachedFieldIndex.d.ts +1 -1
  27. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  29. package/dist/core/tree/detachedFieldIndexCodec.d.ts +1 -1
  30. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexCodec.js +1 -1
  32. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  33. package/dist/core/tree/pathTree.d.ts.map +1 -1
  34. package/dist/core/tree/pathTree.js.map +1 -1
  35. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  36. package/dist/core/tree/treeTextFormat.js.map +1 -1
  37. package/dist/core/tree/visitDelta.d.ts +1 -1
  38. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  39. package/dist/core/tree/visitDelta.js.map +1 -1
  40. package/dist/core/tree/visitorUtils.d.ts +2 -2
  41. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  42. package/dist/core/tree/visitorUtils.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
  44. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/chunkTree.js +1 -1
  46. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  48. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  50. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  52. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  54. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  55. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  56. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
  60. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -1
  62. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  66. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  69. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  70. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  72. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
  74. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  75. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  76. package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  77. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  78. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  79. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  81. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  82. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  83. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  84. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +4 -4
  85. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  86. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
  87. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  88. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  89. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  90. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  91. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  92. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  93. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  94. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  95. package/dist/feature-libraries/default-schema/index.js +2 -1
  96. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  97. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  98. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  99. package/dist/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
  100. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  101. package/dist/feature-libraries/default-schema/schemaChecker.js +35 -26
  102. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  103. package/dist/feature-libraries/flex-tree/context.d.ts +16 -14
  104. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  105. package/dist/feature-libraries/flex-tree/context.js +12 -18
  106. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  107. package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
  108. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  109. package/dist/feature-libraries/flex-tree/index.js +1 -2
  110. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  111. package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -5
  112. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  113. package/dist/feature-libraries/flex-tree/lazyField.js +2 -16
  114. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  115. package/dist/feature-libraries/flex-tree/utilities.d.ts +6 -6
  116. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  117. package/dist/feature-libraries/flex-tree/utilities.js +6 -7
  118. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  119. package/dist/feature-libraries/index.d.ts +3 -3
  120. package/dist/feature-libraries/index.d.ts.map +1 -1
  121. package/dist/feature-libraries/index.js +3 -2
  122. package/dist/feature-libraries/index.js.map +1 -1
  123. package/dist/feature-libraries/initializeForest.d.ts.map +1 -1
  124. package/dist/feature-libraries/initializeForest.js.map +1 -1
  125. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  126. package/dist/feature-libraries/treeCursorUtils.js +1 -1
  127. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  128. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  129. package/dist/feature-libraries/valueUtilities.js +6 -6
  130. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  131. package/dist/jsonDomainSchema.d.ts.map +1 -1
  132. package/dist/jsonDomainSchema.js.map +1 -1
  133. package/dist/packageVersion.d.ts +1 -1
  134. package/dist/packageVersion.js +1 -1
  135. package/dist/packageVersion.js.map +1 -1
  136. package/dist/serializableDomainSchema.d.ts.map +1 -1
  137. package/dist/serializableDomainSchema.js.map +1 -1
  138. package/dist/shared-tree/checkoutFlexTreeView.d.ts +7 -3
  139. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  140. package/dist/shared-tree/checkoutFlexTreeView.js +11 -2
  141. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  142. package/dist/shared-tree/schematizingTreeView.d.ts +3 -0
  143. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  144. package/dist/shared-tree/schematizingTreeView.js +10 -5
  145. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  146. package/dist/shared-tree/treeAlpha.d.ts +9 -4
  147. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  148. package/dist/shared-tree/treeAlpha.js +20 -8
  149. package/dist/shared-tree/treeAlpha.js.map +1 -1
  150. package/dist/sharedTreeAttributes.d.ts.map +1 -1
  151. package/dist/sharedTreeAttributes.js.map +1 -1
  152. package/dist/simple-tree/api/create.d.ts +5 -1
  153. package/dist/simple-tree/api/create.d.ts.map +1 -1
  154. package/dist/simple-tree/api/create.js +11 -12
  155. package/dist/simple-tree/api/create.js.map +1 -1
  156. package/dist/simple-tree/api/index.d.ts +3 -3
  157. package/dist/simple-tree/api/index.d.ts.map +1 -1
  158. package/dist/simple-tree/api/index.js +4 -2
  159. package/dist/simple-tree/api/index.js.map +1 -1
  160. package/dist/simple-tree/api/storedSchema.d.ts +1 -8
  161. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  162. package/dist/simple-tree/api/storedSchema.js +3 -14
  163. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  164. package/dist/simple-tree/api/treeNodeApi.d.ts +8 -0
  165. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  166. package/dist/simple-tree/api/treeNodeApi.js +3 -1
  167. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  168. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  169. package/dist/simple-tree/arrayNode.js +3 -9
  170. package/dist/simple-tree/arrayNode.js.map +1 -1
  171. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  172. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  173. package/dist/simple-tree/core/treeNodeKernel.d.ts +5 -17
  174. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  175. package/dist/simple-tree/core/treeNodeKernel.js +17 -48
  176. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  177. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
  178. package/dist/simple-tree/core/unhydratedFlexTree.js +4 -4
  179. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  180. package/dist/simple-tree/getTreeNodeForField.d.ts +12 -0
  181. package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  182. package/dist/simple-tree/getTreeNodeForField.js +39 -0
  183. package/dist/simple-tree/getTreeNodeForField.js.map +1 -0
  184. package/dist/simple-tree/index.d.ts +3 -2
  185. package/dist/simple-tree/index.d.ts.map +1 -1
  186. package/dist/simple-tree/index.js +10 -6
  187. package/dist/simple-tree/index.js.map +1 -1
  188. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  189. package/dist/simple-tree/mapNode.js +21 -24
  190. package/dist/simple-tree/mapNode.js.map +1 -1
  191. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  192. package/dist/simple-tree/objectNode.js +5 -7
  193. package/dist/simple-tree/objectNode.js.map +1 -1
  194. package/dist/simple-tree/prepareForInsertion.d.ts +42 -0
  195. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -0
  196. package/dist/simple-tree/prepareForInsertion.js +166 -0
  197. package/dist/simple-tree/prepareForInsertion.js.map +1 -0
  198. package/dist/simple-tree/toMapTree.d.ts +4 -9
  199. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  200. package/dist/simple-tree/toMapTree.js +4 -23
  201. package/dist/simple-tree/toMapTree.js.map +1 -1
  202. package/dist/tableSchema.d.ts +201 -104
  203. package/dist/tableSchema.d.ts.map +1 -1
  204. package/dist/tableSchema.js +155 -58
  205. package/dist/tableSchema.js.map +1 -1
  206. package/dist/treeFactory.d.ts.map +1 -1
  207. package/dist/treeFactory.js +2 -2
  208. package/dist/treeFactory.js.map +1 -1
  209. package/lib/alpha.d.ts +2 -0
  210. package/lib/codec/codec.d.ts +42 -7
  211. package/lib/codec/codec.d.ts.map +1 -1
  212. package/lib/codec/codec.js +50 -8
  213. package/lib/codec/codec.js.map +1 -1
  214. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  215. package/lib/core/change-family/editBuilder.js.map +1 -1
  216. package/lib/core/forest/forest.d.ts.map +1 -1
  217. package/lib/core/forest/forest.js.map +1 -1
  218. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  219. package/lib/core/schema-stored/schema.js.map +1 -1
  220. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  221. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  222. package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
  223. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  224. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  225. package/lib/core/tree/anchorSet.js +2 -2
  226. package/lib/core/tree/anchorSet.js.map +1 -1
  227. package/lib/core/tree/chunk.d.ts.map +1 -1
  228. package/lib/core/tree/chunk.js.map +1 -1
  229. package/lib/core/tree/delta.d.ts.map +1 -1
  230. package/lib/core/tree/delta.js.map +1 -1
  231. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  232. package/lib/core/tree/deltaUtil.js.map +1 -1
  233. package/lib/core/tree/detachedFieldIndex.d.ts +1 -1
  234. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  235. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  236. package/lib/core/tree/detachedFieldIndexCodec.d.ts +1 -1
  237. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  238. package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
  239. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  240. package/lib/core/tree/pathTree.d.ts.map +1 -1
  241. package/lib/core/tree/pathTree.js.map +1 -1
  242. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  243. package/lib/core/tree/treeTextFormat.js.map +1 -1
  244. package/lib/core/tree/visitDelta.d.ts +1 -1
  245. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  246. package/lib/core/tree/visitDelta.js.map +1 -1
  247. package/lib/core/tree/visitorUtils.d.ts +2 -2
  248. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  249. package/lib/core/tree/visitorUtils.js.map +1 -1
  250. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
  251. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  252. package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -1
  253. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  254. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  255. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  256. package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  257. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  258. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  259. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  260. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  261. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  262. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  263. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  264. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  265. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  266. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
  267. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  268. package/lib/feature-libraries/chunked-forest/codec/codecs.js +10 -0
  269. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  270. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  271. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  272. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  273. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  274. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  275. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  276. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  277. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  278. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  279. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  280. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
  281. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  282. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  283. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  284. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  285. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  286. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  287. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  288. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  289. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  290. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  291. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  292. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  293. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
  294. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  295. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  296. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  297. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  298. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  299. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  300. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  301. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  302. package/lib/feature-libraries/default-schema/index.js +1 -1
  303. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  304. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  305. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  306. package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
  307. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  308. package/lib/feature-libraries/default-schema/schemaChecker.js +33 -25
  309. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  310. package/lib/feature-libraries/flex-tree/context.d.ts +16 -14
  311. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  312. package/lib/feature-libraries/flex-tree/context.js +11 -16
  313. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  314. package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
  315. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  316. package/lib/feature-libraries/flex-tree/index.js +1 -1
  317. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  318. package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -5
  319. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  320. package/lib/feature-libraries/flex-tree/lazyField.js +1 -14
  321. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  322. package/lib/feature-libraries/flex-tree/utilities.d.ts +6 -6
  323. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  324. package/lib/feature-libraries/flex-tree/utilities.js +6 -7
  325. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  326. package/lib/feature-libraries/index.d.ts +3 -3
  327. package/lib/feature-libraries/index.d.ts.map +1 -1
  328. package/lib/feature-libraries/index.js +3 -3
  329. package/lib/feature-libraries/index.js.map +1 -1
  330. package/lib/feature-libraries/initializeForest.d.ts.map +1 -1
  331. package/lib/feature-libraries/initializeForest.js.map +1 -1
  332. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  333. package/lib/feature-libraries/treeCursorUtils.js +1 -1
  334. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  335. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  336. package/lib/feature-libraries/valueUtilities.js +1 -1
  337. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  338. package/lib/jsonDomainSchema.d.ts.map +1 -1
  339. package/lib/jsonDomainSchema.js.map +1 -1
  340. package/lib/packageVersion.d.ts +1 -1
  341. package/lib/packageVersion.js +1 -1
  342. package/lib/packageVersion.js.map +1 -1
  343. package/lib/serializableDomainSchema.d.ts.map +1 -1
  344. package/lib/serializableDomainSchema.js.map +1 -1
  345. package/lib/shared-tree/checkoutFlexTreeView.d.ts +7 -3
  346. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  347. package/lib/shared-tree/checkoutFlexTreeView.js +12 -3
  348. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  349. package/lib/shared-tree/schematizingTreeView.d.ts +3 -0
  350. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  351. package/lib/shared-tree/schematizingTreeView.js +11 -6
  352. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  353. package/lib/shared-tree/treeAlpha.d.ts +9 -4
  354. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  355. package/lib/shared-tree/treeAlpha.js +22 -10
  356. package/lib/shared-tree/treeAlpha.js.map +1 -1
  357. package/lib/sharedTreeAttributes.d.ts.map +1 -1
  358. package/lib/sharedTreeAttributes.js.map +1 -1
  359. package/lib/simple-tree/api/create.d.ts +5 -1
  360. package/lib/simple-tree/api/create.d.ts.map +1 -1
  361. package/lib/simple-tree/api/create.js +9 -11
  362. package/lib/simple-tree/api/create.js.map +1 -1
  363. package/lib/simple-tree/api/index.d.ts +3 -3
  364. package/lib/simple-tree/api/index.d.ts.map +1 -1
  365. package/lib/simple-tree/api/index.js +3 -3
  366. package/lib/simple-tree/api/index.js.map +1 -1
  367. package/lib/simple-tree/api/storedSchema.d.ts +1 -8
  368. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  369. package/lib/simple-tree/api/storedSchema.js +2 -12
  370. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  371. package/lib/simple-tree/api/treeNodeApi.d.ts +8 -0
  372. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  373. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  374. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  375. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  376. package/lib/simple-tree/arrayNode.js +4 -10
  377. package/lib/simple-tree/arrayNode.js.map +1 -1
  378. package/lib/simple-tree/core/getOrCreateNode.js +2 -2
  379. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  380. package/lib/simple-tree/core/treeNodeKernel.d.ts +5 -17
  381. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  382. package/lib/simple-tree/core/treeNodeKernel.js +16 -47
  383. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  384. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
  385. package/lib/simple-tree/core/unhydratedFlexTree.js +4 -4
  386. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  387. package/lib/simple-tree/getTreeNodeForField.d.ts +12 -0
  388. package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  389. package/lib/simple-tree/getTreeNodeForField.js +35 -0
  390. package/lib/simple-tree/getTreeNodeForField.js.map +1 -0
  391. package/lib/simple-tree/index.d.ts +3 -2
  392. package/lib/simple-tree/index.d.ts.map +1 -1
  393. package/lib/simple-tree/index.js +3 -2
  394. package/lib/simple-tree/index.js.map +1 -1
  395. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  396. package/lib/simple-tree/mapNode.js +3 -6
  397. package/lib/simple-tree/mapNode.js.map +1 -1
  398. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  399. package/lib/simple-tree/objectNode.js +4 -6
  400. package/lib/simple-tree/objectNode.js.map +1 -1
  401. package/lib/simple-tree/prepareForInsertion.d.ts +42 -0
  402. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -0
  403. package/lib/simple-tree/prepareForInsertion.js +160 -0
  404. package/lib/simple-tree/prepareForInsertion.js.map +1 -0
  405. package/lib/simple-tree/toMapTree.d.ts +4 -9
  406. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  407. package/lib/simple-tree/toMapTree.js +4 -22
  408. package/lib/simple-tree/toMapTree.js.map +1 -1
  409. package/lib/tableSchema.d.ts +201 -104
  410. package/lib/tableSchema.d.ts.map +1 -1
  411. package/lib/tableSchema.js +156 -59
  412. package/lib/tableSchema.js.map +1 -1
  413. package/lib/treeFactory.d.ts.map +1 -1
  414. package/lib/treeFactory.js +2 -2
  415. package/lib/treeFactory.js.map +1 -1
  416. package/lib/tsdoc-metadata.json +1 -1
  417. package/package.json +25 -25
  418. package/src/codec/codec.ts +54 -8
  419. package/src/core/change-family/editBuilder.ts +1 -0
  420. package/src/core/forest/forest.ts +1 -1
  421. package/src/core/schema-stored/schema.ts +2 -0
  422. package/src/core/schema-stored/storedSchemaRepository.ts +2 -2
  423. package/src/core/tree/anchorSet.ts +4 -4
  424. package/src/core/tree/chunk.ts +2 -1
  425. package/src/core/tree/delta.ts +1 -0
  426. package/src/core/tree/deltaUtil.ts +1 -1
  427. package/src/core/tree/detachedFieldIndex.ts +1 -1
  428. package/src/core/tree/detachedFieldIndexCodec.ts +2 -2
  429. package/src/core/tree/pathTree.ts +1 -1
  430. package/src/core/tree/treeTextFormat.ts +1 -0
  431. package/src/core/tree/visitDelta.ts +1 -1
  432. package/src/core/tree/visitorUtils.ts +3 -2
  433. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  434. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  435. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -5
  436. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
  437. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -0
  438. package/src/feature-libraries/chunked-forest/codec/codecs.ts +15 -1
  439. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -1
  440. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -0
  441. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +1 -1
  442. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +1 -1
  443. package/src/feature-libraries/chunked-forest/emptyChunk.ts +1 -0
  444. package/src/feature-libraries/chunked-forest/index.ts +1 -0
  445. package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
  446. package/src/feature-libraries/chunked-forest/uniformChunk.ts +2 -3
  447. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
  448. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
  449. package/src/feature-libraries/default-schema/index.ts +6 -1
  450. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +1 -0
  451. package/src/feature-libraries/default-schema/schemaChecker.ts +37 -26
  452. package/src/feature-libraries/flex-tree/context.ts +18 -20
  453. package/src/feature-libraries/flex-tree/index.ts +0 -1
  454. package/src/feature-libraries/flex-tree/lazyField.ts +2 -14
  455. package/src/feature-libraries/flex-tree/utilities.ts +8 -8
  456. package/src/feature-libraries/index.ts +2 -1
  457. package/src/feature-libraries/initializeForest.ts +1 -1
  458. package/src/feature-libraries/treeCursorUtils.ts +1 -1
  459. package/src/feature-libraries/valueUtilities.ts +1 -1
  460. package/src/jsonDomainSchema.ts +0 -1
  461. package/src/packageVersion.ts +1 -1
  462. package/src/serializableDomainSchema.ts +1 -0
  463. package/src/shared-tree/checkoutFlexTreeView.ts +10 -6
  464. package/src/shared-tree/schematizingTreeView.ts +11 -12
  465. package/src/shared-tree/treeAlpha.ts +50 -13
  466. package/src/sharedTreeAttributes.ts +1 -0
  467. package/src/simple-tree/api/create.ts +17 -16
  468. package/src/simple-tree/api/index.ts +13 -3
  469. package/src/simple-tree/api/storedSchema.ts +2 -19
  470. package/src/simple-tree/api/treeNodeApi.ts +2 -2
  471. package/src/simple-tree/arrayNode.ts +9 -20
  472. package/src/simple-tree/core/getOrCreateNode.ts +2 -2
  473. package/src/simple-tree/core/treeNodeKernel.ts +22 -53
  474. package/src/simple-tree/core/unhydratedFlexTree.ts +4 -4
  475. package/src/simple-tree/getTreeNodeForField.ts +46 -0
  476. package/src/simple-tree/index.ts +8 -5
  477. package/src/simple-tree/mapNode.ts +8 -12
  478. package/src/simple-tree/objectNode.ts +3 -12
  479. package/src/simple-tree/prepareForInsertion.ts +276 -0
  480. package/src/simple-tree/toMapTree.ts +3 -27
  481. package/src/tableSchema.ts +351 -138
  482. package/src/treeFactory.ts +2 -4
  483. package/dist/simple-tree/proxies.d.ts +0 -23
  484. package/dist/simple-tree/proxies.d.ts.map +0 -1
  485. package/dist/simple-tree/proxies.js +0 -135
  486. package/dist/simple-tree/proxies.js.map +0 -1
  487. package/lib/simple-tree/proxies.d.ts +0 -23
  488. package/lib/simple-tree/proxies.d.ts.map +0 -1
  489. package/lib/simple-tree/proxies.js +0 -130
  490. package/lib/simple-tree/proxies.js.map +0 -1
  491. package/src/simple-tree/proxies.ts +0 -191
@@ -10,10 +10,8 @@ import { EmptyKey, type ExclusiveMapTree } from "../core/index.js";
10
10
  import {
11
11
  type FlexTreeNode,
12
12
  type FlexTreeSequenceField,
13
- getSchemaAndPolicy,
14
13
  isFlexTreeNode,
15
14
  } from "../feature-libraries/index.js";
16
- import { prepareContentForHydration } from "./proxies.js";
17
15
  import {
18
16
  normalizeAllowedTypes,
19
17
  unannotateImplicitAllowedTypes,
@@ -41,6 +39,7 @@ import {
41
39
  type TreeNodeSchemaClass,
42
40
  } from "./core/index.js";
43
41
  import { type InsertableContent, mapTreeFromNodeData } from "./toMapTree.js";
42
+ import { prepareArrayContentForInsertion } from "./prepareForInsertion.js";
44
43
  import {
45
44
  getKernel,
46
45
  UnhydratedFlexTreeNode,
@@ -860,24 +859,14 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
860
859
  | IterableTreeArrayContent<InsertableContent>
861
860
  )[];
862
861
 
863
- const mapTrees = content
864
- .flatMap((c): InsertableContent[] =>
865
- c instanceof IterableTreeArrayContent ? Array.from(c) : [c],
866
- )
867
- .map((c) =>
868
- mapTreeFromNodeData(
869
- c,
870
- this.simpleSchema,
871
- sequenceField.context.isHydrated()
872
- ? sequenceField.context.nodeKeyManager
873
- : undefined,
874
- getSchemaAndPolicy(sequenceField),
875
- ),
876
- );
877
-
878
- if (sequenceField.context.isHydrated()) {
879
- prepareContentForHydration(mapTrees, sequenceField.context.checkout.forest);
880
- }
862
+ const contentArray = content.flatMap((c): InsertableContent[] =>
863
+ c instanceof IterableTreeArrayContent ? Array.from(c) : [c],
864
+ );
865
+ const mapTrees = prepareArrayContentForInsertion(
866
+ contentArray,
867
+ this.simpleSchema,
868
+ sequenceField.context,
869
+ );
881
870
 
882
871
  return mapTrees;
883
872
  }
@@ -7,7 +7,7 @@ import type { TreeValue } from "../../core/index.js";
7
7
  import {
8
8
  type InnerNode,
9
9
  unhydratedFlexTreeNodeToTreeNode,
10
- proxySlot,
10
+ simpleTreeNodeSlot,
11
11
  createTreeNodeFromInner,
12
12
  } from "./treeNodeKernel.js";
13
13
  import type { TreeNode } from "./treeNode.js";
@@ -23,7 +23,7 @@ export function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | Tr
23
23
  const cached =
24
24
  flexNode instanceof UnhydratedFlexTreeNode
25
25
  ? unhydratedFlexTreeNodeToTreeNode.get(flexNode)
26
- : flexNode.anchorNode.slots.get(proxySlot);
26
+ : flexNode.anchorNode.slots.get(simpleTreeNodeSlot);
27
27
 
28
28
  if (cached !== undefined) {
29
29
  return cached;
@@ -175,12 +175,7 @@ export class TreeNodeKernel {
175
175
  };
176
176
  } else {
177
177
  // Hydrated case
178
- const { anchorNode } = innerNode;
179
- assert(
180
- !anchorNode.slots.has(proxySlot),
181
- 0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
182
- );
183
- this.#hydrationState = this.createHydratedState(anchorNode);
178
+ this.#hydrationState = this.createHydratedState(innerNode.anchorNode);
184
179
  }
185
180
  }
186
181
 
@@ -197,16 +192,22 @@ export class TreeNodeKernel {
197
192
 
198
193
  /**
199
194
  * Transition from {@link Unhydrated} to hydrated.
200
- * Bi-directionally associates the given hydrated TreeNode to the given anchor node.
195
+ * Bi-directionally associates the given hydrated TreeNode to the anchor node at the provided path.
201
196
  * @remarks
202
197
  * Happens at most once for any given node.
203
- * Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
198
+ * Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once this node has an anchor node.
204
199
  */
205
- private hydrate(anchorNode: AnchorNode): void {
200
+ public hydrate(anchors: AnchorSet, path: UpPath): void {
206
201
  assert(!this.disposed, 0xa2a /* cannot hydrate a disposed node */);
207
202
  assert(!isHydrated(this.#hydrationState), 0xa2b /* hydration should only happen once */);
208
203
  unhydratedFlexTreeNodeToTreeNodeInternal.delete(this.#hydrationState.innerNode);
204
+
205
+ const anchor = anchors.track(path);
206
+ const anchorNode =
207
+ anchors.locate(anchor) ?? fail(0xb42 /* Expected anchor node to be present */);
208
+
209
209
  this.#hydrationState = this.createHydratedState(anchorNode);
210
+ this.#hydrationState.offAnchorNode.add(() => anchors.forget(anchor));
210
211
 
211
212
  // If needed, register forwarding emitters for events from before hydration
212
213
  if (this.#unhydratedEvents.evaluated) {
@@ -224,7 +225,11 @@ export class TreeNodeKernel {
224
225
  }
225
226
 
226
227
  private createHydratedState(anchorNode: AnchorNode): HydratedState {
227
- anchorNode.slots.set(proxySlot, this.node);
228
+ assert(
229
+ !anchorNode.slots.has(simpleTreeNodeSlot),
230
+ 0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
231
+ );
232
+ anchorNode.slots.set(simpleTreeNodeSlot, this.node);
228
233
  return {
229
234
  anchorNode,
230
235
  offAnchorNode: new Set([
@@ -265,6 +270,7 @@ export class TreeNodeKernel {
265
270
  }
266
271
 
267
272
  public dispose(): void {
273
+ debugAssert(() => !this.disposed || "Cannot dispose a disposed node");
268
274
  this.disposed = true;
269
275
  if (isHydrated(this.#hydrationState)) {
270
276
  for (const off of this.#hydrationState.offAnchorNode) {
@@ -305,7 +311,7 @@ export class TreeNodeKernel {
305
311
  if (this.#hydrationState.innerNode === undefined) {
306
312
  // Marinated case -> cooked
307
313
  const anchorNode = this.#hydrationState.anchorNode;
308
- // The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
314
+ // This TreeNode is bound to an anchor node, but it may or may not have an actual flex node yet
309
315
  const flexNode = anchorNode.slots.get(flexTreeSlot);
310
316
  if (flexNode !== undefined) {
311
317
  // If the flex node already exists, use it...
@@ -318,8 +324,6 @@ export class TreeNodeKernel {
318
324
  context.checkout.forest.moveCursorToPath(anchorNode, cursor);
319
325
  this.#hydrationState.innerNode = makeTree(context, cursor);
320
326
  cursor.free();
321
- // Calling this is a performance improvement, however, do this only after demand to avoid momentarily having no anchors to anchorNode
322
- anchorForgetters?.get(this.node)?.();
323
327
  if (!allowDeleted) {
324
328
  assertFlexTreeEntityNotFreed(this.#hydrationState.innerNode);
325
329
  }
@@ -335,35 +339,6 @@ export class TreeNodeKernel {
335
339
  return this.#hydrationState.innerNode;
336
340
  }
337
341
 
338
- /**
339
- * Creates an anchor node and associates it with the given proxy.
340
- * @privateRemarks
341
- * Use `forgetters` to cleanup the anchor allocated by this function once the anchor is no longer needed.
342
- * In practice, this happens when either the anchor node is destroyed, or another anchor to the same node is created by a new flex node.
343
- *
344
- * The FlexTreeNode holds a reference to the same anchor, and has a lifetime at least as long as the simple-tree,
345
- * so this would be unnecessary except for the case of "marinated" nodes, which have an anchor,
346
- * but might not have a FlexTreeNode.
347
- * Handling this case is an optimization assuming that this extra anchor reference is cheaper than eagerly creating FlexTreeNodes.
348
- */
349
- public anchorProxy(anchors: AnchorSet, path: UpPath): AnchorNode {
350
- assert(!anchorForgetters.has(this.node), 0x91c /* Proxy anchor should not be set twice */);
351
- const anchor = anchors.track(path);
352
- const anchorNode =
353
- anchors.locate(anchor) ?? fail(0xb42 /* Expected anchor node to be present */);
354
- this.hydrate(anchorNode);
355
- const forget = (): void => {
356
- if (anchors.locate(anchor)) {
357
- anchors.forget(anchor);
358
- }
359
- anchorForgetters.delete(this.node);
360
- off();
361
- };
362
- anchorForgetters.set(this.node, forget);
363
- const off = anchorNode.events.on("afterDestroy", forget);
364
- return anchorNode;
365
- }
366
-
367
342
  /**
368
343
  * Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.
369
344
  * @remarks
@@ -383,11 +358,6 @@ export class TreeNodeKernel {
383
358
  }
384
359
  }
385
360
 
386
- /**
387
- * Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node
388
- */
389
- const anchorForgetters = new WeakMap<TreeNode, () => void>();
390
-
391
361
  const kernelEvents = ["childrenChangedAfterBatch", "subtreeChangedAfterBatch"] as const;
392
362
 
393
363
  type KernelEvents = Pick<AnchorEvents, (typeof kernelEvents)[number]>;
@@ -423,22 +393,22 @@ export const unhydratedFlexTreeNodeToTreeNode =
423
393
  >;
424
394
 
425
395
  /**
426
- * An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
396
+ * An anchor slot which associates an anchor with its corresponding {@link TreeNode}, if there is one.
427
397
  * @remarks
428
398
  * For this to work, we have to require that there is at most a single view using a given AnchorSet.
429
399
  * FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
430
400
  */
431
- export const proxySlot = anchorSlot<TreeNode>();
401
+ export const simpleTreeNodeSlot = anchorSlot<TreeNode>();
432
402
 
433
403
  /**
434
404
  * Dispose a TreeNode (if any) for an existing anchor without disposing the anchor.
435
405
  */
436
406
  export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
437
- const treeNode = anchorNode.slots.get(proxySlot);
407
+ const treeNode = anchorNode.slots.get(simpleTreeNodeSlot);
438
408
  if (treeNode !== undefined) {
439
409
  const kernel = getKernel(treeNode);
440
410
  kernel.dispose();
441
- anchorNode.slots.delete(proxySlot);
411
+ anchorNode.slots.delete(simpleTreeNodeSlot);
442
412
  }
443
413
  }
444
414
 
@@ -483,7 +453,6 @@ export function getOrCreateInnerNode(treeNode: TreeNode, allowDeleted = false):
483
453
  * Gets a flex node from an anchor node
484
454
  */
485
455
  function flexNodeFromAnchor(anchorNode: AnchorNode): FlexTreeNode {
486
- // the proxy is bound to an anchor node, but it may or may not have an actual flex node yet
487
456
  const flexNode = anchorNode.slots.get(flexTreeSlot);
488
457
  if (flexNode !== undefined) {
489
458
  return flexNode; // If it does have a flex node, return it...
@@ -501,7 +470,7 @@ function flexNodeFromAnchor(anchorNode: AnchorNode): FlexTreeNode {
501
470
  * Gets a tree node from an anchor node
502
471
  */
503
472
  export function treeNodeFromAnchor(anchorNode: AnchorNode): TreeNode | TreeValue {
504
- const cached = anchorNode.slots.get(proxySlot);
473
+ const cached = anchorNode.slots.get(simpleTreeNodeSlot);
505
474
  if (cached !== undefined) {
506
475
  return cached;
507
476
  }
@@ -69,7 +69,7 @@ interface LocationInField {
69
69
  * An unhydrated implementation of {@link FlexTreeNode} which wraps a {@link MapTree}.
70
70
  * @remarks
71
71
  * MapTreeNodes are unconditionally cached -
72
- * when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `UnhydratedFlexTreeNode` object.
72
+ * when retrieved via {@link getOrCreateNodeFromInnerNode}, the same {@link MapTree} object will always produce the same `UnhydratedFlexTreeNode` object.
73
73
  *
74
74
  * Create a `UnhydratedFlexTreeNode` by calling {@link getOrCreate}.
75
75
  */
@@ -112,9 +112,9 @@ export class UnhydratedFlexTreeNode implements FlexTreeNode {
112
112
  * Create a new UnhydratedFlexTreeNode.
113
113
  * @param location - the parentage of this node, if it is being created underneath an existing node and field, or undefined if not
114
114
  * @remarks This class (and its subclasses) should not be directly constructed outside of this module.
115
- * Instead, use {@link getOrCreateNode} to create a UnhydratedFlexTreeNode from a {@link MapTree}.
115
+ * Instead, use {@link getOrCreateNodeFromInnerNode} to create a UnhydratedFlexTreeNode from a {@link MapTree}.
116
116
  * A `UnhydratedFlexTreeNode` may never be constructed more than once for the same {@link MapTree} object.
117
- * Instead, it should always be acquired via {@link getOrCreateNode}.
117
+ * Instead, it should always be acquired via {@link getOrCreateNodeFromInnerNode}.
118
118
  */
119
119
  public constructor(
120
120
  public readonly simpleContext: Context,
@@ -548,7 +548,7 @@ function getFieldKeyCache(
548
548
 
549
549
  /**
550
550
  * If there exists a {@link UnhydratedFlexTreeNode} for the given {@link MapTree}, returns it, otherwise returns `undefined`.
551
- * @remarks {@link UnhydratedFlexTreeNode | UnhydratedFlexTreeNodes} are created via {@link getOrCreateNode}.
551
+ * @remarks {@link UnhydratedFlexTreeNode | UnhydratedFlexTreeNodes} are created via {@link getOrCreateNodeFromInnerNode}.
552
552
  */
553
553
  export function tryUnhydratedFlexTreeNode(
554
554
  mapTree: MapTree,
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { fail } from "@fluidframework/core-utils/internal";
7
+ import type { TreeValue } from "../core/index.js";
8
+ import {
9
+ FieldKinds,
10
+ type FlexTreeField,
11
+ isFlexTreeNode,
12
+ type FlexTreeRequiredField,
13
+ type FlexTreeOptionalField,
14
+ } from "../feature-libraries/index.js";
15
+ import { type TreeNode, getOrCreateNodeFromInnerNode } from "./core/index.js";
16
+
17
+ /**
18
+ * Retrieve the associated {@link TreeNode} for the given field's content.
19
+ */
20
+ export function getTreeNodeForField(field: FlexTreeField): TreeNode | TreeValue | undefined {
21
+ function tryToUnboxLeaves(
22
+ flexField: FlexTreeOptionalField | FlexTreeRequiredField,
23
+ ): TreeNode | TreeValue | undefined {
24
+ const maybeContent = flexField.content;
25
+ return isFlexTreeNode(maybeContent)
26
+ ? getOrCreateNodeFromInnerNode(maybeContent)
27
+ : maybeContent;
28
+ }
29
+ switch (field.schema) {
30
+ case FieldKinds.required.identifier: {
31
+ const typedField = field as FlexTreeRequiredField;
32
+ return tryToUnboxLeaves(typedField);
33
+ }
34
+ case FieldKinds.optional.identifier: {
35
+ const typedField = field as FlexTreeOptionalField;
36
+ return tryToUnboxLeaves(typedField);
37
+ }
38
+ case FieldKinds.identifier.identifier: {
39
+ // Identifier fields are just value fields that hold strings
40
+ return (field as FlexTreeRequiredField).content as string;
41
+ }
42
+
43
+ default:
44
+ fail(0xadf /* invalid field kind */);
45
+ }
46
+ }
@@ -79,7 +79,6 @@ export {
79
79
  extractPersistedSchema,
80
80
  comparePersistedSchema,
81
81
  type ConciseTree,
82
- comparePersistedSchemaInternal,
83
82
  SchemaCompatibilityTester,
84
83
  type Unenforced,
85
84
  type System_Unsafe,
@@ -89,6 +88,8 @@ export {
89
88
  type TreeBranch,
90
89
  type TreeBranchEvents,
91
90
  tryGetSchema,
91
+ getStoredKey,
92
+ getPropertyKeyFromStoredKey,
92
93
  applySchemaToParserOptions,
93
94
  cursorFromVerbose,
94
95
  verboseFromCursor,
@@ -123,6 +124,7 @@ export {
123
124
  type FixRecursiveRecursionLimit,
124
125
  schemaStatics,
125
126
  type TreeChangeEvents,
127
+ createFromMapTree,
126
128
  } from "./api/index.js";
127
129
  export type {
128
130
  SimpleTreeSchema,
@@ -184,10 +186,7 @@ export {
184
186
  type NodeSchemaMetadata,
185
187
  evaluateLazySchema,
186
188
  } from "./schemaTypes.js";
187
- export {
188
- getTreeNodeForField,
189
- prepareContentForHydration,
190
- } from "./proxies.js";
189
+ export { getTreeNodeForField } from "./getTreeNodeForField.js";
191
190
  export {
192
191
  TreeArrayNode,
193
192
  IterableTreeArrayContent,
@@ -220,6 +219,10 @@ export {
220
219
  type FactoryContent,
221
220
  type FactoryContentObject,
222
221
  } from "./toMapTree.js";
222
+ export {
223
+ prepareForInsertion,
224
+ prepareForInsertionContextless,
225
+ } from "./prepareForInsertion.js";
223
226
  export { toStoredSchema, getStoredSchema } from "./toStoredSchema.js";
224
227
  export {
225
228
  numberSchema,
@@ -4,13 +4,12 @@
4
4
  */
5
5
 
6
6
  import { Lazy } from "@fluidframework/core-utils/internal";
7
- import {
8
- type FlexTreeNode,
9
- type FlexTreeOptionalField,
10
- type OptionalFieldEditBuilder,
11
- getSchemaAndPolicy,
7
+ import type {
8
+ FlexTreeNode,
9
+ FlexTreeOptionalField,
10
+ OptionalFieldEditBuilder,
12
11
  } from "../feature-libraries/index.js";
13
- import { getTreeNodeForField, prepareContentForHydration } from "./proxies.js";
12
+ import { getTreeNodeForField } from "./getTreeNodeForField.js";
14
13
  import {
15
14
  createFieldSchema,
16
15
  FieldKind,
@@ -42,6 +41,7 @@ import {
42
41
  type FactoryContent,
43
42
  type InsertableContent,
44
43
  } from "./toMapTree.js";
44
+ import { prepareForInsertion } from "./prepareForInsertion.js";
45
45
  import { brand, count, type RestrictiveStringRecord } from "../util/index.js";
46
46
  import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
47
47
  import type { ExclusiveMapTree } from "../core/index.js";
@@ -191,17 +191,13 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
191
191
  public set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T>): this {
192
192
  const kernel = getKernel(this);
193
193
  const node = this.innerNode;
194
- const mapTree = mapTreeFromNodeData(
194
+ const mapTree = prepareForInsertion(
195
195
  value as InsertableContent | undefined,
196
196
  createFieldSchema(FieldKind.Optional, kernel.schema.info as ImplicitAllowedTypes),
197
- node.context.isHydrated() ? node.context.nodeKeyManager : undefined,
198
- getSchemaAndPolicy(node),
197
+ node.context,
199
198
  );
200
199
 
201
200
  const field = node.getBoxed(brand(key));
202
- if (node.context.isHydrated()) {
203
- prepareContentForHydration(mapTree, node.context.checkout.forest);
204
- }
205
201
 
206
202
  this.editor(key).set(mapTree, field.length === 0);
207
203
  return this;
@@ -13,9 +13,8 @@ import {
13
13
  type FlexTreeNode,
14
14
  type FlexTreeOptionalField,
15
15
  type FlexTreeRequiredField,
16
- getSchemaAndPolicy,
17
16
  } from "../feature-libraries/index.js";
18
- import { getTreeNodeForField, prepareContentForHydration } from "./proxies.js";
17
+ import { getTreeNodeForField } from "./getTreeNodeForField.js";
19
18
  import {
20
19
  type ImplicitFieldSchema,
21
20
  getStoredKey,
@@ -47,6 +46,7 @@ import {
47
46
  getOrCreateInnerNode,
48
47
  } from "./core/index.js";
49
48
  import { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
49
+ import { prepareForInsertion } from "./prepareForInsertion.js";
50
50
  import type { RestrictiveStringRecord, FlattenKeys } from "../util/index.js";
51
51
  import {
52
52
  isObjectNodeSchema,
@@ -328,16 +328,7 @@ export function setField(
328
328
  simpleFieldSchema: FieldSchema,
329
329
  value: InsertableContent | undefined,
330
330
  ): void {
331
- const mapTree = mapTreeFromNodeData(
332
- value,
333
- simpleFieldSchema,
334
- field.context.isHydrated() ? field.context.nodeKeyManager : undefined,
335
- getSchemaAndPolicy(field),
336
- );
337
-
338
- if (field.context.isHydrated()) {
339
- prepareContentForHydration(mapTree, field.context.checkout.forest);
340
- }
331
+ const mapTree = prepareForInsertion(value, simpleFieldSchema, field.context);
341
332
 
342
333
  switch (field.schema) {
343
334
  case FieldKinds.required.identifier: {