@fluidframework/tree 2.4.0 → 2.5.0

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 (446) hide show
  1. package/.vscode/settings.json +12 -1
  2. package/CHANGELOG.md +371 -0
  3. package/api-report/tree.alpha.api.md +271 -80
  4. package/api-report/tree.beta.api.md +100 -51
  5. package/api-report/tree.legacy.alpha.api.md +99 -50
  6. package/api-report/tree.legacy.public.api.md +99 -50
  7. package/api-report/tree.public.api.md +99 -50
  8. package/dist/alpha.d.ts +32 -2
  9. package/dist/beta.d.ts +6 -0
  10. package/dist/codec/codec.d.ts +24 -0
  11. package/dist/codec/codec.d.ts.map +1 -1
  12. package/dist/codec/codec.js +26 -1
  13. package/dist/codec/codec.js.map +1 -1
  14. package/dist/codec/index.d.ts +1 -1
  15. package/dist/codec/index.d.ts.map +1 -1
  16. package/dist/codec/index.js +2 -1
  17. package/dist/codec/index.js.map +1 -1
  18. package/dist/core/rebase/index.d.ts +2 -2
  19. package/dist/core/rebase/index.d.ts.map +1 -1
  20. package/dist/core/rebase/index.js +2 -2
  21. package/dist/core/rebase/index.js.map +1 -1
  22. package/dist/core/rebase/types.d.ts +0 -4
  23. package/dist/core/rebase/types.d.ts.map +1 -1
  24. package/dist/core/rebase/types.js +1 -7
  25. package/dist/core/rebase/types.js.map +1 -1
  26. package/dist/core/rebase/utils.d.ts +1 -0
  27. package/dist/core/rebase/utils.d.ts.map +1 -1
  28. package/dist/core/rebase/utils.js +29 -4
  29. package/dist/core/rebase/utils.js.map +1 -1
  30. package/dist/events/interop.d.ts +1 -7
  31. package/dist/events/interop.d.ts.map +1 -1
  32. package/dist/events/interop.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
  34. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  36. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  37. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +8 -1
  38. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  39. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  40. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +2 -1
  41. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  42. package/dist/feature-libraries/flex-tree/lazyNode.js +3 -0
  43. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  44. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  45. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  46. package/dist/feature-libraries/treeCursorUtils.js +2 -2
  47. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  48. package/dist/index.d.ts +4 -4
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +12 -7
  51. package/dist/index.js.map +1 -1
  52. package/dist/internalTypes.d.ts +1 -1
  53. package/dist/internalTypes.d.ts.map +1 -1
  54. package/dist/internalTypes.js.map +1 -1
  55. package/dist/legacy.d.ts +6 -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 +6 -0
  60. package/dist/shared-tree/independentView.d.ts +57 -0
  61. package/dist/shared-tree/independentView.d.ts.map +1 -0
  62. package/dist/shared-tree/independentView.js +89 -0
  63. package/dist/shared-tree/independentView.js.map +1 -0
  64. package/dist/shared-tree/index.d.ts +3 -1
  65. package/dist/shared-tree/index.d.ts.map +1 -1
  66. package/dist/shared-tree/index.js +6 -1
  67. package/dist/shared-tree/index.js.map +1 -1
  68. package/dist/shared-tree/schematizingTreeView.d.ts +12 -8
  69. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  70. package/dist/shared-tree/schematizingTreeView.js +28 -0
  71. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  72. package/dist/shared-tree/sharedTree.d.ts +10 -7
  73. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  74. package/dist/shared-tree/sharedTree.js.map +1 -1
  75. package/dist/shared-tree/treeApi.d.ts +6 -6
  76. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  77. package/dist/shared-tree/treeApi.js.map +1 -1
  78. package/dist/shared-tree/treeApiAlpha.d.ts +147 -0
  79. package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -0
  80. package/dist/shared-tree/treeApiAlpha.js +122 -0
  81. package/dist/shared-tree/treeApiAlpha.js.map +1 -0
  82. package/dist/shared-tree/treeCheckout.d.ts +12 -7
  83. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  84. package/dist/shared-tree/treeCheckout.js +11 -4
  85. package/dist/shared-tree/treeCheckout.js.map +1 -1
  86. package/dist/shared-tree-core/editManager.d.ts +13 -6
  87. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  88. package/dist/shared-tree-core/editManager.js +80 -33
  89. package/dist/shared-tree-core/editManager.js.map +1 -1
  90. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
  91. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  92. package/dist/shared-tree-core/sharedTreeCore.js +28 -3
  93. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  94. package/dist/simple-tree/api/conciseTree.d.ts +2 -1
  95. package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
  96. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  97. package/dist/simple-tree/api/create.d.ts +6 -24
  98. package/dist/simple-tree/api/create.d.ts.map +1 -1
  99. package/dist/simple-tree/api/create.js +4 -19
  100. package/dist/simple-tree/api/create.js.map +1 -1
  101. package/dist/simple-tree/api/customTree.d.ts +1 -0
  102. package/dist/simple-tree/api/customTree.d.ts.map +1 -1
  103. package/dist/simple-tree/api/customTree.js +2 -2
  104. package/dist/simple-tree/api/customTree.js.map +1 -1
  105. package/dist/simple-tree/api/index.d.ts +7 -7
  106. package/dist/simple-tree/api/index.d.ts.map +1 -1
  107. package/dist/simple-tree/api/index.js +10 -2
  108. package/dist/simple-tree/api/index.js.map +1 -1
  109. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +25 -27
  110. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  111. package/dist/simple-tree/api/schemaCreationUtilities.js +31 -21
  112. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  113. package/dist/simple-tree/api/schemaFactory.d.ts +16 -12
  114. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  115. package/dist/simple-tree/api/schemaFactory.js +4 -0
  116. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  117. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  118. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  119. package/dist/simple-tree/api/storedSchema.js +2 -2
  120. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  121. package/dist/simple-tree/api/testRecursiveDomain.d.ts +5 -5
  122. package/dist/simple-tree/api/tree.d.ts +122 -5
  123. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  124. package/dist/simple-tree/api/tree.js +12 -4
  125. package/dist/simple-tree/api/tree.js.map +1 -1
  126. package/dist/simple-tree/api/treeApiBeta.d.ts +8 -5
  127. package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  128. package/dist/simple-tree/api/treeApiBeta.js +3 -15
  129. package/dist/simple-tree/api/treeApiBeta.js.map +1 -1
  130. package/dist/simple-tree/api/typesUnsafe.d.ts +69 -17
  131. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  132. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  133. package/dist/simple-tree/api/verboseTree.d.ts +3 -0
  134. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  135. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  136. package/dist/simple-tree/arrayNode.d.ts +15 -4
  137. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  138. package/dist/simple-tree/arrayNode.js +1 -1
  139. package/dist/simple-tree/arrayNode.js.map +1 -1
  140. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  141. package/dist/simple-tree/core/treeNodeSchema.d.ts +51 -11
  142. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  143. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  144. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +2 -1
  145. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  146. package/dist/simple-tree/core/unhydratedFlexTree.js +3 -0
  147. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  148. package/dist/simple-tree/core/withType.d.ts +2 -1
  149. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  150. package/dist/simple-tree/core/withType.js.map +1 -1
  151. package/dist/simple-tree/createContext.js +2 -2
  152. package/dist/simple-tree/createContext.js.map +1 -1
  153. package/dist/simple-tree/index.d.ts +6 -6
  154. package/dist/simple-tree/index.d.ts.map +1 -1
  155. package/dist/simple-tree/index.js +15 -5
  156. package/dist/simple-tree/index.js.map +1 -1
  157. package/dist/simple-tree/leafNodeSchema.d.ts +6 -5
  158. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  159. package/dist/simple-tree/leafNodeSchema.js +3 -0
  160. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  161. package/dist/simple-tree/mapNode.d.ts +1 -1
  162. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  163. package/dist/simple-tree/mapNode.js +6 -0
  164. package/dist/simple-tree/mapNode.js.map +1 -1
  165. package/dist/simple-tree/objectNode.d.ts +4 -2
  166. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  167. package/dist/simple-tree/objectNode.js.map +1 -1
  168. package/dist/simple-tree/schemaTypes.d.ts +210 -18
  169. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  170. package/dist/simple-tree/schemaTypes.js +66 -1
  171. package/dist/simple-tree/schemaTypes.js.map +1 -1
  172. package/dist/simple-tree/toMapTree.d.ts +4 -2
  173. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  174. package/dist/simple-tree/toMapTree.js.map +1 -1
  175. package/dist/simple-tree/{toFlexSchema.d.ts → toStoredSchema.d.ts} +1 -1
  176. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -0
  177. package/dist/simple-tree/{toFlexSchema.js → toStoredSchema.js} +1 -1
  178. package/dist/simple-tree/toStoredSchema.js.map +1 -0
  179. package/dist/simple-tree/treeNodeValid.d.ts +5 -1
  180. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  181. package/dist/simple-tree/treeNodeValid.js +7 -1
  182. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  183. package/dist/util/index.d.ts +3 -2
  184. package/dist/util/index.d.ts.map +1 -1
  185. package/dist/util/index.js +3 -1
  186. package/dist/util/index.js.map +1 -1
  187. package/dist/util/typeCheck.d.ts +9 -0
  188. package/dist/util/typeCheck.d.ts.map +1 -1
  189. package/dist/util/typeCheck.js.map +1 -1
  190. package/dist/util/typeUtils.d.ts +61 -0
  191. package/dist/util/typeUtils.d.ts.map +1 -1
  192. package/dist/util/typeUtils.js +27 -0
  193. package/dist/util/typeUtils.js.map +1 -1
  194. package/dist/util/utils.d.ts +7 -3
  195. package/dist/util/utils.d.ts.map +1 -1
  196. package/dist/util/utils.js +13 -3
  197. package/dist/util/utils.js.map +1 -1
  198. package/lib/alpha.d.ts +32 -2
  199. package/lib/beta.d.ts +6 -0
  200. package/lib/codec/codec.d.ts +24 -0
  201. package/lib/codec/codec.d.ts.map +1 -1
  202. package/lib/codec/codec.js +25 -0
  203. package/lib/codec/codec.js.map +1 -1
  204. package/lib/codec/index.d.ts +1 -1
  205. package/lib/codec/index.d.ts.map +1 -1
  206. package/lib/codec/index.js +1 -1
  207. package/lib/codec/index.js.map +1 -1
  208. package/lib/core/rebase/index.d.ts +2 -2
  209. package/lib/core/rebase/index.d.ts.map +1 -1
  210. package/lib/core/rebase/index.js +2 -2
  211. package/lib/core/rebase/index.js.map +1 -1
  212. package/lib/core/rebase/types.d.ts +0 -4
  213. package/lib/core/rebase/types.d.ts.map +1 -1
  214. package/lib/core/rebase/types.js +0 -5
  215. package/lib/core/rebase/types.js.map +1 -1
  216. package/lib/core/rebase/utils.d.ts +1 -0
  217. package/lib/core/rebase/utils.d.ts.map +1 -1
  218. package/lib/core/rebase/utils.js +27 -3
  219. package/lib/core/rebase/utils.js.map +1 -1
  220. package/lib/events/interop.d.ts +1 -7
  221. package/lib/events/interop.d.ts.map +1 -1
  222. package/lib/events/interop.js.map +1 -1
  223. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
  224. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  225. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  226. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  227. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +8 -1
  228. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  229. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  230. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +2 -1
  231. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  232. package/lib/feature-libraries/flex-tree/lazyNode.js +3 -0
  233. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  234. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  235. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  236. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  237. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  238. package/lib/index.d.ts +4 -4
  239. package/lib/index.d.ts.map +1 -1
  240. package/lib/index.js +4 -3
  241. package/lib/index.js.map +1 -1
  242. package/lib/internalTypes.d.ts +1 -1
  243. package/lib/internalTypes.d.ts.map +1 -1
  244. package/lib/internalTypes.js.map +1 -1
  245. package/lib/legacy.d.ts +6 -0
  246. package/lib/packageVersion.d.ts +1 -1
  247. package/lib/packageVersion.js +1 -1
  248. package/lib/packageVersion.js.map +1 -1
  249. package/lib/public.d.ts +6 -0
  250. package/lib/shared-tree/independentView.d.ts +57 -0
  251. package/lib/shared-tree/independentView.d.ts.map +1 -0
  252. package/lib/shared-tree/independentView.js +84 -0
  253. package/lib/shared-tree/independentView.js.map +1 -0
  254. package/lib/shared-tree/index.d.ts +3 -1
  255. package/lib/shared-tree/index.d.ts.map +1 -1
  256. package/lib/shared-tree/index.js +2 -0
  257. package/lib/shared-tree/index.js.map +1 -1
  258. package/lib/shared-tree/schematizingTreeView.d.ts +12 -8
  259. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  260. package/lib/shared-tree/schematizingTreeView.js +29 -1
  261. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  262. package/lib/shared-tree/sharedTree.d.ts +10 -7
  263. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  264. package/lib/shared-tree/sharedTree.js.map +1 -1
  265. package/lib/shared-tree/treeApi.d.ts +6 -6
  266. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  267. package/lib/shared-tree/treeApi.js.map +1 -1
  268. package/lib/shared-tree/treeApiAlpha.d.ts +147 -0
  269. package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -0
  270. package/lib/shared-tree/treeApiAlpha.js +119 -0
  271. package/lib/shared-tree/treeApiAlpha.js.map +1 -0
  272. package/lib/shared-tree/treeCheckout.d.ts +12 -7
  273. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  274. package/lib/shared-tree/treeCheckout.js +11 -4
  275. package/lib/shared-tree/treeCheckout.js.map +1 -1
  276. package/lib/shared-tree-core/editManager.d.ts +13 -6
  277. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  278. package/lib/shared-tree-core/editManager.js +80 -33
  279. package/lib/shared-tree-core/editManager.js.map +1 -1
  280. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
  281. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  282. package/lib/shared-tree-core/sharedTreeCore.js +29 -4
  283. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  284. package/lib/simple-tree/api/conciseTree.d.ts +2 -1
  285. package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
  286. package/lib/simple-tree/api/conciseTree.js.map +1 -1
  287. package/lib/simple-tree/api/create.d.ts +6 -24
  288. package/lib/simple-tree/api/create.d.ts.map +1 -1
  289. package/lib/simple-tree/api/create.js +2 -16
  290. package/lib/simple-tree/api/create.js.map +1 -1
  291. package/lib/simple-tree/api/customTree.d.ts +1 -0
  292. package/lib/simple-tree/api/customTree.d.ts.map +1 -1
  293. package/lib/simple-tree/api/customTree.js +2 -2
  294. package/lib/simple-tree/api/customTree.js.map +1 -1
  295. package/lib/simple-tree/api/index.d.ts +7 -7
  296. package/lib/simple-tree/api/index.d.ts.map +1 -1
  297. package/lib/simple-tree/api/index.js +6 -4
  298. package/lib/simple-tree/api/index.js.map +1 -1
  299. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +25 -27
  300. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  301. package/lib/simple-tree/api/schemaCreationUtilities.js +30 -19
  302. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  303. package/lib/simple-tree/api/schemaFactory.d.ts +16 -12
  304. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  305. package/lib/simple-tree/api/schemaFactory.js +4 -0
  306. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  307. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  308. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  309. package/lib/simple-tree/api/storedSchema.js +1 -1
  310. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  311. package/lib/simple-tree/api/testRecursiveDomain.d.ts +5 -5
  312. package/lib/simple-tree/api/tree.d.ts +122 -5
  313. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  314. package/lib/simple-tree/api/tree.js +9 -2
  315. package/lib/simple-tree/api/tree.js.map +1 -1
  316. package/lib/simple-tree/api/treeApiBeta.d.ts +8 -5
  317. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  318. package/lib/simple-tree/api/treeApiBeta.js +4 -16
  319. package/lib/simple-tree/api/treeApiBeta.js.map +1 -1
  320. package/lib/simple-tree/api/typesUnsafe.d.ts +69 -17
  321. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  322. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  323. package/lib/simple-tree/api/verboseTree.d.ts +3 -0
  324. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  325. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  326. package/lib/simple-tree/arrayNode.d.ts +15 -4
  327. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  328. package/lib/simple-tree/arrayNode.js +1 -1
  329. package/lib/simple-tree/arrayNode.js.map +1 -1
  330. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  331. package/lib/simple-tree/core/treeNodeSchema.d.ts +51 -11
  332. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  333. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  334. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +2 -1
  335. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  336. package/lib/simple-tree/core/unhydratedFlexTree.js +4 -1
  337. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  338. package/lib/simple-tree/core/withType.d.ts +2 -1
  339. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  340. package/lib/simple-tree/core/withType.js.map +1 -1
  341. package/lib/simple-tree/createContext.js +1 -1
  342. package/lib/simple-tree/createContext.js.map +1 -1
  343. package/lib/simple-tree/index.d.ts +6 -6
  344. package/lib/simple-tree/index.d.ts.map +1 -1
  345. package/lib/simple-tree/index.js +5 -5
  346. package/lib/simple-tree/index.js.map +1 -1
  347. package/lib/simple-tree/leafNodeSchema.d.ts +6 -5
  348. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  349. package/lib/simple-tree/leafNodeSchema.js +3 -0
  350. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  351. package/lib/simple-tree/mapNode.d.ts +1 -1
  352. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  353. package/lib/simple-tree/mapNode.js +6 -0
  354. package/lib/simple-tree/mapNode.js.map +1 -1
  355. package/lib/simple-tree/objectNode.d.ts +4 -2
  356. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  357. package/lib/simple-tree/objectNode.js.map +1 -1
  358. package/lib/simple-tree/schemaTypes.d.ts +210 -18
  359. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  360. package/lib/simple-tree/schemaTypes.js +64 -1
  361. package/lib/simple-tree/schemaTypes.js.map +1 -1
  362. package/lib/simple-tree/toMapTree.d.ts +4 -2
  363. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  364. package/lib/simple-tree/toMapTree.js.map +1 -1
  365. package/lib/simple-tree/{toFlexSchema.d.ts → toStoredSchema.d.ts} +1 -1
  366. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -0
  367. package/lib/simple-tree/{toFlexSchema.js → toStoredSchema.js} +1 -1
  368. package/lib/simple-tree/toStoredSchema.js.map +1 -0
  369. package/lib/simple-tree/treeNodeValid.d.ts +5 -1
  370. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  371. package/lib/simple-tree/treeNodeValid.js +7 -1
  372. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  373. package/lib/util/index.d.ts +3 -2
  374. package/lib/util/index.d.ts.map +1 -1
  375. package/lib/util/index.js +1 -0
  376. package/lib/util/index.js.map +1 -1
  377. package/lib/util/typeCheck.d.ts +9 -0
  378. package/lib/util/typeCheck.d.ts.map +1 -1
  379. package/lib/util/typeCheck.js.map +1 -1
  380. package/lib/util/typeUtils.d.ts +61 -0
  381. package/lib/util/typeUtils.d.ts.map +1 -1
  382. package/lib/util/typeUtils.js +25 -1
  383. package/lib/util/typeUtils.js.map +1 -1
  384. package/lib/util/utils.d.ts +7 -3
  385. package/lib/util/utils.d.ts.map +1 -1
  386. package/lib/util/utils.js +13 -3
  387. package/lib/util/utils.js.map +1 -1
  388. package/package.json +55 -30
  389. package/src/codec/codec.ts +25 -0
  390. package/src/codec/index.ts +1 -0
  391. package/src/core/rebase/index.ts +1 -1
  392. package/src/core/rebase/types.ts +0 -12
  393. package/src/core/rebase/utils.ts +35 -3
  394. package/src/events/interop.ts +1 -12
  395. package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
  396. package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
  397. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +9 -0
  398. package/src/feature-libraries/flex-tree/lazyNode.ts +5 -0
  399. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  400. package/src/feature-libraries/treeCursorUtils.ts +2 -2
  401. package/src/index.ts +36 -6
  402. package/src/internalTypes.ts +4 -0
  403. package/src/packageVersion.ts +1 -1
  404. package/src/shared-tree/independentView.ts +176 -0
  405. package/src/shared-tree/index.ts +9 -1
  406. package/src/shared-tree/schematizingTreeView.ts +64 -13
  407. package/src/shared-tree/sharedTree.ts +29 -9
  408. package/src/shared-tree/treeApi.ts +19 -9
  409. package/src/shared-tree/treeApiAlpha.ts +401 -0
  410. package/src/shared-tree/treeCheckout.ts +28 -5
  411. package/src/shared-tree-core/editManager.ts +126 -59
  412. package/src/shared-tree-core/sharedTreeCore.ts +37 -8
  413. package/src/simple-tree/api/conciseTree.ts +2 -1
  414. package/src/simple-tree/api/create.ts +33 -65
  415. package/src/simple-tree/api/customTree.ts +3 -2
  416. package/src/simple-tree/api/index.ts +19 -8
  417. package/src/simple-tree/api/schemaCreationUtilities.ts +59 -37
  418. package/src/simple-tree/api/schemaFactory.ts +28 -12
  419. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +3 -3
  420. package/src/simple-tree/api/storedSchema.ts +1 -1
  421. package/src/simple-tree/api/tree.ts +152 -7
  422. package/src/simple-tree/api/treeApiBeta.ts +35 -31
  423. package/src/simple-tree/api/typesUnsafe.ts +125 -30
  424. package/src/simple-tree/api/verboseTree.ts +3 -0
  425. package/src/simple-tree/arrayNode.ts +38 -17
  426. package/src/simple-tree/core/getOrCreateNode.ts +1 -1
  427. package/src/simple-tree/core/treeNodeSchema.ts +107 -34
  428. package/src/simple-tree/core/unhydratedFlexTree.ts +6 -0
  429. package/src/simple-tree/core/withType.ts +2 -1
  430. package/src/simple-tree/createContext.ts +1 -1
  431. package/src/simple-tree/index.ts +34 -3
  432. package/src/simple-tree/leafNodeSchema.ts +6 -1
  433. package/src/simple-tree/mapNode.ts +13 -4
  434. package/src/simple-tree/objectNode.ts +5 -3
  435. package/src/simple-tree/schemaTypes.ts +342 -36
  436. package/src/simple-tree/toMapTree.ts +4 -1
  437. package/src/simple-tree/treeNodeValid.ts +11 -1
  438. package/src/util/index.ts +7 -0
  439. package/src/util/typeCheck.ts +13 -0
  440. package/src/util/typeUtils.ts +87 -0
  441. package/src/util/utils.ts +20 -7
  442. package/dist/simple-tree/toFlexSchema.d.ts.map +0 -1
  443. package/dist/simple-tree/toFlexSchema.js.map +0 -1
  444. package/lib/simple-tree/toFlexSchema.d.ts.map +0 -1
  445. package/lib/simple-tree/toFlexSchema.js.map +0 -1
  446. /package/src/simple-tree/{toFlexSchema.ts → toStoredSchema.ts} +0 -0
