@fluidframework/tree 2.63.0-359461 → 2.63.0-359962

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 (510) hide show
  1. package/.mocharc.cjs +9 -1
  2. package/api-report/tree.alpha.api.md +126 -96
  3. package/api-report/tree.beta.api.md +37 -2
  4. package/api-report/tree.legacy.beta.api.md +37 -2
  5. package/api-report/tree.legacy.public.api.md +9 -2
  6. package/api-report/tree.public.api.md +9 -2
  7. package/dist/alpha.d.ts +18 -13
  8. package/dist/beta.d.ts +5 -0
  9. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
  10. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  11. package/dist/feature-libraries/chunked-forest/chunkTree.js +70 -35
  12. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  13. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
  14. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  15. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  16. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
  17. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
  18. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +15 -0
  19. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
  20. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
  21. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  22. package/dist/feature-libraries/chunked-forest/codec/index.js +3 -1
  23. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  24. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
  26. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  28. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  30. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  31. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
  32. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  33. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  34. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  35. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  36. package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -3
  37. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  38. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
  39. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  40. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
  41. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  42. package/dist/feature-libraries/index.d.ts +1 -1
  43. package/dist/feature-libraries/index.d.ts.map +1 -1
  44. package/dist/feature-libraries/index.js +2 -1
  45. package/dist/feature-libraries/index.js.map +1 -1
  46. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  47. package/dist/feature-libraries/treeCursorUtils.js +17 -15
  48. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/jsonDomainSchema.d.ts +5 -5
  53. package/dist/jsonDomainSchema.js +5 -5
  54. package/dist/jsonDomainSchema.js.map +1 -1
  55. package/dist/legacy.d.ts +5 -0
  56. package/dist/packageVersion.d.ts +1 -1
  57. package/dist/packageVersion.js +1 -1
  58. package/dist/packageVersion.js.map +1 -1
  59. package/dist/public.d.ts +1 -0
  60. package/dist/serializableDomainSchema.d.ts +6 -6
  61. package/dist/serializableDomainSchema.js +5 -5
  62. package/dist/serializableDomainSchema.js.map +1 -1
  63. package/dist/shared-tree/independentView.d.ts.map +1 -1
  64. package/dist/shared-tree/independentView.js +2 -2
  65. package/dist/shared-tree/independentView.js.map +1 -1
  66. package/dist/shared-tree/schematizingTreeView.d.ts +5 -0
  67. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  68. package/dist/shared-tree/schematizingTreeView.js +38 -8
  69. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  70. package/dist/shared-tree/sharedTree.d.ts +6 -8
  71. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  72. package/dist/shared-tree/sharedTree.js +6 -8
  73. package/dist/shared-tree/sharedTree.js.map +1 -1
  74. package/dist/shared-tree/tree.js +1 -1
  75. package/dist/shared-tree/tree.js.map +1 -1
  76. package/dist/shared-tree/treeAlpha.d.ts +20 -28
  77. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  78. package/dist/shared-tree/treeAlpha.js +6 -31
  79. package/dist/shared-tree/treeAlpha.js.map +1 -1
  80. package/dist/simple-tree/api/conciseTree.d.ts +1 -1
  81. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  82. package/dist/simple-tree/api/configuration.d.ts +0 -3
  83. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  84. package/dist/simple-tree/api/configuration.js +1 -4
  85. package/dist/simple-tree/api/configuration.js.map +1 -1
  86. package/dist/simple-tree/api/customTree.d.ts +7 -7
  87. package/dist/simple-tree/api/customTree.js +5 -5
  88. package/dist/simple-tree/api/customTree.js.map +1 -1
  89. package/dist/simple-tree/api/discrepancies.js +2 -2
  90. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  91. package/dist/simple-tree/api/index.d.ts +3 -3
  92. package/dist/simple-tree/api/index.d.ts.map +1 -1
  93. package/dist/simple-tree/api/index.js +4 -1
  94. package/dist/simple-tree/api/index.js.map +1 -1
  95. package/dist/simple-tree/api/schemaFactory.d.ts +12 -4
  96. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  97. package/dist/simple-tree/api/schemaFactory.js +3 -8
  98. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  99. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
  100. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  101. package/dist/simple-tree/api/schemaFactoryAlpha.js +42 -11
  102. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  103. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
  104. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  105. package/dist/simple-tree/api/schemaFactoryBeta.js +14 -0
  106. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  107. package/dist/simple-tree/api/schemaStatics.d.ts +9 -14
  108. package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
  109. package/dist/simple-tree/api/schemaStatics.js +12 -12
  110. package/dist/simple-tree/api/schemaStatics.js.map +1 -1
  111. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  112. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  113. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  114. package/dist/simple-tree/api/tree.d.ts +3 -3
  115. package/dist/simple-tree/api/tree.js.map +1 -1
  116. package/dist/simple-tree/api/treeBeta.d.ts +52 -2
  117. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
  118. package/dist/simple-tree/api/treeBeta.js +37 -2
  119. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  120. package/dist/simple-tree/api/treeNodeApi.js +4 -4
  121. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  122. package/dist/simple-tree/api/typesUnsafe.d.ts +60 -1
  123. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  124. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  125. package/dist/simple-tree/core/allowedTypes.d.ts +120 -62
  126. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  127. package/dist/simple-tree/core/allowedTypes.js +162 -84
  128. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  129. package/dist/simple-tree/core/context.d.ts +2 -2
  130. package/dist/simple-tree/core/context.d.ts.map +1 -1
  131. package/dist/simple-tree/core/context.js.map +1 -1
  132. package/dist/simple-tree/core/index.d.ts +3 -3
  133. package/dist/simple-tree/core/index.d.ts.map +1 -1
  134. package/dist/simple-tree/core/index.js +5 -4
  135. package/dist/simple-tree/core/index.js.map +1 -1
  136. package/dist/simple-tree/core/toStored.d.ts +3 -3
  137. package/dist/simple-tree/core/toStored.d.ts.map +1 -1
  138. package/dist/simple-tree/core/toStored.js +2 -2
  139. package/dist/simple-tree/core/toStored.js.map +1 -1
  140. package/dist/simple-tree/core/treeNode.d.ts +1 -1
  141. package/dist/simple-tree/core/treeNode.js +1 -1
  142. package/dist/simple-tree/core/treeNode.js.map +1 -1
  143. package/dist/simple-tree/core/treeNodeKernel.d.ts +7 -11
  144. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  145. package/dist/simple-tree/core/treeNodeKernel.js +24 -47
  146. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  147. package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -3
  148. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  149. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  150. package/dist/simple-tree/core/treeNodeValid.d.ts +2 -2
  151. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  152. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  153. package/dist/simple-tree/core/walkSchema.d.ts +3 -3
  154. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  155. package/dist/simple-tree/core/walkSchema.js +1 -1
  156. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  157. package/dist/simple-tree/createContext.js +2 -2
  158. package/dist/simple-tree/createContext.js.map +1 -1
  159. package/dist/simple-tree/fieldSchema.d.ts +9 -32
  160. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  161. package/dist/simple-tree/fieldSchema.js +12 -20
  162. package/dist/simple-tree/fieldSchema.js.map +1 -1
  163. package/dist/simple-tree/getTreeNodeForField.js +1 -1
  164. package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
  165. package/dist/simple-tree/index.d.ts +4 -4
  166. package/dist/simple-tree/index.d.ts.map +1 -1
  167. package/dist/simple-tree/index.js +7 -3
  168. package/dist/simple-tree/index.js.map +1 -1
  169. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
  170. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  171. package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -8
  172. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  173. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  174. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  175. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  176. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  177. package/dist/simple-tree/node-kinds/common.js +2 -2
  178. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  179. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  180. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  181. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  182. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
  183. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  184. package/dist/simple-tree/node-kinds/map/mapNode.js +5 -5
  185. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  186. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  187. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  188. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  189. package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
  190. package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  191. package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
  192. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
  193. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  194. package/dist/simple-tree/node-kinds/object/objectNode.js +8 -18
  195. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  196. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
  197. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  198. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  199. package/dist/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
  200. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  201. package/dist/simple-tree/node-kinds/record/recordNode.js +9 -9
  202. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  203. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
  204. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  205. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  206. package/dist/simple-tree/prepareForInsertion.d.ts +39 -7
  207. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  208. package/dist/simple-tree/prepareForInsertion.js +43 -15
  209. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  210. package/dist/simple-tree/toStoredSchema.d.ts +8 -8
  211. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  212. package/dist/simple-tree/toStoredSchema.js +5 -5
  213. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  214. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
  215. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  216. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  217. package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
  218. package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -1
  219. package/dist/simple-tree/walkFieldSchema.js +1 -1
  220. package/dist/simple-tree/walkFieldSchema.js.map +1 -1
  221. package/dist/tableSchema.d.ts +19 -19
  222. package/dist/tableSchema.d.ts.map +1 -1
  223. package/dist/tableSchema.js +2 -2
  224. package/dist/tableSchema.js.map +1 -1
  225. package/lib/alpha.d.ts +18 -13
  226. package/lib/beta.d.ts +5 -0
  227. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
  228. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  229. package/lib/feature-libraries/chunked-forest/chunkTree.js +68 -32
  230. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  231. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
  232. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  233. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  234. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
  235. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
  236. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +11 -0
  237. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
  238. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
  239. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  240. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -0
  241. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  242. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  243. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
  244. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  245. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  246. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  247. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  248. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  249. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
  250. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  251. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  252. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  253. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  254. package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -3
  255. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  256. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
  257. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  258. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
  259. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  260. package/lib/feature-libraries/index.d.ts +1 -1
  261. package/lib/feature-libraries/index.d.ts.map +1 -1
  262. package/lib/feature-libraries/index.js +1 -1
  263. package/lib/feature-libraries/index.js.map +1 -1
  264. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  265. package/lib/feature-libraries/treeCursorUtils.js +17 -15
  266. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  267. package/lib/index.d.ts +1 -1
  268. package/lib/index.d.ts.map +1 -1
  269. package/lib/index.js.map +1 -1
  270. package/lib/jsonDomainSchema.d.ts +5 -5
  271. package/lib/jsonDomainSchema.js +5 -5
  272. package/lib/jsonDomainSchema.js.map +1 -1
  273. package/lib/legacy.d.ts +5 -0
  274. package/lib/packageVersion.d.ts +1 -1
  275. package/lib/packageVersion.js +1 -1
  276. package/lib/packageVersion.js.map +1 -1
  277. package/lib/public.d.ts +1 -0
  278. package/lib/serializableDomainSchema.d.ts +6 -6
  279. package/lib/serializableDomainSchema.js +5 -5
  280. package/lib/serializableDomainSchema.js.map +1 -1
  281. package/lib/shared-tree/independentView.d.ts.map +1 -1
  282. package/lib/shared-tree/independentView.js +3 -3
  283. package/lib/shared-tree/independentView.js.map +1 -1
  284. package/lib/shared-tree/schematizingTreeView.d.ts +5 -0
  285. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  286. package/lib/shared-tree/schematizingTreeView.js +41 -11
  287. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  288. package/lib/shared-tree/sharedTree.d.ts +6 -8
  289. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  290. package/lib/shared-tree/sharedTree.js +7 -9
  291. package/lib/shared-tree/sharedTree.js.map +1 -1
  292. package/lib/shared-tree/tree.js +2 -2
  293. package/lib/shared-tree/tree.js.map +1 -1
  294. package/lib/shared-tree/treeAlpha.d.ts +20 -28
  295. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  296. package/lib/shared-tree/treeAlpha.js +5 -30
  297. package/lib/shared-tree/treeAlpha.js.map +1 -1
  298. package/lib/simple-tree/api/conciseTree.d.ts +1 -1
  299. package/lib/simple-tree/api/conciseTree.js.map +1 -1
  300. package/lib/simple-tree/api/configuration.d.ts +0 -3
  301. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  302. package/lib/simple-tree/api/configuration.js +2 -5
  303. package/lib/simple-tree/api/configuration.js.map +1 -1
  304. package/lib/simple-tree/api/customTree.d.ts +7 -7
  305. package/lib/simple-tree/api/customTree.js +5 -5
  306. package/lib/simple-tree/api/customTree.js.map +1 -1
  307. package/lib/simple-tree/api/discrepancies.js +3 -3
  308. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  309. package/lib/simple-tree/api/index.d.ts +3 -3
  310. package/lib/simple-tree/api/index.d.ts.map +1 -1
  311. package/lib/simple-tree/api/index.js +1 -1
  312. package/lib/simple-tree/api/index.js.map +1 -1
  313. package/lib/simple-tree/api/schemaFactory.d.ts +12 -4
  314. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  315. package/lib/simple-tree/api/schemaFactory.js +3 -8
  316. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  317. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
  318. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  319. package/lib/simple-tree/api/schemaFactoryAlpha.js +43 -12
  320. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  321. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
  322. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  323. package/lib/simple-tree/api/schemaFactoryBeta.js +16 -2
  324. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  325. package/lib/simple-tree/api/schemaStatics.d.ts +9 -14
  326. package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
  327. package/lib/simple-tree/api/schemaStatics.js +12 -12
  328. package/lib/simple-tree/api/schemaStatics.js.map +1 -1
  329. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  330. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  331. package/lib/simple-tree/api/storedSchema.js +1 -1
  332. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  333. package/lib/simple-tree/api/tree.d.ts +3 -3
  334. package/lib/simple-tree/api/tree.js.map +1 -1
  335. package/lib/simple-tree/api/treeBeta.d.ts +52 -2
  336. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
  337. package/lib/simple-tree/api/treeBeta.js +34 -2
  338. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  339. package/lib/simple-tree/api/treeNodeApi.js +5 -5
  340. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  341. package/lib/simple-tree/api/typesUnsafe.d.ts +60 -1
  342. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  343. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  344. package/lib/simple-tree/core/allowedTypes.d.ts +120 -62
  345. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  346. package/lib/simple-tree/core/allowedTypes.js +158 -80
  347. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  348. package/lib/simple-tree/core/context.d.ts +2 -2
  349. package/lib/simple-tree/core/context.d.ts.map +1 -1
  350. package/lib/simple-tree/core/context.js.map +1 -1
  351. package/lib/simple-tree/core/index.d.ts +3 -3
  352. package/lib/simple-tree/core/index.d.ts.map +1 -1
  353. package/lib/simple-tree/core/index.js +2 -2
  354. package/lib/simple-tree/core/index.js.map +1 -1
  355. package/lib/simple-tree/core/toStored.d.ts +3 -3
  356. package/lib/simple-tree/core/toStored.d.ts.map +1 -1
  357. package/lib/simple-tree/core/toStored.js +3 -3
  358. package/lib/simple-tree/core/toStored.js.map +1 -1
  359. package/lib/simple-tree/core/treeNode.d.ts +1 -1
  360. package/lib/simple-tree/core/treeNode.js +1 -1
  361. package/lib/simple-tree/core/treeNode.js.map +1 -1
  362. package/lib/simple-tree/core/treeNodeKernel.d.ts +7 -11
  363. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  364. package/lib/simple-tree/core/treeNodeKernel.js +23 -46
  365. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  366. package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -3
  367. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  368. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  369. package/lib/simple-tree/core/treeNodeValid.d.ts +2 -2
  370. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  371. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  372. package/lib/simple-tree/core/walkSchema.d.ts +3 -3
  373. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  374. package/lib/simple-tree/core/walkSchema.js +2 -2
  375. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  376. package/lib/simple-tree/createContext.js +3 -3
  377. package/lib/simple-tree/createContext.js.map +1 -1
  378. package/lib/simple-tree/fieldSchema.d.ts +9 -32
  379. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  380. package/lib/simple-tree/fieldSchema.js +13 -21
  381. package/lib/simple-tree/fieldSchema.js.map +1 -1
  382. package/lib/simple-tree/getTreeNodeForField.js +1 -1
  383. package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
  384. package/lib/simple-tree/index.d.ts +4 -4
  385. package/lib/simple-tree/index.d.ts.map +1 -1
  386. package/lib/simple-tree/index.js +2 -2
  387. package/lib/simple-tree/index.js.map +1 -1
  388. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
  389. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  390. package/lib/simple-tree/node-kinds/array/arrayNode.js +8 -9
  391. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  392. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  393. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  394. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  395. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  396. package/lib/simple-tree/node-kinds/common.js +3 -3
  397. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  398. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  399. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  400. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  401. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
  402. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  403. package/lib/simple-tree/node-kinds/map/mapNode.js +6 -6
  404. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  405. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  406. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  407. package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  408. package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
  409. package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  410. package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
  411. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
  412. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  413. package/lib/simple-tree/node-kinds/object/objectNode.js +9 -18
  414. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  415. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
  416. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  417. package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  418. package/lib/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
  419. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  420. package/lib/simple-tree/node-kinds/record/recordNode.js +10 -10
  421. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  422. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
  423. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  424. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  425. package/lib/simple-tree/prepareForInsertion.d.ts +39 -7
  426. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  427. package/lib/simple-tree/prepareForInsertion.js +45 -17
  428. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  429. package/lib/simple-tree/toStoredSchema.d.ts +8 -8
  430. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  431. package/lib/simple-tree/toStoredSchema.js +5 -5
  432. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  433. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
  434. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  435. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
  436. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  437. package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
  438. package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -1
  439. package/lib/simple-tree/walkFieldSchema.js +1 -1
  440. package/lib/simple-tree/walkFieldSchema.js.map +1 -1
  441. package/lib/tableSchema.d.ts +19 -19
  442. package/lib/tableSchema.d.ts.map +1 -1
  443. package/lib/tableSchema.js +2 -2
  444. package/lib/tableSchema.js.map +1 -1
  445. package/package.json +23 -21
  446. package/src/feature-libraries/chunked-forest/chunkTree.ts +112 -45
  447. package/src/feature-libraries/chunked-forest/codec/codecs.ts +4 -9
  448. package/src/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.ts +33 -0
  449. package/src/feature-libraries/chunked-forest/codec/index.ts +4 -0
  450. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +4 -7
  451. package/src/feature-libraries/chunked-forest/index.ts +2 -0
  452. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +1 -1
  453. package/src/feature-libraries/forest-summary/forestSummarizer.ts +8 -12
  454. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +3 -12
  455. package/src/feature-libraries/index.ts +2 -0
  456. package/src/feature-libraries/treeCursorUtils.ts +34 -19
  457. package/src/index.ts +14 -10
  458. package/src/jsonDomainSchema.ts +5 -5
  459. package/src/packageVersion.ts +1 -1
  460. package/src/serializableDomainSchema.ts +6 -6
  461. package/src/shared-tree/independentView.ts +3 -0
  462. package/src/shared-tree/schematizingTreeView.ts +58 -9
  463. package/src/shared-tree/sharedTree.ts +33 -20
  464. package/src/shared-tree/tree.ts +2 -2
  465. package/src/shared-tree/treeAlpha.ts +35 -84
  466. package/src/simple-tree/api/conciseTree.ts +1 -1
  467. package/src/simple-tree/api/configuration.ts +3 -7
  468. package/src/simple-tree/api/customTree.ts +7 -7
  469. package/src/simple-tree/api/discrepancies.ts +3 -3
  470. package/src/simple-tree/api/index.ts +17 -2
  471. package/src/simple-tree/api/schemaFactory.ts +18 -73
  472. package/src/simple-tree/api/schemaFactoryAlpha.ts +118 -25
  473. package/src/simple-tree/api/schemaFactoryBeta.ts +76 -1
  474. package/src/simple-tree/api/schemaStatics.ts +19 -61
  475. package/src/simple-tree/api/storedSchema.ts +2 -6
  476. package/src/simple-tree/api/tree.ts +3 -3
  477. package/src/simple-tree/api/treeBeta.ts +137 -4
  478. package/src/simple-tree/api/treeNodeApi.ts +5 -5
  479. package/src/simple-tree/api/typesUnsafe.ts +81 -0
  480. package/src/simple-tree/core/TreeNodeBinding.md +14 -70
  481. package/src/simple-tree/core/allowedTypes.ts +355 -159
  482. package/src/simple-tree/core/context.ts +2 -2
  483. package/src/simple-tree/core/index.ts +11 -9
  484. package/src/simple-tree/core/toStored.ts +7 -5
  485. package/src/simple-tree/core/treeNode.ts +1 -1
  486. package/src/simple-tree/core/treeNodeKernel.ts +25 -59
  487. package/src/simple-tree/core/treeNodeSchema.ts +3 -6
  488. package/src/simple-tree/core/treeNodeValid.ts +2 -2
  489. package/src/simple-tree/core/walkSchema.ts +9 -5
  490. package/src/simple-tree/createContext.ts +3 -3
  491. package/src/simple-tree/fieldSchema.ts +24 -98
  492. package/src/simple-tree/getTreeNodeForField.ts +1 -1
  493. package/src/simple-tree/index.ts +19 -11
  494. package/src/simple-tree/node-kinds/array/arrayNode.ts +12 -17
  495. package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +7 -8
  496. package/src/simple-tree/node-kinds/common.ts +5 -3
  497. package/src/simple-tree/node-kinds/index.ts +0 -2
  498. package/src/simple-tree/node-kinds/map/mapNode.ts +8 -16
  499. package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +7 -8
  500. package/src/simple-tree/node-kinds/object/index.ts +0 -2
  501. package/src/simple-tree/node-kinds/object/objectNode.ts +17 -55
  502. package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +5 -19
  503. package/src/simple-tree/node-kinds/record/recordNode.ts +16 -23
  504. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +7 -11
  505. package/src/simple-tree/prepareForInsertion.ts +92 -30
  506. package/src/simple-tree/toStoredSchema.ts +8 -9
  507. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +2 -6
  508. package/src/simple-tree/unsafeUnknownSchema.ts +2 -3
  509. package/src/simple-tree/walkFieldSchema.ts +1 -1
  510. package/src/tableSchema.ts +24 -37
