@fluidframework/tree 2.70.0-361092 → 2.70.0-361788

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 (360) hide show
  1. package/api-report/tree.alpha.api.md +36 -17
  2. package/api-report/tree.beta.api.md +70 -2
  3. package/api-report/tree.legacy.beta.api.md +70 -2
  4. package/dist/alpha.d.ts +15 -11
  5. package/dist/api.d.ts +6 -1
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +9 -1
  8. package/dist/api.js.map +1 -1
  9. package/dist/beta.d.ts +13 -0
  10. package/dist/codec/codec.d.ts +3 -3
  11. package/dist/codec/codec.js.map +1 -1
  12. package/dist/core/forest/forest.d.ts +3 -4
  13. package/dist/core/forest/forest.d.ts.map +1 -1
  14. package/dist/core/forest/forest.js.map +1 -1
  15. package/dist/core/rebase/changeRebaser.d.ts +1 -1
  16. package/dist/core/rebase/changeRebaser.js.map +1 -1
  17. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  18. package/dist/core/tree/detachedFieldIndex.js +4 -1
  19. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  20. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +6 -0
  21. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  22. package/dist/feature-libraries/chunked-forest/chunkTree.js +11 -2
  23. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  24. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  25. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  26. package/dist/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  27. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  28. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +21 -20
  29. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +17 -43
  31. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  32. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  33. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  35. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  36. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  37. package/dist/feature-libraries/flex-tree/lazyField.js +2 -1
  38. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  39. package/dist/feature-libraries/flex-tree/utilities.d.ts +1 -1
  40. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  41. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  42. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  43. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  44. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +42 -47
  45. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  46. package/dist/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
  47. package/dist/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
  48. package/dist/feature-libraries/index.d.ts +1 -1
  49. package/dist/feature-libraries/index.d.ts.map +1 -1
  50. package/dist/feature-libraries/index.js +2 -1
  51. package/dist/feature-libraries/index.js.map +1 -1
  52. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
  53. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  54. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  55. package/dist/feature-libraries/object-forest/objectForest.d.ts +1 -1
  56. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  57. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  58. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  59. package/dist/feature-libraries/sequence-field/formatV1.d.ts +1 -1
  60. package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
  61. package/dist/feature-libraries/sequence-field/formatV2.d.ts +1 -1
  62. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  63. package/dist/feature-libraries/sequence-field/formatV3.d.ts +1 -1
  64. package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
  65. package/dist/index.d.ts +2 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +4 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/legacy.d.ts +13 -0
  70. package/dist/packageVersion.d.ts +1 -1
  71. package/dist/packageVersion.js +1 -1
  72. package/dist/packageVersion.js.map +1 -1
  73. package/dist/shared-tree/independentView.d.ts.map +1 -1
  74. package/dist/shared-tree/independentView.js +2 -1
  75. package/dist/shared-tree/independentView.js.map +1 -1
  76. package/dist/shared-tree/schematizingTreeView.d.ts +4 -3
  77. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  78. package/dist/shared-tree/schematizingTreeView.js +1 -1
  79. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  80. package/dist/shared-tree/sharedTree.d.ts +1 -1
  81. package/dist/shared-tree/sharedTree.js +1 -1
  82. package/dist/shared-tree/sharedTree.js.map +1 -1
  83. package/dist/shared-tree/treeAlpha.d.ts +28 -2
  84. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  85. package/dist/shared-tree/treeAlpha.js +12 -0
  86. package/dist/shared-tree/treeAlpha.js.map +1 -1
  87. package/dist/shared-tree/treeCheckout.d.ts +1 -1
  88. package/dist/shared-tree/treeCheckout.js +1 -1
  89. package/dist/shared-tree/treeCheckout.js.map +1 -1
  90. package/dist/shared-tree-core/sharedTreeCore.js +1 -1
  91. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  92. package/dist/shared-tree-core/transaction.d.ts +2 -2
  93. package/dist/shared-tree-core/transaction.js.map +1 -1
  94. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +47 -0
  95. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -0
  96. package/dist/simple-tree/api/incrementalAllowedTypes.js +90 -0
  97. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -0
  98. package/dist/simple-tree/api/index.d.ts +2 -1
  99. package/dist/simple-tree/api/index.d.ts.map +1 -1
  100. package/dist/simple-tree/api/index.js +4 -1
  101. package/dist/simple-tree/api/index.js.map +1 -1
  102. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +2 -2
  103. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  104. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  105. package/dist/simple-tree/api/tree.d.ts +51 -37
  106. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  107. package/dist/simple-tree/api/tree.js.map +1 -1
  108. package/dist/simple-tree/core/allowedTypes.d.ts +10 -11
  109. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  110. package/dist/simple-tree/core/allowedTypes.js +1 -1
  111. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  112. package/dist/simple-tree/core/index.d.ts +1 -1
  113. package/dist/simple-tree/core/index.d.ts.map +1 -1
  114. package/dist/simple-tree/core/index.js +2 -1
  115. package/dist/simple-tree/core/index.js.map +1 -1
  116. package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -8
  117. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  118. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  119. package/dist/simple-tree/core/treeNodeValid.d.ts +2 -2
  120. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  121. package/dist/simple-tree/core/treeNodeValid.js +2 -2
  122. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  123. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  124. package/dist/simple-tree/core/walkSchema.js +1 -1
  125. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  126. package/dist/simple-tree/core/withType.d.ts +20 -0
  127. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  128. package/dist/simple-tree/core/withType.js +21 -1
  129. package/dist/simple-tree/core/withType.js.map +1 -1
  130. package/dist/simple-tree/createContext.d.ts.map +1 -1
  131. package/dist/simple-tree/createContext.js +1 -1
  132. package/dist/simple-tree/createContext.js.map +1 -1
  133. package/dist/simple-tree/index.d.ts +2 -2
  134. package/dist/simple-tree/index.d.ts.map +1 -1
  135. package/dist/simple-tree/index.js +5 -2
  136. package/dist/simple-tree/index.js.map +1 -1
  137. package/dist/simple-tree/leafNodeSchema.js +1 -1
  138. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  139. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  140. package/dist/simple-tree/node-kinds/array/arrayNode.js +1 -1
  141. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  142. package/dist/simple-tree/node-kinds/map/mapNode.js +1 -1
  143. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  144. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  145. package/dist/simple-tree/node-kinds/object/objectNode.js +1 -1
  146. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  147. package/dist/simple-tree/node-kinds/record/recordNode.js +1 -1
  148. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  149. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -0
  150. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  151. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +12 -0
  152. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  153. package/dist/util/nestedMap.d.ts +1 -1
  154. package/dist/util/nestedMap.js +1 -1
  155. package/dist/util/nestedMap.js.map +1 -1
  156. package/dist/util/referenceCounting.d.ts +1 -1
  157. package/dist/util/referenceCounting.js.map +1 -1
  158. package/lib/alpha.d.ts +15 -11
  159. package/lib/api.d.ts +6 -1
  160. package/lib/api.d.ts.map +1 -1
  161. package/lib/api.js +7 -0
  162. package/lib/api.js.map +1 -1
  163. package/lib/beta.d.ts +13 -0
  164. package/lib/codec/codec.d.ts +3 -3
  165. package/lib/codec/codec.js.map +1 -1
  166. package/lib/core/forest/forest.d.ts +3 -4
  167. package/lib/core/forest/forest.d.ts.map +1 -1
  168. package/lib/core/forest/forest.js.map +1 -1
  169. package/lib/core/rebase/changeRebaser.d.ts +1 -1
  170. package/lib/core/rebase/changeRebaser.js.map +1 -1
  171. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  172. package/lib/core/tree/detachedFieldIndex.js +4 -1
  173. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  174. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +6 -0
  175. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  176. package/lib/feature-libraries/chunked-forest/chunkTree.js +8 -0
  177. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  178. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  179. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  180. package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -2
  181. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  182. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +21 -20
  183. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  184. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +17 -43
  185. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  186. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  187. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  188. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  189. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  190. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  191. package/lib/feature-libraries/flex-tree/lazyField.js +2 -1
  192. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  193. package/lib/feature-libraries/flex-tree/utilities.d.ts +1 -1
  194. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  195. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  196. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  197. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  198. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +42 -47
  199. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  200. package/lib/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
  201. package/lib/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
  202. package/lib/feature-libraries/index.d.ts +1 -1
  203. package/lib/feature-libraries/index.d.ts.map +1 -1
  204. package/lib/feature-libraries/index.js +1 -1
  205. package/lib/feature-libraries/index.js.map +1 -1
  206. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
  207. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  208. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  209. package/lib/feature-libraries/object-forest/objectForest.d.ts +1 -1
  210. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  211. package/lib/feature-libraries/object-forest/objectForest.js +2 -2
  212. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  213. package/lib/feature-libraries/sequence-field/formatV1.d.ts +1 -1
  214. package/lib/feature-libraries/sequence-field/formatV1.js.map +1 -1
  215. package/lib/feature-libraries/sequence-field/formatV2.d.ts +1 -1
  216. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  217. package/lib/feature-libraries/sequence-field/formatV3.d.ts +1 -1
  218. package/lib/feature-libraries/sequence-field/formatV3.js.map +1 -1
  219. package/lib/index.d.ts +2 -2
  220. package/lib/index.d.ts.map +1 -1
  221. package/lib/index.js +2 -2
  222. package/lib/index.js.map +1 -1
  223. package/lib/legacy.d.ts +13 -0
  224. package/lib/packageVersion.d.ts +1 -1
  225. package/lib/packageVersion.js +1 -1
  226. package/lib/packageVersion.js.map +1 -1
  227. package/lib/shared-tree/independentView.d.ts.map +1 -1
  228. package/lib/shared-tree/independentView.js +2 -1
  229. package/lib/shared-tree/independentView.js.map +1 -1
  230. package/lib/shared-tree/schematizingTreeView.d.ts +4 -3
  231. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  232. package/lib/shared-tree/schematizingTreeView.js +2 -2
  233. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  234. package/lib/shared-tree/sharedTree.d.ts +1 -1
  235. package/lib/shared-tree/sharedTree.js +1 -1
  236. package/lib/shared-tree/sharedTree.js.map +1 -1
  237. package/lib/shared-tree/treeAlpha.d.ts +28 -2
  238. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  239. package/lib/shared-tree/treeAlpha.js +13 -1
  240. package/lib/shared-tree/treeAlpha.js.map +1 -1
  241. package/lib/shared-tree/treeCheckout.d.ts +1 -1
  242. package/lib/shared-tree/treeCheckout.js +1 -1
  243. package/lib/shared-tree/treeCheckout.js.map +1 -1
  244. package/lib/shared-tree-core/sharedTreeCore.js +1 -1
  245. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  246. package/lib/shared-tree-core/transaction.d.ts +2 -2
  247. package/lib/shared-tree-core/transaction.js.map +1 -1
  248. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +47 -0
  249. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -0
  250. package/lib/simple-tree/api/incrementalAllowedTypes.js +86 -0
  251. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -0
  252. package/lib/simple-tree/api/index.d.ts +2 -1
  253. package/lib/simple-tree/api/index.d.ts.map +1 -1
  254. package/lib/simple-tree/api/index.js +1 -0
  255. package/lib/simple-tree/api/index.js.map +1 -1
  256. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +2 -2
  257. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  258. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  259. package/lib/simple-tree/api/tree.d.ts +51 -37
  260. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  261. package/lib/simple-tree/api/tree.js.map +1 -1
  262. package/lib/simple-tree/core/allowedTypes.d.ts +10 -11
  263. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  264. package/lib/simple-tree/core/allowedTypes.js +1 -1
  265. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  266. package/lib/simple-tree/core/index.d.ts +1 -1
  267. package/lib/simple-tree/core/index.d.ts.map +1 -1
  268. package/lib/simple-tree/core/index.js +1 -1
  269. package/lib/simple-tree/core/index.js.map +1 -1
  270. package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -8
  271. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  272. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  273. package/lib/simple-tree/core/treeNodeValid.d.ts +2 -2
  274. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  275. package/lib/simple-tree/core/treeNodeValid.js +2 -2
  276. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  277. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  278. package/lib/simple-tree/core/walkSchema.js +1 -1
  279. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  280. package/lib/simple-tree/core/withType.d.ts +20 -0
  281. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  282. package/lib/simple-tree/core/withType.js +20 -0
  283. package/lib/simple-tree/core/withType.js.map +1 -1
  284. package/lib/simple-tree/createContext.d.ts.map +1 -1
  285. package/lib/simple-tree/createContext.js +2 -2
  286. package/lib/simple-tree/createContext.js.map +1 -1
  287. package/lib/simple-tree/index.d.ts +2 -2
  288. package/lib/simple-tree/index.d.ts.map +1 -1
  289. package/lib/simple-tree/index.js +2 -2
  290. package/lib/simple-tree/index.js.map +1 -1
  291. package/lib/simple-tree/leafNodeSchema.js +1 -1
  292. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  293. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  294. package/lib/simple-tree/node-kinds/array/arrayNode.js +1 -1
  295. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  296. package/lib/simple-tree/node-kinds/map/mapNode.js +1 -1
  297. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  298. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  299. package/lib/simple-tree/node-kinds/object/objectNode.js +1 -1
  300. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  301. package/lib/simple-tree/node-kinds/record/recordNode.js +1 -1
  302. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  303. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -0
  304. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  305. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +13 -1
  306. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  307. package/lib/util/nestedMap.d.ts +1 -1
  308. package/lib/util/nestedMap.js +1 -1
  309. package/lib/util/nestedMap.js.map +1 -1
  310. package/lib/util/referenceCounting.d.ts +1 -1
  311. package/lib/util/referenceCounting.js.map +1 -1
  312. package/package.json +21 -21
  313. package/src/api.ts +11 -0
  314. package/src/codec/codec.ts +3 -3
  315. package/src/core/forest/forest.ts +3 -4
  316. package/src/core/rebase/changeRebaser.ts +1 -1
  317. package/src/core/tree/detachedFieldIndex.ts +4 -1
  318. package/src/feature-libraries/chunked-forest/chunkTree.ts +9 -0
  319. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  320. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +20 -58
  321. package/src/feature-libraries/chunked-forest/index.ts +1 -0
  322. package/src/feature-libraries/flex-tree/lazyField.ts +3 -1
  323. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  324. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +64 -70
  325. package/src/feature-libraries/incrementalSummarizationUtils.ts +1 -1
  326. package/src/feature-libraries/index.ts +1 -0
  327. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
  328. package/src/feature-libraries/object-forest/objectForest.ts +3 -3
  329. package/src/feature-libraries/sequence-field/formatV1.ts +1 -1
  330. package/src/feature-libraries/sequence-field/formatV2.ts +1 -1
  331. package/src/feature-libraries/sequence-field/formatV3.ts +1 -1
  332. package/src/index.ts +4 -1
  333. package/src/packageVersion.ts +1 -1
  334. package/src/shared-tree/independentView.ts +4 -1
  335. package/src/shared-tree/schematizingTreeView.ts +10 -5
  336. package/src/shared-tree/sharedTree.ts +1 -1
  337. package/src/shared-tree/treeAlpha.ts +50 -2
  338. package/src/shared-tree/treeCheckout.ts +1 -1
  339. package/src/shared-tree-core/sharedTreeCore.ts +1 -1
  340. package/src/shared-tree-core/transaction.ts +2 -2
  341. package/src/simple-tree/api/incrementalAllowedTypes.ts +107 -0
  342. package/src/simple-tree/api/index.ts +6 -0
  343. package/src/simple-tree/api/schemaFactoryBeta.ts +6 -2
  344. package/src/simple-tree/api/tree.ts +64 -44
  345. package/src/simple-tree/core/allowedTypes.ts +10 -11
  346. package/src/simple-tree/core/index.ts +6 -1
  347. package/src/simple-tree/core/treeNodeSchema.ts +3 -8
  348. package/src/simple-tree/core/treeNodeValid.ts +3 -3
  349. package/src/simple-tree/core/walkSchema.ts +1 -2
  350. package/src/simple-tree/core/withType.ts +24 -0
  351. package/src/simple-tree/createContext.ts +1 -4
  352. package/src/simple-tree/index.ts +5 -0
  353. package/src/simple-tree/leafNodeSchema.ts +1 -1
  354. package/src/simple-tree/node-kinds/array/arrayNode.ts +5 -2
  355. package/src/simple-tree/node-kinds/map/mapNode.ts +1 -1
  356. package/src/simple-tree/node-kinds/object/objectNode.ts +1 -4
  357. package/src/simple-tree/node-kinds/record/recordNode.ts +1 -1
  358. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +13 -0
  359. package/src/util/nestedMap.ts +1 -1
  360. package/src/util/referenceCounting.ts +1 -1