@@ -3,10 +3,12 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { InternalTreeNode, Unhydrated } from "./types.js";
6
+ import type { TreeLeafValue } from "../schemaTypes.js";
7
+ import type { InternalTreeNode, TreeNode, Unhydrated } from "./types.js";
7
8
 
8
9
  /**
9
- * Schema for a tree node.
10
+ * Schema for a {@link TreeNode} or {@link TreeLeafValue}.
11
+ *
10
12
  * @typeParam Name - The full (including scope) name/identifier for the schema.
11
13
  * @typeParam Kind - Which kind of node this schema is for.
12
14
  * @typeParam TNode - API for nodes that use this schema.
@@ -14,17 +16,21 @@ import type { InternalTreeNode, Unhydrated } from "./types.js";
14
16
  * @typeParam Info - Data used when defining this schema.
15
17
  * @remarks
16
18
  * Captures the schema both as runtime data and compile time type information.
19
+ * Use {@link SchemaFactory} to define schema.
20
+ * Use `Tree.schema(value)` to lookup the schema for a {@link TreeNode} or {@link TreeLeafValue}.
17
21
  * @sealed @public
18
22
  */
19
23
  export type TreeNodeSchema<
20
24
  Name extends string = string,
21
25
  Kind extends NodeKind = NodeKind,