@@ -15,15 +15,12 @@ import {
15
15
  typeNameSymbol,
16
16
  typeSchemaSymbol,
17
17
  type UnhydratedFlexTreeNode,
18
- getOrCreateInnerNode,
18
+ getInnerNode,
19
19
  getKernel,
20
20
  type InternalTreeNode,
21
21
  type NodeSchemaMetadata,
22
- type ImplicitAnnotatedAllowedTypes,
23
- type UnannotateImplicitAllowedTypes,
24
22
  type ImplicitAllowedTypes,
25
23
  normalizeAllowedTypes,
26
- unannotateImplicitAllowedTypes,
27
24
  type TreeNodeFromImplicitAllowedTypes,
28
25
  TreeNodeValid,
29
26
  type MostDerivedData,
@@ -108,7 +105,7 @@ function createRecordNodeProxy(
108
105
  }
109
106
 
110
107
  if (typeof key === "string") {
111
- const innerNode = getOrCreateInnerNode(receiver);
108
+ const innerNode = getInnerNode(receiver);
112
109
  const field = innerNode.tryGetField(brand(key));
113
110
  if (field !== undefined) {
114
111
  return tryGetTreeNodeForField(field);
@@ -122,7 +119,7 @@ function createRecordNodeProxy(
122
119
  return false;
123
120
  }
124
121
 
125
- const innerNode = getOrCreateInnerNode(receiver);
122
+ const innerNode = getInnerNode(receiver);
126
123
  const field = innerNode.getBoxed(brand(key)) as FlexTreeOptionalField;
127
124
  const kernel = getKernel(receiver);
128
125
  const innerSchema = innerNode.context.schema.nodeSchema.get(brand(schema.identifier));
@@ -146,13 +143,13 @@ function createRecordNodeProxy(
146
143
  return false;
147
144
  }
148
145
 
149
- const innerNode = getOrCreateInnerNode(proxy);
146
+ const innerNode = getInnerNode(proxy);
150
147
  const childField = innerNode.tryGetField(brand(key));
151
148
 
152
149
  return childField !== undefined;
153
150
  },
154
151
  ownKeys: (target) => {
155
- const innerNode = getOrCreateInnerNode(proxy);
152
+ const innerNode = getInnerNode(proxy);
156
153
  return [...innerNode.keys()];
157
154
  },
158
155
  getOwnPropertyDescriptor: (target, key) => {
@@ -160,7 +157,7 @@ function createRecordNodeProxy(
160
157
  return undefined;
161
158
  }
162
159
 
163
- const innerNode = getOrCreateInnerNode(proxy);
160
+ const innerNode = getInnerNode(proxy);
164
161
  const field = innerNode.tryGetField(brand(key));
165
162
 
166
163
  if (field === undefined) {
@@ -182,7 +179,7 @@ function createRecordNodeProxy(
182
179
  return false;
183
180
  }
184
181
 
185
- const innerNode = getOrCreateInnerNode(proxy);
182
+ const innerNode = getInnerNode(proxy);
186
183
  const field = innerNode.tryGetField(brand(key)) as FlexTreeOptionalField | undefined;
187
184
  if (field !== undefined) {
188
185
  field.editor.set(undefined, field.length === 0);
@@ -212,7 +209,7 @@ abstract class CustomRecordNodeBase<
212
209
  */
213
210
  export interface RecordSchemaOptions<
214
211
  TName extends string,
215
- TAllowedTypes extends ImplicitAnnotatedAllowedTypes,
212
+ TAllowedTypes extends ImplicitAllowedTypes,
216
213
  TImplicitlyConstructable extends boolean,
217
214
  TCustomMetadata = unknown,
218
215
  > {
@@ -250,7 +247,7 @@ export interface RecordSchemaOptions<
250
247
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
251
248
  export function recordSchema<
252
249
  TName extends string,
253
- const TAllowedTypes extends ImplicitAnnotatedAllowedTypes,
250
+ const TAllowedTypes extends ImplicitAllowedTypes,
254
251
  const TImplicitlyConstructable extends boolean,
255
252
  const TCustomMetadata = unknown,
256
253
  >(
@@ -261,8 +258,6 @@ export function recordSchema<
261
258
  TCustomMetadata
262
259
  >,
263
260
  ) {
264
- type TUnannotatedAllowedTypes = UnannotateImplicitAllowedTypes<TAllowedTypes>;
265
-
266
261
  const {
267
262
  identifier,
268
263
  info,
@@ -272,23 +267,21 @@ export function recordSchema<
272
267
  persistedMetadata,
273
268
  } = options;
274
269
 
275
- const lazyChildTypes = new Lazy(() =>
276
- normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
277
- );
270
+ const normalizedTypes = normalizeAllowedTypes(info);
278
271
  const lazyAllowedTypesIdentifiers = new Lazy(
279
- () => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
272
+ () => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
280
273
  );
281
274
 
282
275
  let privateData: TreeNodeSchemaPrivateData | undefined;
283
276
 
284
277
  class Schema
285
- extends CustomRecordNodeBase<TUnannotatedAllowedTypes>
286
- implements TreeRecordNode<TUnannotatedAllowedTypes>
278
+ extends CustomRecordNodeBase<TAllowedTypes>
279
+ implements TreeRecordNode<TAllowedTypes>
287
280
  {
288
281
  /**
289
282
  * Record-like index signature for the node.
290
283
  */
291
- [key: string]: TreeNodeFromImplicitAllowedTypes<TUnannotatedAllowedTypes>;
284
+ [key: string]: TreeNodeFromImplicitAllowedTypes<TAllowedTypes>;
292
285
 
293
286
  public static override prepareInstance<T2>(
294
287
  this: typeof TreeNodeValid<T2>,
@@ -374,7 +367,7 @@ export function recordSchema<
374
367
  public static readonly implicitlyConstructable: TImplicitlyConstructable =
375
368
  implicitlyConstructable;
376
369
  public static get childTypes(): ReadonlySet<TreeNodeSchema> {
377
- return lazyChildTypes.value;
370
+ return normalizedTypes.evaluateSet();
378
371
  }
379
372
  public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
380
373
  public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
@@ -389,7 +382,7 @@ export function recordSchema<
389
382
  }
390
383
 
391
384
  public [Symbol.iterator](): IterableIterator<
392
- [string, TreeNodeFromImplicitAllowedTypes<TUnannotatedAllowedTypes>]
385
+ [string, TreeNodeFromImplicitAllowedTypes<TAllowedTypes>]
393
386
  > {
394
387
  return recordIterator(this);
395
388
  }
@@ -11,10 +11,8 @@ import type {
11
11
  WithType,
12
12
  TreeNode,
13
13
  ImplicitAllowedTypes,
14
- ImplicitAnnotatedAllowedTypes,
15
14
  InsertableTreeNodeFromImplicitAllowedTypes,
16
15
  TreeNodeFromImplicitAllowedTypes,
17
- UnannotateImplicitAllowedTypes,
18
16
  } from "../../core/index.js";
19
17
 
20
18
  import type { SimpleRecordNodeSchema } from "../../simpleSchema.js";
@@ -56,15 +54,14 @@ export type RecordNodeInsertableData<T extends ImplicitAllowedTypes> = Restricti
56
54
  */
57
55
  export interface RecordNodeCustomizableSchema<
58
56
  out TName extends string = string,
59
- in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
57
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
60
58
  out ImplicitlyConstructable extends boolean = true,
61
59
  out TCustomMetadata = unknown,
62
60
  > extends TreeNodeSchemaClass<
63
61
  /* Name */ TName,
64
62
  /* Kind */ NodeKind.Record,
65
- /* TNode */ TreeRecordNode<UnannotateImplicitAllowedTypes<T>> &
66
- WithType<TName, NodeKind.Record, T>,
67
- /* TInsertable */ RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
63
+ /* TNode */ TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>,
64
+ /* TInsertable */ RecordNodeInsertableData<T>,
68
65
  /* ImplicitlyConstructable */ ImplicitlyConstructable,
69
66
  /* Info */ T,
70
67
  /* TConstructorExtra */ never,
@@ -78,15 +75,14 @@ export interface RecordNodeCustomizableSchema<
78
75
  */
79
76
  export interface RecordNodePojoEmulationSchema<
80
77
  out TName extends string = string,
81
- in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
78
+ in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
82
79
  out ImplicitlyConstructable extends boolean = true,
83
80
  out TCustomMetadata = unknown,
84
81
  > extends TreeNodeSchemaNonClass<
85
82
  /* Name */ TName,
86
83
  /* Kind */ NodeKind.Record,
87
- /* TNode */ TreeRecordNode<UnannotateImplicitAllowedTypes<T>> &
88
- WithType<TName, NodeKind.Record, T>,
89
- /* TInsertable */ RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
84
+ /* TNode */ TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>,
85
+ /* TInsertable */ RecordNodeInsertableData<T>,
90
86
  /* ImplicitlyConstructable */ ImplicitlyConstructable,
91
87
  /* Info */ T,
92
88
  /* TConstructorExtra */ never,
@@ -104,7 +100,7 @@ export interface RecordNodePojoEmulationSchema<
104
100
  */
105
101
  export type RecordNodeSchema<
106
102
  TName extends string = string,
107
- T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
103
+ T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
108
104
  ImplicitlyConstructable extends boolean = true,
109
105
  TCustomMetadata = unknown,
110
106
  > =
@@ -7,7 +7,6 @@ import type {
7
7
  SchemaAndPolicy,
8
8
  IForestSubscription,
9
9
  UpPath,
10
- NodeIndex,
11
10
  FieldKey,
12
11
  DetachedField,
13
12
  TreeFieldStoredSchema,
@@ -21,21 +20,25 @@ import {
21
20
  type FlexibleFieldContent,
22
21
  type FlexibleNodeContent,
23
22
  throwOutOfSchema,
23
+ flexTreeSlot,
24
+ ContextSlot,
25
+ getOrCreateHydratedFlexTreeNode,
26
+ assertFlexTreeEntityNotFreed,
24
27
  } from "../feature-libraries/index.js";
25
- import type { ImplicitAnnotatedFieldSchema } from "./fieldSchema.js";
28
+ import type { ImplicitFieldSchema } from "./fieldSchema.js";
26
29
  import {
27
30
  type InsertableContent,
28
31
  unhydratedFlexTreeFromInsertable,
29
32
  } from "./unhydratedFlexTreeFromInsertable.js";
30
33
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
31
- import { brand } from "../util/index.js";
34
+ import { brand, type Mutable } from "../util/index.js";
32
35
  import {
33
36
  getKernel,
34
- type ImplicitAnnotatedAllowedTypes,
37
+ type ImplicitAllowedTypes,
35
38
  type TreeNode,
36
39
  type UnhydratedFlexTreeNode,
37
40
  } from "./core/index.js";
38
- import { debugAssert, oob } from "@fluidframework/core-utils/internal";
41
+ import { debugAssert, fail, oob } from "@fluidframework/core-utils/internal";
39
42
  import { isFieldInSchema } from "../feature-libraries/index.js";
40
43
 
41
44
  /**
@@ -56,7 +59,7 @@ const validateSchema = true;
56
59
  */
57
60
  export function prepareForInsertion<TIn extends InsertableContent | undefined>(
58
61
  data: TIn,
59
- schema: ImplicitAnnotatedFieldSchema,
62
+ schema: ImplicitFieldSchema,
60
63
  destinationContext: FlexTreeContext,
61
64
  destinationSchema: TreeFieldStoredSchema,
62
65
  ): TIn extends undefined ? undefined : FlexibleNodeContent {
@@ -84,7 +87,7 @@ export function prepareForInsertion<TIn extends InsertableContent | undefined>(
84
87
  */
85
88
  export function prepareArrayContentForInsertion(
86
89
  data: readonly InsertableContent[],
87
- schema: ImplicitAnnotatedAllowedTypes,
90
+ schema: ImplicitAllowedTypes,
88
91
  destinationContext: FlexTreeContext,
89
92
  destinationSchema: TreeTypeSet,
90
93
  ): FlexibleFieldContent {
@@ -117,15 +120,22 @@ export function prepareArrayContentForInsertion(
117
120
  */
118
121
  export function prepareForInsertionContextless<TIn extends InsertableContent | undefined>(
119
122
  data: TIn,
120
- schema: ImplicitAnnotatedFieldSchema,
123
+ schema: ImplicitFieldSchema,
121
124
  schemaAndPolicy: SchemaAndPolicy,
122
125
  hydratedData: FlexTreeHydratedContextMinimal | undefined,
123
126
  destinationSchema: TreeFieldStoredSchema,
127
+ scheduleHydrationOverride?: HydrationScheduler,
124
128
  ): TIn extends undefined ? undefined : FlexibleNodeContent {
125
129
  const mapTree = unhydratedFlexTreeFromInsertable(data, schema);
126
130
 
127
131
  const contentArray = mapTree === undefined ? [] : [mapTree];
128
- validateAndPrepare(schemaAndPolicy, hydratedData, destinationSchema, contentArray);
132
+ validateAndPrepare(
133
+ schemaAndPolicy,
134
+ hydratedData,
135
+ destinationSchema,
136
+ contentArray,
137
+ scheduleHydrationOverride,
138
+ );
129
139
 
130
140
  return mapTree;
131
141
  }
@@ -141,12 +151,19 @@ function validateAndPrepare(
141
151
  hydratedData: FlexTreeHydratedContextMinimal | undefined,
142
152
  fieldSchema: TreeFieldStoredSchema,
143
153
  mapTrees: readonly UnhydratedFlexTreeNode[],
154
+ scheduleHydrationOverride?: HydrationScheduler,
144
155
  ): void {
145
156
  if (hydratedData !== undefined) {
146
157
  // Run `prepareContentForHydration` before walking the tree in `isFieldInSchema`.
147
158
  // This ensures that when `isFieldInSchema` requests identifiers (or any other contextual defaults),
148
159
  // they were already creating used the more specific context we have access to from `hydratedData`.
149
- prepareContentForHydration(mapTrees, hydratedData.checkout.forest, hydratedData);
160
+ prepareContentForHydration(
161
+ mapTrees,
162
+ scheduleHydrationOverride ??
163
+ ((batch, doHydration) =>
164
+ scheduleHydration(batch, hydratedData.checkout.forest, doHydration)),
165
+ hydratedData,
166
+ );
150
167
  // TODO: AB#45723
151
168
  // Now that staged schema rely on this validation, its a bit odd we don't do it for insertion into unhydrated contexts.
152
169
  // We can't simply enable it for them however due to contextual default fields which would not have been created yet (see comment above).
@@ -157,15 +174,6 @@ function validateAndPrepare(
157
174
  }
158
175
  }
159
176
 
160
- /**
161
- * An {@link UpPath} that is just index zero in a {@link DetachedField} which can be modified at a later time.
162
- */
163
- interface Root extends UpPath {
164
- readonly parent: undefined;
165
- parentField: DetachedField & FieldKey;
166
- readonly parentIndex: NodeIndex & 0;
167
- }
168
-
169
177
  /**
170
178
  * The path from the included node to the root of the content tree it was inserted as part of.
171
179
  */
@@ -181,7 +189,7 @@ interface LocatedNodesBatch {
181
189
  /**
182
190
  * UpPath shared by all {@link RelativeNodePath}s in this batch corresponding to the root of the inserted content.
183
191
  */
184
- readonly rootPath: Root;
192
+ readonly rootPath: Mutable<UpPath>;
185
193
  readonly paths: RelativeNodePath[];
186
194
  }
187
195
 
@@ -204,7 +212,7 @@ const placeholderKey: DetachedField & FieldKey = brand("placeholder" as const);
204
212
  */
205
213
  export function prepareContentForHydration(
206
214
  content: readonly UnhydratedFlexTreeNode[],
207
- forest: IForestSubscription,
215
+ scheduler: HydrationScheduler,
208
216
  context: FlexTreeHydratedContextMinimal,
209
217
  ): void {
210
218
  const batches: LocatedNodesBatch[] = [];
@@ -228,7 +236,8 @@ export function prepareContentForHydration(
228
236
  );
229
237
  }
230
238
 
231
- scheduleHydration(batches, forest);
239
+ const doHydration = hydrator(batches, context.checkout.forest);
240
+ scheduler(batches, doHydration);
232
241
  }
233
242
 
234
243
  function walkMapTree(
@@ -270,6 +279,23 @@ function walkMapTree(
270
279
  }
271
280
  }
272
281
 
282
+ /**
283
+ * A function which can schedule hydration of batches of nodes to occur at a later time (which must be after they have been inserted into the tree).
284
+ */
285
+ type HydrationScheduler = (
286
+ locatedNodes: readonly LocatedNodesBatch[],
287
+ /**
288
+ * Does the actual hydration. Should be called for each index in `locatedNodes` once the corresponding content has been inserted into the tree.
289
+ */
290
+ doHydration: Hydrator,
291
+ ) => void;
292
+
293
+ /**
294
+ * Does the actual hydration.
295
+ * The provided `attachPath` is the path the content is currently under (where it was attached in the tree).
296
+ */
297
+ type Hydrator = (batch: LocatedNodesBatch, attachPath: UpPath) => void;
298
+
273
299
  /**
274
300
  * Register events which will hydrate batches of nodes when they are inserted.
275
301
  * The next edits to forest must be their insertions, in order, or data corruption can occur.
@@ -280,22 +306,58 @@ function walkMapTree(
280
306
  function scheduleHydration(
281
307
  locatedNodes: readonly LocatedNodesBatch[],
282
308
  forest: IForestSubscription,
309
+ doHydration: Hydrator,
283
310
  ): void {
284
311
  // Only subscribe to the event if there is at least one TreeNode tree to hydrate - this is not the case when inserting an empty array [].
285
312
  if (locatedNodes.length > 0) {
286
313
  // Creating a new array emits one event per element in the array, so listen to the event once for each element
287
- let i = 0;
314
+ let index = 0;
288
315
  const off = forest.events.on("afterRootFieldCreated", (fieldKey) => {
289
316
  // Indexing is safe here because of the length check above. This assumes the array has not been modified which should be the case.
290
- const batch = locatedNodes[i] ?? oob();
291
- debugAssert(() => batch.rootPath.parentField === placeholderKey);
292
- batch.rootPath.parentField = brand(fieldKey);
293
- for (const { path, node } of batch.paths) {
294
- getKernel(node).hydrate(forest.anchors, path);
295
- }
296
- if (++i === locatedNodes.length) {
317
+ const batch = locatedNodes[index] ?? oob();
318
+ doHydration(batch, { parent: undefined, parentField: fieldKey, parentIndex: 0 });
319
+ if (++index === locatedNodes.length) {
297
320
  off();
298
321
  }
299
322
  });
300
323
  }
301
324
  }
325
+
326
+ /**
327
+ * Implementation of {@link Hydrator}.
328
+ */
329
+ function hydrator(
330
+ locatedNodes: readonly LocatedNodesBatch[],
331
+ forest: IForestSubscription,
332
+ ): (batch: LocatedNodesBatch, attachedPath: UpPath) => void {
333
+ return (batch: LocatedNodesBatch, attachedPath: UpPath) => {
334
+ const context = forest.anchors.slots.get(ContextSlot) ?? fail(0xb41 /* missing context */);
335
+
336
+ // Modify paths in batch to point to correct location:
337
+ debugAssert(() => batch.rootPath.parentField === placeholderKey);
338
+ batch.rootPath.parentField = attachedPath.parentField;
339
+ batch.rootPath.parent = attachedPath.parent;
340
+ batch.rootPath.parentIndex = attachedPath.parentIndex;
341
+
342
+ // To hydrate a TreeNode, it must be associated with a HydratedFlexTreeNode.
343
+ // Find or create one as necessary.
344
+ for (const { path, node } of batch.paths) {
345
+ const anchor = forest.anchors.track(path);
346
+ const anchorNode = forest.anchors.locate(anchor) ?? fail("missing anchor");
347
+
348
+ let flexNode = anchorNode.slots.get(flexTreeSlot);
349
+ if (flexNode === undefined) {
350
+ // the flex node must be created
351
+ const cursor = forest.allocateCursor("getFlexNode");
352
+ forest.moveCursorToPath(anchorNode, cursor);
353
+
354
+ flexNode = getOrCreateHydratedFlexTreeNode(context, cursor);
355
+ cursor.free();
356
+ assertFlexTreeEntityNotFreed(flexNode);
357
+ }
358
+
359
+ getKernel(node).hydrate(flexNode);
360
+ forest.anchors.forget(anchor);
361
+ }
362
+ };
363
+ }
@@ -35,7 +35,6 @@ import {
35
35
  FieldKind,
36
36
  FieldSchemaAlpha,
37
37
  normalizeFieldSchema,
38
- type ImplicitAnnotatedFieldSchema,
39
38
  type ImplicitFieldSchema,
40
39
  } from "./fieldSchema.js";
41
40
  import type { SimpleFieldSchema, SimpleNodeSchema } from "./simpleSchema.js";
@@ -55,23 +54,23 @@ export const permissiveStoredSchemaGenerationOptions: StoredSchemaGenerationOpti
55
54
  };
56
55
 
57
56
  /**
58
- * Converts a {@link ImplicitAnnotatedFieldSchema} into a {@link TreeStoredSchema} for use in schema upgrades.
57
+ * Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} for use in schema upgrades.
59
58
  *
60
59
  * TODO: once upgrades are more flexible, this should take in more options, including the old schema and specific upgrades to enable.
61
60
  */
62
- export function toUpgradeSchema(root: ImplicitAnnotatedFieldSchema): TreeStoredSchema {
61
+ export function toUpgradeSchema(root: ImplicitFieldSchema): TreeStoredSchema {
63
62
  return toStoredSchema(root, restrictiveStoredSchemaGenerationOptions);
64
63
  }
65
64
 
66
65
  /**
67
- * Converts a {@link ImplicitAnnotatedFieldSchema} into a {@link TreeStoredSchema} for use as initial document schema.
66
+ * Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} for use as initial document schema.
68
67
  */
69
- export function toInitialSchema(root: ImplicitAnnotatedFieldSchema): TreeStoredSchema {
68
+ export function toInitialSchema(root: ImplicitFieldSchema): TreeStoredSchema {
70
69
  return toStoredSchema(root, restrictiveStoredSchemaGenerationOptions);
71
70
  }
72
71
 
73
72
  /**
74
- * Converts a {@link ImplicitAnnotatedFieldSchema} into a {@link TreeStoredSchema} to used for unhydrated nodes.
73
+ * Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} to used for unhydrated nodes.
75
74
  * @remarks
76
75
  * This allows as much as possible, relying on further validation when inserting the content.
77
76
  *
@@ -80,7 +79,7 @@ export function toInitialSchema(root: ImplicitAnnotatedFieldSchema): TreeStoredS
80
79
  export const toUnhydratedSchema = permissiveStoredSchemaGenerationOptions;
81
80
 
82
81
  /**
83
- * Converts a {@link ImplicitAnnotatedFieldSchema} into a {@link TreeStoredSchema}.
82
+ * Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema}.
84
83
  *
85
84
  * @privateRemarks
86
85
  * TODO:#38722 When runtime schema upgrades are implemented, this will need to be updated to check if
@@ -90,7 +89,7 @@ export const toUnhydratedSchema = permissiveStoredSchemaGenerationOptions;
90
89
  * Throws a `UsageError` if multiple schemas are encountered with the same identifier.
91
90
  */
92
91
  export function toStoredSchema(
93
- root: ImplicitAnnotatedFieldSchema,
92
+ root: ImplicitFieldSchema,
94
93
  options: StoredSchemaGenerationOptions,
95
94
  ): TreeStoredSchema {
96
95
  const cache = getOrCreate(viewToStoredCache, options, () => new WeakMap());
@@ -138,7 +137,7 @@ export function convertField(
138
137
  let types: TreeTypeSet;
139
138
  // eslint-disable-next-line unicorn/prefer-ternary
140
139
  if (schema instanceof FieldSchemaAlpha) {
141
- types = convertAllowedTypes(schema.annotatedAllowedTypesNormalized, options);
140
+ types = convertAllowedTypes(schema.allowedTypes, options);
142
141
  } else {
143
142
  types = schema.allowedTypesIdentifiers as TreeTypeSet;
144
143
  }
@@ -9,11 +9,7 @@ import { assert } from "@fluidframework/core-utils/internal";
9
9
 
10
10
  import { hasSingle } from "../util/index.js";
11
11
 
12
- import {
13
- normalizeFieldSchema,
14
- FieldKind,
15
- type ImplicitAnnotatedFieldSchema,
16
- } from "./fieldSchema.js";
12
+ import { normalizeFieldSchema, FieldKind, type ImplicitFieldSchema } from "./fieldSchema.js";
17
13
  import {
18
14
  CompatibilityLevel,
19
15
  getKernel,
@@ -54,7 +50,7 @@ import { getUnhydratedContext } from "./createContext.js";
54
50
  */
55
51
  export function unhydratedFlexTreeFromInsertable<TIn extends InsertableContent | undefined>(
56
52
  data: TIn,
57
- allowedTypes: ImplicitAnnotatedFieldSchema,
53
+ allowedTypes: ImplicitFieldSchema,
58
54
  ): TIn extends undefined ? undefined : UnhydratedFlexTreeNode {
59
55
  const normalizedFieldSchema = normalizeFieldSchema(allowedTypes);
60
56
 
@@ -17,8 +17,8 @@ import type { InsertableContent } from "./unhydratedFlexTreeFromInsertable.js";
17
17
  * {@inheritdoc (UnsafeUnknownSchema:type)}
18
18
  * @alpha
19
19
  */
20
-
21
20
  export const UnsafeUnknownSchema: unique symbol = Symbol("UnsafeUnknownSchema");
21
+
22
22
  /**
23
23
  * A special type which can be provided to some APIs as the schema type parameter when schema cannot easily be provided at compile time and an unsafe (instead of disabled) editing API is desired.
24
24
  * @remarks
@@ -37,8 +37,8 @@ export const UnsafeUnknownSchema: unique symbol = Symbol("UnsafeUnknownSchema");
37
37
  * This is currently only type exported from the package: the symbol is just used as a way to get a named type.
38
38
  * @alpha
39
39
  */
40
-
41
40
  export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
41
+
42
42
  /**
43
43
  * Content which could be inserted into a tree.
44
44
  *
@@ -47,7 +47,6 @@ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
47
47
  * Extended version of {@link InsertableTreeNodeFromImplicitAllowedTypes} that also allows {@link (UnsafeUnknownSchema:type)}.
48
48
  * @alpha
49
49
  */
50
-
51
50
  export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> =
52
51
  TSchema extends ImplicitAllowedTypes
53
52
  ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema>
@@ -16,7 +16,7 @@ export function walkFieldSchema(
16
16
  visitedSet: Set<TreeNodeSchema> = new Set(),
17
17
  ): void {
18
18
  walkAllowedTypes(
19
- normalizeFieldSchema(schema).annotatedAllowedTypesNormalized,
19
+ normalizeFieldSchema(schema).allowedTypesFull.evaluate(),
20
20
  visitor,
21
21
  visitedSet,
22
22
  );