@@ -60,7 +60,7 @@ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
60
60
  * @privateRemarks
61
61
  * Since this is sealed, users are not supposed to create instances of it directly.
62
62
  * Making it extend ErasedType could enforce that.
63
- * @alpha
63
+ * @beta
64
64
  * @sealed
65
65
  */
66
66
  export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
@@ -77,7 +77,7 @@ export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
77
77
  /**
78
78
  * {@link AllowedTypesFull} but with the lazy schema references eagerly evaluated.
79
79
  * @sealed
80
- * @alpha
80
+ * @beta
81
81
  */
82
82
  export type AllowedTypesFullEvaluated = AllowedTypesFull<
83
83
  readonly AnnotatedAllowedType<TreeNodeSchema>[]
@@ -95,7 +95,7 @@ export function isAnnotatedAllowedTypes(
95
95
 
96
96
  /**
97
97
  * Stores annotations for a set of allowed types.
98
- * @alpha
98
+ * @beta
99
99
  * @sealed
100
100
  */
101
101
  export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]>
@@ -139,7 +139,7 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]>
139
139
  * Stores annotations for a set of allowed types.
140
140
  * @remarks
141
141
  * Most expressive form of AllowedTypes which any of the implicit types can be normalized to.
142
- * @alpha
142
+ * @beta
143
143
  * @sealed