22
- TNode = unknown,
26
+ TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue,
23
27
  TBuild = never,
24
28
  ImplicitlyConstructable extends boolean = boolean,
25
29
  Info = unknown,
26
30
  > =
27
- | TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>
31
+ | (TNode extends TreeNode
32
+ ? TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>
33
+ : never)
28
34
  | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
29
35
 
30
36
  /**
@@ -35,16 +41,30 @@ export type TreeNodeSchema<
35
41
  * Non-class based schema can have issues with recursive types due to https://github.com/microsoft/TypeScript/issues/55832.
36
42
  * @system @sealed @public
37
43
  */
38
- export interface TreeNodeSchemaNonClass<
39
- out Name extends string = string,
40
- out Kind extends NodeKind = NodeKind,
41
- out TNode = unknown,
42
- in TInsertable = never,
43
- out ImplicitlyConstructable extends boolean = boolean,
44
- out Info = unknown,
45
- > extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
46
- create(data: TInsertable): TNode;
47
- }
44
+ export type TreeNodeSchemaNonClass<
45
+ Name extends string = string,
46
+ Kind extends NodeKind = NodeKind,
47
+ TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue,
48
+ TInsertable = never,
49
+ ImplicitlyConstructable extends boolean = boolean,
50
+ Info = unknown,
51
+ TConstructorExtra = never,
52
+ > = TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info, TInsertable> &
53
+ (undefined extends TConstructorExtra
54
+ ? {
55
+ /**
56
+ * Constructs an {@link Unhydrated} node with this schema.
57
+ * @sealed
58
+ */
59
+ create(data?: TInsertable | TConstructorExtra): TNode;
60
+ }
61
+ : {
62
+ /**
63
+ * Constructs an {@link Unhydrated} node with this schema.
64
+ * @sealed
65
+ */
66
+ create(data: TInsertable | TConstructorExtra): TNode;
67
+ });
48
68
 
49
69
  /**
50
70
  * Tree node schema which is implemented using a class.
@@ -91,23 +111,40 @@ export interface TreeNodeSchemaNonClass<
91
111
  * ```
92
112
  * @sealed @public
93
113
  */
94
- export interface TreeNodeSchemaClass<
95
- out Name extends string = string,
96
- out Kind extends NodeKind = NodeKind,
97
- out TNode = unknown,
98
- in TInsertable = never,
99
- out ImplicitlyConstructable extends boolean = boolean,
100
- out Info = unknown,
101
- > extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
102
- /**
103
- * Constructs an {@link Unhydrated} node with this schema.
104
- * @remarks
105
- * This constructor is also used internally to construct hydrated nodes with a different parameter type.
106
- * Therefore, overriding this constructor with different argument types is not type-safe and is not supported.
107
- * @sealed
108
- */
109
- new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
110
- }
114
+ export type TreeNodeSchemaClass<
115
+ Name extends string = string,
116
+ Kind extends NodeKind = NodeKind,
117
+ TNode extends TreeNode = TreeNode,
118
+ TInsertable = never,
119
+ ImplicitlyConstructable extends boolean = boolean,
120
+ Info = unknown,
121
+ TConstructorExtra = never,
122
+ > = TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info, TInsertable> &
123
+ (undefined extends TConstructorExtra
124
+ ? {
125
+ /**
126
+ * Constructs an {@link Unhydrated} node with this schema.
127
+ * @remarks
128
+ * This constructor is also used internally to construct hydrated nodes with a different parameter type.
129
+ * Therefore, overriding this constructor with different argument types is not type-safe and is not supported.
130
+ * @sealed
131
+ */
132
+ // The approach suggested by the linter here is more concise, but ir break intellisense for the constructor.
133
+ // eslint-disable-next-line @typescript-eslint/prefer-function-type
134
+ new (data?: TInsertable | InternalTreeNode | TConstructorExtra): Unhydrated<TNode>;
135
+ }
136
+ : {
137
+ /**
138
+ * Constructs an {@link Unhydrated} node with this schema.
139
+ * @remarks
140
+ * This constructor is also used internally to construct hydrated nodes with a different parameter type.
141
+ * Therefore, overriding this constructor with different argument types is not type-safe and is not supported.
142
+ * @sealed
143
+ */
144
+ // The approach suggested by the linter here is more concise, but ir break intellisense for the constructor.
145
+ // eslint-disable-next-line @typescript-eslint/prefer-function-type
146
+ new (data: TInsertable | InternalTreeNode | TConstructorExtra): Unhydrated<TNode>;
147
+ });
111
148
 