144
144
  */
145
145
  export type AllowedTypesFull<
@@ -148,8 +148,7 @@ export type AllowedTypesFull<
148
148
 
149
149
  /**
150
150
  * Creates an {@link AllowedTypesFull} type from a mixed array of annotated and unannotated allowed types.
151
- * @alpha
152
- * @sealed
151
+ * @system @sealed @beta
153
152
  */
154
153
  export type AllowedTypesFullFromMixed<
155
154
  T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
@@ -360,7 +359,7 @@ export class AnnotatedAllowedTypesInternal<
360
359
  * Annotations that apply to a set of allowed types.
361
360
  * @remarks
362
361
  * Additional optionals may be added to this as non-breaking changes, so implementations of it should be simple object literals with no unlisted members.
363
- * @alpha
362
+ * @beta
364
363
  * @input
365
364
  */
366
365
  export interface AllowedTypesMetadata {
@@ -385,7 +384,7 @@ export function isAnnotatedAllowedType(
385
384
  * Annotations that apply to an individual allowed type.
386
385
  * @remarks
387
386
  * Additional optionals may be added to this as non-breaking changes, so implementations of it should be simple object literals with no unlisted members.
388
- * @alpha
387
+ * @beta
389
388
  * @input
390
389
  */
391
390
  export interface AllowedTypeMetadata {
@@ -413,7 +412,7 @@ export let createSchemaUpgrade: () => SchemaUpgrade;
413
412
  * TODO:#38722 implement runtime schema upgrades.
414
413
  * Until then, the class purely behaves mostly as a placeholder.
415
414
  * TODO: Consider allowing users to store a name for the upgrade to use in error messages.
416
- * @sealed @alpha
415
+ * @sealed @beta
417
416
  */
418
417
  export class SchemaUpgrade {
419
418
  protected _typeCheck!: MakeNominal;
@@ -461,7 +460,7 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
461
460
 
462
461
  /**
463
462
  * Removes annotations from a list of allowed types that may contain annotations.
464
- * @system @alpha
463
+ * @system @beta
465
464
  */
466
465
  export type UnannotateAllowedTypesList<
467
466
  T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
@@ -471,7 +470,7 @@ export type UnannotateAllowedTypesList<
471
470
 
472
471
  /**
473
472
  * Add annotations to a list of allowed types that may or may not contain annotations.
474
- * @system @alpha
473
+ * @system @beta
475
474
  */
476
475
  export type AnnotateAllowedTypesList<
477
476
  T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
@@ -16,7 +16,12 @@ export {
16
16
  SimpleContextSlot,
17
17
  withBufferedTreeEvents,
18
18
  } from "./treeNodeKernel.js";
19
- export { type WithType, typeNameSymbol, typeSchemaSymbol } from "./withType.js";
19
+ export {
20
+ type WithType,
21
+ typeNameSymbol,
22
+ typeSchemaSymbol,
23
+ contentSchemaSymbol,
24
+ } from "./withType.js";
20
25
  export {
21
26
  type Unhydrated,
22
27
  type InternalTreeNode,
@@ -10,7 +10,7 @@ import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
10
10
  import type { TreeNode } from "./treeNode.js";
11
11
  import type { InternalTreeNode, Unhydrated } from "./types.js";
12
12
  import type { UnionToIntersection } from "../../util/index.js";
13
- import type { ImplicitAllowedTypes, AllowedTypesFullEvaluated } from "./allowedTypes.js";
13
+ import type { AllowedTypesFullEvaluated, AllowedTypesFull } from "./allowedTypes.js";
14
14
  import type { Context } from "./context.js";
15
15
  import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
16
16
  import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
@@ -379,16 +379,11 @@ export interface TreeNodeSchemaPrivateData {
379
379
  * In this case "field" includes anything that is a field in the internal (flex-tree) abstraction layer.
380
380
  * This includes the content field for arrays, and all the fields for map nodes.
381
381
  * If this node does not have fields (and thus is a leaf), the array will be empty.
382
- *
383
- * This set cannot be used before the schema in it have been defined:
384
- * more specifically, when using lazy schema references (for example to make foreword references to schema which have not yet been defined),
385
- * users must wait until after the schema are defined to access this array.
386
- *
387
382
  * @privateRemarks
388
383
  * If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
389
384
  * @system
390
385
  */
391
- readonly childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[];
386
+ readonly childAllowedTypes: readonly AllowedTypesFull[];
392
387
 
393
388
  /**
394
389
  * Idempotent initialization function that pre-caches data and can dereference lazy schema references.
@@ -422,7 +417,7 @@ export interface TreeNodeSchemaInitializedData {
422
417
  * If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
423
418
  * @system
424
419
  */
425
- readonly childAnnotatedAllowedTypes: readonly AllowedTypesFullEvaluated[];
420
+ readonly childAllowedTypes: readonly AllowedTypesFullEvaluated[];
426
421
 
427
422
  /**
428
423
  * A {@link Context} which can be used for unhydrated nodes of this schema.
@@ -25,7 +25,7 @@ import {
25
25
  } from "./treeNodeKernel.js";
26
26
  import type { InternalTreeNode } from "./types.js";
27
27
  import { typeSchemaSymbol } from "./withType.js";
28
- import type { ImplicitAllowedTypes } from "./allowedTypes.js";
28
+ import type { AllowedTypesFull } from "./allowedTypes.js";
29
29
  import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
30
30
 
31
31
  /**
@@ -259,7 +259,7 @@ export function isClassBasedSchema(
259
259
  */
260
260
  export function createTreeNodeSchemaPrivateData(
261
261
  schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
262
- childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[],
262
+ childAllowedTypes: readonly AllowedTypesFull[],
263
263
  toStored: TreeNodeSchemaPrivateData["toStored"],
264
264
  ): TreeNodeSchemaPrivateData {
265
265
  const schemaValid = schemaAsTreeNodeValid(schema);
@@ -269,7 +269,7 @@ export function createTreeNodeSchemaPrivateData(
269
269
 
270
270
  return {
271
271
  idempotentInitialize: () => schemaValid.oneTimeInitialize().oneTimeInitialized,
272
- childAnnotatedAllowedTypes,
272
+ childAllowedTypes,
273
273
  toStored,
274
274
  };
275
275
  }
@@ -28,8 +28,7 @@ export function walkNodeSchema(
28
28
  // Since walkNodeSchema is used in the implementation of TreeNodeSchemaPrivateData.idempotentInitialize,
29
29
  // Avoid depending on it here to avoid circular dependencies for recursive schema.
30
30
  // Instead normalize/evaluate the allowed types as needed.
31
- const annotatedAllowedTypes =
32
- getTreeNodeSchemaPrivateData(schema).childAnnotatedAllowedTypes;
31
+ const annotatedAllowedTypes = getTreeNodeSchemaPrivateData(schema).childAllowedTypes;
33
32
 
34
33
  for (const fieldAllowedTypes of annotatedAllowedTypes) {
35
34
  walkAllowedTypes(
@@ -5,6 +5,9 @@
5
5
 
6
6
  import type { TreeNode } from "./treeNode.js";
7
7
  import type { NodeKind, TreeNodeSchemaClass } from "./treeNodeSchema.js";
8
+ // Used by doc links:
9
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-imports
10
+ import type { TreeAlpha } from "../../shared-tree/index.js";
8
11
 
9
12
  /**
10
13
  * The type of a {@link TreeNode}.
@@ -39,6 +42,27 @@ export const typeNameSymbol: unique symbol = Symbol("TreeNode Type");
39
42
  */
40
43
  export const typeSchemaSymbol: unique symbol = Symbol("TreeNode Schema");
41
44
 
45
+ /**
46
+ * The intended type of insertable content that is to become a {@link TreeNode}.
47
+ * @remarks Use the type-safe {@link (TreeAlpha:interface).tagContentSchema} function to tag insertable content with this symbol.
48
+ *
49
+ * If a property with this symbol key is present on an object that is inserted into the tree,
50
+ * the tree will use the schema identifier specified by the value of this property when creating the node.
51
+ * This is particularly useful for specifying the intended schema of untyped content when it would otherwise be ambiguous.
52
+ * @example
53
+ * ```typescript
54
+ * const sf = new SchemaFactory("example");
55
+ * class Dog extends sf.object("Dog", { name: sf.string() }) {}
56
+ * class Cat extends sf.object("Cat", { name: sf.string() }) {}
57
+ * class Root extends sf.object("Root", { pet: [Dog, Cat] }) {}
58
+ * // ...
59
+ * view.root.pet = { name: "Max" }; // Error: ambiguous schema - is it a Dog or a Cat?
60
+ * view.root.pet = { name: "Max", [contentSchemaSymbol]: "example.Dog" }; // No error - it's a Dog.
61
+ * ```
62
+ * @alpha
63
+ */
64
+ export const contentSchemaSymbol: unique symbol = Symbol("SharedTree Schema");
65
+
42
66
  /**
43
67
  * Adds a type symbol to a type for stronger typing.
44
68
  *
@@ -9,7 +9,6 @@ import { getOrCreate } from "../util/index.js";
9
9
  import {
10
10
  Context,
11
11
  getTreeNodeSchemaPrivateData,
12
- normalizeAndEvaluateAnnotatedAllowedTypes,
13
12
  UnhydratedContext,
14
13
  type TreeNodeSchema,
15
14
  type TreeNodeSchemaInitializedData,
@@ -50,8 +49,6 @@ export function getTreeNodeSchemaInitializedData(
50
49
  return {
51
50
  ...handler,
52
51
  context: getUnhydratedContext(schema),
53
- childAnnotatedAllowedTypes: data.childAnnotatedAllowedTypes.map(
54
- normalizeAndEvaluateAnnotatedAllowedTypes,
55
- ),
52
+ childAllowedTypes: data.childAllowedTypes.map((t) => t.evaluate()),
56
53
  };
57
54
  }
@@ -6,6 +6,7 @@
6
6
  export {
7
7
  typeNameSymbol,
8
8
  typeSchemaSymbol,
9
+ contentSchemaSymbol,
9
10
  type WithType,
10
11
  type TreeNodeSchema,
11
12
  type AnnotatedAllowedType,
@@ -135,7 +136,9 @@ export {
135
136
  type UnannotateAllowedTypesListUnsafe,
136
137
  type AnnotateAllowedTypesListUnsafe,
137
138
  type TreeViewAlpha,
139
+ type TreeViewBeta,
138
140
  type TreeBranch,
141
+ type TreeBranchAlpha,
139
142
  type TreeBranchEvents,
140
143
  getPropertyKeyFromStoredKey,
141
144
  getStoredKey,
@@ -180,6 +183,8 @@ export {
180
183
  type SchemaStaticsAlpha,
181
184
  KeyEncodingOptions,
182
185
  type TreeParsingOptions,
186
+ incrementalSummaryHint,
187
+ getShouldIncrementallySummarizeAllowedTypes,
183
188
  type SchemaFactory_base,
184
189
  } from "./api/index.js";
185
190
  export type {
@@ -63,7 +63,7 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
63
63
  allowedTypes: ReadonlySet<TreeNodeSchema>,
64
64
  ): FlexContent => leafToFlexContent(data, this, allowedTypes),
65
65
  })),
66
- childAnnotatedAllowedTypes: [],
66
+ childAllowedTypes: [],
67
67
  toStored: () => new LeafNodeStoredSchema(this.leafKind),
68
68
  };
69
69
  #initializedData: TreeNodeSchemaInitializedData | undefined;
@@ -1273,8 +1273,11 @@ export function arraySchema<
1273
1273
  }
1274
1274
 
1275
1275
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
1276
- return (privateData ??= createTreeNodeSchemaPrivateData(this, [info], (storedOptions) =>
1277
- arrayNodeStoredSchema(convertAllowedTypes(info, storedOptions), persistedMetadata),
1276
+ return (privateData ??= createTreeNodeSchemaPrivateData(
1277
+ this,
1278
+ [normalizedTypes],
1279
+ (storedOptions) =>
1280
+ arrayNodeStoredSchema(convertAllowedTypes(info, storedOptions), persistedMetadata),
1278
1281
  ));
1279
1282
  }
1280
1283
  }
@@ -336,7 +336,7 @@ export function mapSchema<
336
336
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
337
337
  return (privateData ??= createTreeNodeSchemaPrivateData(
338
338
  this,
339
- [info],
339
+ [normalizedTypes],
340
340
  (storedOptions) =>
341
341
  new MapNodeStoredSchema(
342
342
  {
@@ -577,10 +577,7 @@ export function objectSchema<
577
577
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
578
578
  return (privateData ??= createTreeNodeSchemaPrivateData(
579
579
  this,
580
- Array.from(
581
- flexKeyMap.values(),
582
- ({ schema }) => normalizeFieldSchema(schema).allowedTypes,
583
- ),
580
+ Array.from(CustomObjectNode.fields.values(), (schema) => schema.allowedTypesFull),
584
581
  (storedOptions) => {
585
582
  const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
586
583
  for (const fieldSchema of flexKeyMap.values()) {
@@ -381,7 +381,7 @@ export function recordSchema<
381
381
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
382
382
  return (privateData ??= createTreeNodeSchemaPrivateData(
383
383
  this,
384
- [info],
384
+ [normalizedTypes],
385
385
  (storedOptions) =>
386
386
  new MapNodeStoredSchema(
387
387
  {
@@ -17,6 +17,7 @@ import {
17
17
  isTreeNode,
18
18
  type TreeNode,
19
19
  type TreeNodeSchema,
20
+ contentSchemaSymbol,
20
21
  type Unhydrated,
21
22
  UnhydratedFlexTreeNode,
22
23
  } from "./core/index.js";
@@ -125,16 +126,28 @@ For class-based schema, this can be done by replacing an expression like "{foo:
125
126
 
126
127
  /**
127
128
  * Returns all types for which the data is schema-compatible.
129
+ * @remarks This will respect the {@link contentSchemaSymbol} property on data to disambiguate types - if present, only that type will be returned.
128
130
  */
129
131
  export function getPossibleTypes(
130
132
  allowedTypes: ReadonlySet<TreeNodeSchema>,
131
133
  data: FactoryContent,
132
134
  ): TreeNodeSchema[] {
133
135
  assert(data !== undefined, 0x889 /* undefined cannot be used as FactoryContent. */);
136
+ const type =
137
+ typeof data === "object" && data !== null
138
+ ? (data as Partial<{ [contentSchemaSymbol]: string }>)[contentSchemaSymbol]
139
+ : undefined;
134
140
 
135
141
  let best = CompatibilityLevel.None;
136
142
  const possibleTypes: TreeNodeSchema[] = [];
137
143
  for (const schema of allowedTypes) {
144
+ if (type !== undefined) {
145
+ if (schema.identifier === type) {
146
+ return [schema];
147
+ } else {
148
+ continue;
149
+ }
150
+ }
138
151
  const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
139
152
  const level = handler.shallowCompatibilityTest(data);
140
153
  if (level > best) {
@@ -49,7 +49,7 @@ export function tryAddToNestedMap<Key1, Key2, Value>(
49
49
  * @param destination - The map to copy data into. Both the outer and inner map may be mutated.
50
50
  * @param override - Whether existing entries in `destination` should be replaced by corresponding entries in `source`.
51
51
  *
52
- * @remarks - This function performs deep copying when necessary.
52
+ * @remarks This function performs deep copying when necessary.
53
53
  * This ensures that mutating `destination` after this call will not result in unexpected mutations to `source`.
54
54
  */
55
55
  export function populateNestedMap<Key1, Key2, Value>(
@@ -8,7 +8,7 @@ import { assert } from "@fluidframework/core-utils/internal";
8
8
  /**
9
9
  * An object which counts the number of users / references to it.
10
10
  * @remarks
11
- * This implements the [Reference counting](https://en.wikipedia.org/wiki/Reference_counting) pattern.
11
+ * This implements the {@link https://en.wikipedia.org/wiki/Reference_counting | Reference counting} pattern.
12
12
  * Getting the reference count correct is difficult in TypeScript and great care must be used.
13
13
  * Because of this, this interface should not be used in the public API.
14
14
  */