112
149
  /**
113
150
  * Internal helper for utilities that return schema which can be used in class and non class formats depending on the API exposing it.
@@ -115,12 +152,29 @@ export interface TreeNodeSchemaClass<
115
152
  export type TreeNodeSchemaBoth<
116
153
  Name extends string = string,
117
154
  Kind extends NodeKind = NodeKind,
118
- TNode = unknown,
155
+ TNode extends TreeNode = TreeNode,
119
156
  TInsertable = never,
120
157
  ImplicitlyConstructable extends boolean = boolean,
121
158
  Info = unknown,
122
- > = TreeNodeSchemaClass<Name, Kind, TNode, TInsertable, ImplicitlyConstructable, Info> &
123
- TreeNodeSchemaNonClass<Name, Kind, TNode, TInsertable, ImplicitlyConstructable, Info>;
159
+ TConstructorExtra = never,
160
+ > = TreeNodeSchemaClass<
161
+ Name,
162
+ Kind,
163
+ TNode,
164
+ TInsertable,
165
+ ImplicitlyConstructable,
166
+ Info,
167
+ TConstructorExtra
168
+ > &
169
+ TreeNodeSchemaNonClass<
170
+ Name,
171
+ Kind,
172
+ TNode,
173
+ TInsertable,
174
+ ImplicitlyConstructable,
175
+ Info,
176
+ TConstructorExtra
177
+ >;
124
178
 
125
179
  /**
126
180
  * Data common to all tree node schema.
@@ -133,6 +187,7 @@ export interface TreeNodeSchemaCore<
133
187
  out Kind extends NodeKind,
134
188
  out ImplicitlyConstructable extends boolean,
135
189
  out Info = unknown,
190
+ out TInsertable = never,
136
191
  > {
137
192
  /**
138
193
  * Unique (within a document's schema) identifier used to associate nodes with their schema.
@@ -188,6 +243,24 @@ export interface TreeNodeSchemaCore<
188
243
  * @system
189
244
  */
190
245
  readonly childTypes: ReadonlySet<TreeNodeSchema>;
246
+
247
+ /**
248
+ * Constructs an instance of this node type.
249
+ * @remarks
250
+ * Due to TypeScript limitations, the return type of this method can not be very specific.
251
+ * For {@link TreeNodeSchemaClass} prefer using the constructor directly for better typing.
252
+ * For {@link TreeNodeSchemaNonClass} use `create`.
253
+ *
254
+ * @privateRemarks
255
+ * This method signature provides a way to infer `TInsertable` without relying on the constructor, and to construct nodes from schema of unknown kind.
256
+ * This makes customizations of the constructor not impact the typing of insertable content, allowing customization of the constructor,
257
+ * as long as doing so only adds additional supported cases.
258
+ *
259
+ * This cannot be required to return `TNode`:
260
+ * doing so breaks sub-classing of schema since they don't overload this method with a more specific return type.
261
+ * @sealed @system
262
+ */
263
+ createFromInsertable(data: TInsertable): Unhydrated<TreeNode | TreeLeafValue>;
191
264
  }
192
265
 
193
266
  /**
@@ -15,6 +15,7 @@ import {
15
15
  type FieldKindIdentifier,
16
16
  type FieldUpPath,
17
17
  forbiddenFieldKindIdentifier,
18
+ type ITreeCursorSynchronous,
18
19
  type MapTree,
19
20
  type SchemaPolicy,
20
21
  type TreeNodeSchemaIdentifier,
@@ -39,6 +40,7 @@ import {
39
40
  type FlexFieldKind,
40
41
  FieldKinds,
41
42
  type SequenceFieldEditBuilder,
43
+ cursorForMapTreeNode,
42
44
  } from "../../feature-libraries/index.js";
43
45
  import type { Context } from "./context.js";
44
46
  import { createEmitter, type Listenable } from "../../events/index.js";
@@ -168,6 +170,10 @@ export class UnhydratedFlexTreeNode implements UnhydratedFlexTreeNode {
168
170
  return this.location;
169
171
  }
170
172
 
173
+ public borrowCursor(): ITreeCursorSynchronous {
174
+ return cursorForMapTreeNode(this.mapTree);
175
+ }
176
+
171
177
  public tryGetField(key: FieldKey): UnhydratedFlexTreeField | undefined {
172
178
  const field = this.mapTree.fields.get(key);
173
179
  // Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { NodeKind, TreeNodeSchemaClass } from "./treeNodeSchema.js";
7
+ import type { TreeNode } from "./types.js";
7
8
 
8
9
  /**
9
10
  * The type of a {@link TreeNode}.
@@ -87,5 +88,5 @@ export interface WithType<
87
88
  /**
88
89
  * Type symbol, marking a type in a way to increase type safety via strong type checking.
89
90
  */
90
- get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
91
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode, never, boolean, TInfo>;
91
92
  }
@@ -7,7 +7,7 @@ import { defaultSchemaPolicy } from "../feature-libraries/index.js";
7
7
  import { getOrCreate } from "../util/index.js";
8
8
  import { Context, UnhydratedContext } from "./core/index.js";
9
9
  import { normalizeFieldSchema, type ImplicitFieldSchema } from "./schemaTypes.js";
10
- import { toStoredSchema } from "./toFlexSchema.js";
10
+ import { toStoredSchema } from "./toStoredSchema.js";
11
11
 
12
12
  const contextCache: WeakMap<ImplicitFieldSchema, Context> = new WeakMap();
13
13
 
@@ -23,6 +23,7 @@ export {
23
23
  HydratedContext,
24
24
  SimpleContextSlot,
25
25
  getOrCreateInnerNode,
26
+ getKernel,
26
27
  } from "./core/index.js";
27
28
  export {
28
29
  type ITree,
@@ -40,7 +41,6 @@ export {
40
41
  adaptEnum,
41
42
  enumFromStrings,
42
43
  singletonSchema,
43
- typedObjectValues,
44
44
  test_RecursiveObject,
45
45
  test_RecursiveObject_base,
46
46
  test_RecursiveObjectPojoMode,
@@ -92,6 +92,21 @@ export {
92
92
  type NodeBuilderDataUnsafe,
93
93
  type NodeFromSchemaUnsafe,
94
94
  type ReadonlyMapInlined,
95
+ type TreeNodeSchemaClassUnsafe,
96
+ type TreeNodeSchemaUnsafe,
97
+ type AllowedTypesUnsafe,
98
+ type TreeNodeSchemaNonClassUnsafe,
99
+ type InsertableTreeNodeFromAllowedTypesUnsafe,
100
+ type TreeViewAlpha,
101
+ type TreeBranch,
102
+ type TreeBranchEvents,
103
+ tryGetSchema,
104
+ applySchemaToParserOptions,
105
+ cursorFromVerbose,
106
+ verboseFromCursor,
107
+ conciseFromCursor,
108
+ createFromCursor,
109
+ asTreeViewAlpha,
95
110
  } from "./api/index.js";
96
111
  export {
97
112
  type NodeFromSchema,
@@ -111,8 +126,18 @@ export {
111
126
  type DefaultProvider,
112
127
  type FieldProps,
113
128
  normalizeFieldSchema,
129
+ areFieldSchemaEqual,
130
+ areImplicitFieldSchemaEqual,
114
131
  type ApplyKind,
115
132
  type FieldSchemaMetadata,
133
+ type InsertableField,
134
+ type Insertable,
135
+ type UnsafeUnknownSchema,
136
+ type ApplyKindInput,
137
+ type InsertableTreeNodeFromAllowedTypes,
138
+ type Input,
139
+ type ReadableField,
140
+ type ReadSchema,
116
141
  } from "./schemaTypes.js";
117
142
  export {
118
143
  getTreeNodeForField,
@@ -122,6 +147,7 @@ export {
122
147
  TreeArrayNode,
123
148
  IterableTreeArrayContent,
124
149
  type TreeArrayNodeBase,
150
+ type ReadonlyArrayNode,
125
151
  } from "./arrayNode.js";
126
152
  export {
127
153
  type FieldHasDefault,
@@ -131,8 +157,13 @@ export {
131
157
  setField,
132
158
  } from "./objectNode.js";
133
159
  export type { TreeMapNode, MapNodeInsertableData } from "./mapNode.js";
134
- export { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
135
- export { toStoredSchema, getStoredSchema } from "./toFlexSchema.js";
160
+ export {
161
+ mapTreeFromNodeData,
162
+ type InsertableContent,
163
+ type FactoryContent,
164
+ type FactoryContentObject,
165
+ } from "./toMapTree.js";
166
+ export { toStoredSchema, getStoredSchema } from "./toStoredSchema.js";
136
167
  export {
137
168
  numberSchema,
138
169
  stringSchema,
@@ -40,6 +40,10 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
40
40
  return data;
41
41
  }
42
42
 
43
+ public createFromInsertable(data: TreeValue<T>): TreeValue<T> {
44
+ return data;
45
+ }
46
+
43
47
  public constructor(name: Name, t: T) {
44
48
  this.identifier = name;
45
49
  this.info = t;
@@ -56,7 +60,8 @@ function makeLeaf<Name extends string, const T extends ValueSchema>(
56
60
  `com.fluidframework.leaf.${Name}`,
57
61
  NodeKind.Leaf,
58
62
  TreeValue<T>,
59
- TreeValue<T>
63
+ TreeValue<T>,
64
+ true
60
65
  > {
61
66
  // Names in this domain follow https://en.wikipedia.org/wiki/Reverse_domain_name_notation
62
67
  return new LeafNodeSchema(`com.fluidframework.leaf.${name}`, t);
@@ -33,6 +33,7 @@ import {
33
33
  type Context,
34
34
  UnhydratedFlexTreeNode,
35
35
  getOrCreateInnerNode,
36
+ type InternalTreeNode,
36
37
  } from "./core/index.js";
37
38
  import {
38
39
  mapTreeFromNodeData,
@@ -128,7 +129,10 @@ export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTyp
128
129
  ): void;
129
130
  }
130
131
 
131
- const handler: ProxyHandler<TreeMapNode> = {
132
+ // TreeMapNode is invariant over schema type, so for this handler to work with all schema, the only possible type for the schema is `any`.
133
+ // This is not ideal, but no alternatives are possible.
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
+ const handler: ProxyHandler<TreeMapNode<any>> = {
132
136
  getPrototypeOf: () => {
133
137
  return Map.prototype;
134
138
  },
@@ -139,6 +143,10 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
139
143
  > {
140
144
  public static readonly kind = NodeKind.Map;
141
145
 
146
+ public constructor(input?: InternalTreeNode | MapNodeInsertableData<T> | undefined) {
147
+ super(input ?? []);
148
+ }
149
+
142
150
  public [Symbol.iterator](): IterableIterator<[string, TreeNodeFromImplicitAllowedTypes<T>]> {
143
151
  return this.entries();
144
152
  }
@@ -177,7 +185,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
177
185
  const node = this.innerNode;
178
186
  return node.keys();
179
187
  }
180
- public set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T>): TreeMapNode {
188
+ public set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T>): this {
181
189
  const kernel = getKernel(this);
182
190
  const node = this.innerNode;
183
191
  const mapTree = mapTreeFromNodeData(
@@ -244,7 +252,7 @@ export function mapSchema<
244
252
  flexNode: FlexTreeNode,
245
253
  ): TreeNodeValid<T2> {
246
254
  if (useMapPrototype) {
247
- return new Proxy<Schema>(instance as Schema, handler);
255
+ return new Proxy<Schema>(instance as Schema, handler as ProxyHandler<Schema>);
248
256
  }
249
257
  return instance;
250
258
  }
@@ -290,7 +298,8 @@ export function mapSchema<
290
298
  TreeMapNode<T> & WithType<TName, NodeKind.Map>,
291
299
  MapNodeInsertableData<T>,
292
300
  ImplicitlyConstructable,
293
- T
301
+ T,
302
+ undefined
294
303
  > = Schema;
295
304
  return schemaErased;
296
305
  }
@@ -98,6 +98,8 @@ export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSche
98
98
  *
99
99
  * 3. Union of 1 and 2.
100
100
  *
101
+ * @see {@link Input}
102
+ *
101
103
  * @privateRemarks TODO: consider separating these cases into different types.
102
104
  *
103
105
  * @system @public
@@ -107,13 +109,13 @@ export type InsertableObjectFromSchemaRecord<
107
109
  > = FlattenKeys<
108
110
  {
109
111
  readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<
110
- T[Property] & string
112
+ T[Property & string]
111
113
  >;
112
114
  } & {
113
115
  // Field does not have a known default, make it required:
114
- readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false
116
+ readonly [Property in keyof T as FieldHasDefault<T[Property & string]> extends false
115
117
  ? Property
116
- : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
118
+ : never]: InsertableTreeFieldFromImplicitField<T[Property & string]>;
117
119
  }
118
120
  >;
119
121