@fluidframework/tree 2.3.0-288113 → 2.3.1

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 (869) hide show
  1. package/.dependency-cruiser-known-violations.json +28 -40
  2. package/.vscode/Tree.code-workspace +0 -2
  3. package/CHANGELOG.md +92 -0
  4. package/README.md +6 -0
  5. package/alpha.d.ts +11 -0
  6. package/api-extractor/api-extractor-lint-alpha.cjs.json +5 -0
  7. package/api-extractor/api-extractor-lint-alpha.esm.json +5 -0
  8. package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
  9. package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
  10. package/api-extractor/api-extractor.current.json +8 -0
  11. package/api-extractor/api-extractor.legacy.json +4 -0
  12. package/api-extractor.json +1 -1
  13. package/api-report/tree.alpha.api.md +21 -42
  14. package/api-report/tree.beta.api.md +21 -11
  15. package/api-report/tree.legacy.alpha.api.md +562 -0
  16. package/api-report/tree.legacy.public.api.md +559 -0
  17. package/api-report/tree.public.api.md +8 -13
  18. package/dist/alpha.d.ts +102 -0
  19. package/dist/beta.d.ts +6 -2
  20. package/dist/core/index.d.ts +1 -1
  21. package/dist/core/index.d.ts.map +1 -1
  22. package/dist/core/index.js +2 -2
  23. package/dist/core/index.js.map +1 -1
  24. package/dist/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
  25. package/dist/core/revertible.d.ts.map +1 -0
  26. package/dist/core/revertible.js.map +1 -0
  27. package/dist/core/schema-stored/format.d.ts +3 -3
  28. package/dist/core/schema-stored/format.js +1 -1
  29. package/dist/core/schema-stored/format.js.map +1 -1
  30. package/dist/core/schema-stored/schema.d.ts +2 -7
  31. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  32. package/dist/core/schema-stored/schema.js +4 -6
  33. package/dist/core/schema-stored/schema.js.map +1 -1
  34. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  35. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  36. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  37. package/dist/core/tree/anchorSet.js +6 -2
  38. package/dist/core/tree/anchorSet.js.map +1 -1
  39. package/dist/core/tree/detachedFieldIndex.d.ts +0 -1
  40. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  41. package/dist/core/tree/detachedFieldIndex.js +1 -0
  42. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  43. package/dist/core/tree/visitDelta.d.ts +7 -2
  44. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  45. package/dist/core/tree/visitDelta.js.map +1 -1
  46. package/dist/events/emitter.d.ts +127 -0
  47. package/dist/events/emitter.d.ts.map +1 -0
  48. package/dist/events/{events.js → emitter.js} +48 -30
  49. package/dist/events/emitter.js.map +1 -0
  50. package/dist/events/index.d.ts +2 -1
  51. package/dist/events/index.d.ts.map +1 -1
  52. package/dist/events/index.js +4 -5
  53. package/dist/events/index.js.map +1 -1
  54. package/dist/events/interop.d.ts +36 -0
  55. package/dist/events/interop.d.ts.map +1 -0
  56. package/dist/{core/revertible/index.d.ts → events/interop.js} +3 -2
  57. package/dist/events/interop.js.map +1 -0
  58. package/dist/events/listeners.d.ts +65 -0
  59. package/dist/events/listeners.d.ts.map +1 -0
  60. package/{lib/core/revertible/index.d.ts → dist/events/listeners.js} +3 -2
  61. package/dist/events/listeners.js.map +1 -0
  62. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
  63. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  64. package/dist/feature-libraries/chunked-forest/chunkTree.js +36 -15
  65. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  66. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
  67. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/chunkedForest.js +12 -5
  69. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  70. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
  71. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  72. package/dist/feature-libraries/chunked-forest/uniformChunk.js +28 -2
  73. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  74. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
  75. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  76. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
  77. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  78. package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
  79. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/flex-map-tree/index.js +2 -1
  81. package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
  82. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -33
  83. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  84. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -103
  85. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  86. package/dist/feature-libraries/flex-tree/context.d.ts +30 -14
  87. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  88. package/dist/feature-libraries/flex-tree/context.js +10 -7
  89. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  90. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -190
  91. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  92. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -3
  93. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  94. package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
  95. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  96. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  97. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
  98. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  99. package/dist/feature-libraries/flex-tree/lazyEntity.js +2 -10
  100. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  101. package/dist/feature-libraries/flex-tree/lazyField.d.ts +26 -28
  102. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  103. package/dist/feature-libraries/flex-tree/lazyField.js +11 -14
  104. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  105. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
  106. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  107. package/dist/feature-libraries/flex-tree/lazyNode.js +23 -74
  108. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  109. package/dist/feature-libraries/flex-tree/unboxed.d.ts +4 -16
  110. package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  111. package/dist/feature-libraries/flex-tree/unboxed.js +7 -41
  112. package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
  113. package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -2
  114. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  115. package/dist/feature-libraries/flex-tree/utilities.js +3 -6
  116. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  117. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  118. package/dist/feature-libraries/forest-summary/forestSummarizer.js +4 -1
  119. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  120. package/dist/feature-libraries/index.d.ts +3 -5
  121. package/dist/feature-libraries/index.d.ts.map +1 -1
  122. package/dist/feature-libraries/index.js +5 -11
  123. package/dist/feature-libraries/index.js.map +1 -1
  124. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  125. package/dist/feature-libraries/modular-schema/comparison.js +3 -6
  126. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  127. package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
  128. package/dist/feature-libraries/modular-schema/discrepancies.js +3 -13
  129. package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
  130. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
  131. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  132. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
  133. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  134. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
  135. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  136. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
  137. package/dist/feature-libraries/schema-index/format.d.ts +3 -3
  138. package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  139. package/dist/feature-libraries/storedToViewSchema.js +2 -4
  140. package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
  141. package/dist/feature-libraries/typed-schema/flexList.d.ts +3 -3
  142. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  143. package/dist/feature-libraries/typed-schema/index.d.ts +2 -2
  144. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  145. package/dist/feature-libraries/typed-schema/index.js +2 -2
  146. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  147. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  148. package/dist/feature-libraries/typed-schema/schemaCollection.js +8 -10
  149. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  150. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
  151. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  152. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +5 -37
  153. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  154. package/dist/feature-libraries/typed-schema/view.d.ts +4 -6
  155. package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
  156. package/dist/feature-libraries/typed-schema/view.js +5 -4
  157. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  158. package/dist/index.d.ts +4 -4
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +33 -36
  161. package/dist/index.js.map +1 -1
  162. package/dist/legacy.d.ts +83 -0
  163. package/dist/packageVersion.d.ts +1 -1
  164. package/dist/packageVersion.d.ts.map +1 -1
  165. package/dist/packageVersion.js +1 -1
  166. package/dist/packageVersion.js.map +1 -1
  167. package/dist/public.d.ts +0 -1
  168. package/dist/shared-tree/checkoutFlexTreeView.d.ts +53 -0
  169. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
  170. package/dist/shared-tree/{treeView.js → checkoutFlexTreeView.js} +28 -6
  171. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -0
  172. package/dist/shared-tree/index.d.ts +3 -3
  173. package/dist/shared-tree/index.d.ts.map +1 -1
  174. package/dist/shared-tree/index.js +2 -2
  175. package/dist/shared-tree/index.js.map +1 -1
  176. package/dist/shared-tree/schematizeTree.d.ts +15 -4
  177. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  178. package/dist/shared-tree/schematizeTree.js +7 -8
  179. package/dist/shared-tree/schematizeTree.js.map +1 -1
  180. package/dist/shared-tree/schematizingTreeView.d.ts +9 -4
  181. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  182. package/dist/shared-tree/schematizingTreeView.js +25 -12
  183. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  184. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  185. package/dist/shared-tree/sharedTree.js +2 -2
  186. package/dist/shared-tree/sharedTree.js.map +1 -1
  187. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
  188. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  189. package/dist/shared-tree/sharedTreeChangeEnricher.js +6 -2
  190. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  191. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
  192. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  193. package/dist/shared-tree/sharedTreeChangeFamily.js +3 -2
  194. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  195. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
  196. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  197. package/dist/shared-tree/sharedTreeEditBuilder.js +2 -2
  198. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  199. package/dist/shared-tree/treeApi.d.ts +1 -3
  200. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  201. package/dist/shared-tree/treeApi.js +6 -4
  202. package/dist/shared-tree/treeApi.js.map +1 -1
  203. package/dist/shared-tree/treeCheckout.d.ts +2 -13
  204. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  205. package/dist/shared-tree/treeCheckout.js +17 -1
  206. package/dist/shared-tree/treeCheckout.js.map +1 -1
  207. package/dist/shared-tree-core/branch.js +1 -1
  208. package/dist/shared-tree-core/branch.js.map +1 -1
  209. package/dist/simple-tree/api/create.d.ts.map +1 -1
  210. package/dist/simple-tree/api/create.js +1 -1
  211. package/dist/simple-tree/api/create.js.map +1 -1
  212. package/{lib/simple-tree → dist/simple-tree/api}/getJsonSchema.d.ts +1 -1
  213. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -0
  214. package/dist/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
  215. package/dist/simple-tree/api/getJsonSchema.js.map +1 -0
  216. package/{lib/simple-tree → dist/simple-tree/api}/getSimpleSchema.d.ts +1 -1
  217. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
  218. package/dist/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
  219. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -0
  220. package/dist/simple-tree/api/index.d.ts +5 -0
  221. package/dist/simple-tree/api/index.d.ts.map +1 -1
  222. package/dist/simple-tree/api/index.js +7 -1
  223. package/dist/simple-tree/api/index.js.map +1 -1
  224. package/{lib/simple-tree → dist/simple-tree/api}/jsonSchema.d.ts +1 -1
  225. package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -0
  226. package/dist/simple-tree/api/jsonSchema.js.map +1 -0
  227. package/dist/simple-tree/api/schemaFactory.d.ts +45 -14
  228. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  229. package/dist/simple-tree/api/schemaFactory.js +43 -12
  230. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  231. package/dist/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
  232. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -0
  233. package/dist/simple-tree/api/simpleSchema.js.map +1 -0
  234. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
  235. package/dist/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
  236. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
  237. package/dist/simple-tree/api/tree.d.ts +1 -21
  238. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  239. package/dist/simple-tree/api/tree.js +3 -38
  240. package/dist/simple-tree/api/tree.js.map +1 -1
  241. package/dist/simple-tree/api/treeApiBeta.d.ts +79 -0
  242. package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -0
  243. package/dist/simple-tree/api/treeApiBeta.js +26 -0
  244. package/dist/simple-tree/api/treeApiBeta.js.map +1 -0
  245. package/dist/simple-tree/api/treeNodeApi.d.ts +1 -1
  246. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  247. package/dist/simple-tree/api/treeNodeApi.js +21 -19
  248. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  249. package/dist/simple-tree/api/verboseTree.js +2 -2
  250. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  251. package/dist/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
  252. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
  253. package/dist/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
  254. package/{lib/simple-tree → dist/simple-tree/api}/viewSchemaToSimpleSchema.js.map +1 -1
  255. package/dist/simple-tree/arrayNode.d.ts +2 -2
  256. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  257. package/dist/simple-tree/arrayNode.js +30 -21
  258. package/dist/simple-tree/arrayNode.js.map +1 -1
  259. package/dist/simple-tree/core/index.d.ts +3 -3
  260. package/dist/simple-tree/core/index.d.ts.map +1 -1
  261. package/dist/simple-tree/core/index.js +4 -1
  262. package/dist/simple-tree/core/index.js.map +1 -1
  263. package/dist/simple-tree/core/schemaCaching.d.ts +5 -0
  264. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  265. package/dist/simple-tree/core/schemaCaching.js +10 -1
  266. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  267. package/dist/simple-tree/core/treeNodeKernel.d.ts +61 -3
  268. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  269. package/dist/simple-tree/core/treeNodeKernel.js +166 -13
  270. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  271. package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -1
  272. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  273. package/dist/simple-tree/core/types.d.ts +17 -20
  274. package/dist/simple-tree/core/types.d.ts.map +1 -1
  275. package/dist/simple-tree/core/types.js.map +1 -1
  276. package/dist/simple-tree/core/withType.d.ts +3 -2
  277. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  278. package/dist/simple-tree/core/withType.js.map +1 -1
  279. package/dist/simple-tree/index.d.ts +7 -9
  280. package/dist/simple-tree/index.d.ts.map +1 -1
  281. package/dist/simple-tree/index.js +15 -6
  282. package/dist/simple-tree/index.js.map +1 -1
  283. package/dist/simple-tree/leafNodeSchema.d.ts +7 -9
  284. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  285. package/dist/simple-tree/leafNodeSchema.js +13 -11
  286. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  287. package/dist/simple-tree/mapNode.d.ts +1 -1
  288. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  289. package/dist/simple-tree/mapNode.js +38 -29
  290. package/dist/simple-tree/mapNode.js.map +1 -1
  291. package/dist/simple-tree/objectNode.d.ts +9 -7
  292. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  293. package/dist/simple-tree/objectNode.js +37 -31
  294. package/dist/simple-tree/objectNode.js.map +1 -1
  295. package/dist/simple-tree/proxies.d.ts +1 -14
  296. package/dist/simple-tree/proxies.d.ts.map +1 -1
  297. package/dist/simple-tree/proxies.js +12 -15
  298. package/dist/simple-tree/proxies.js.map +1 -1
  299. package/dist/simple-tree/proxyBinding.d.ts +2 -62
  300. package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
  301. package/dist/simple-tree/proxyBinding.js +8 -181
  302. package/dist/simple-tree/proxyBinding.js.map +1 -1
  303. package/dist/simple-tree/schemaTypes.d.ts +7 -7
  304. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  305. package/dist/simple-tree/schemaTypes.js +4 -4
  306. package/dist/simple-tree/schemaTypes.js.map +1 -1
  307. package/dist/simple-tree/toFlexSchema.d.ts +11 -1
  308. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  309. package/dist/simple-tree/toFlexSchema.js +54 -31
  310. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  311. package/dist/simple-tree/toMapTree.d.ts +25 -37
  312. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  313. package/dist/simple-tree/toMapTree.js +53 -16
  314. package/dist/simple-tree/toMapTree.js.map +1 -1
  315. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  316. package/dist/simple-tree/treeNodeValid.js +7 -10
  317. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  318. package/dist/simple-tree/typesUnsafe.d.ts +13 -13
  319. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  320. package/dist/simple-tree/walkSchema.d.ts +26 -0
  321. package/dist/simple-tree/walkSchema.d.ts.map +1 -0
  322. package/dist/simple-tree/walkSchema.js +49 -0
  323. package/dist/simple-tree/walkSchema.js.map +1 -0
  324. package/dist/treeFactory.d.ts +2 -1
  325. package/dist/treeFactory.d.ts.map +1 -1
  326. package/dist/treeFactory.js +2 -1
  327. package/dist/treeFactory.js.map +1 -1
  328. package/dist/util/typeUtils.d.ts +2 -2
  329. package/dist/util/typeUtils.js.map +1 -1
  330. package/legacy.d.ts +11 -0
  331. package/lib/alpha.d.ts +102 -0
  332. package/lib/beta.d.ts +6 -2
  333. package/lib/core/index.d.ts +1 -1
  334. package/lib/core/index.d.ts.map +1 -1
  335. package/lib/core/index.js +1 -1
  336. package/lib/core/index.js.map +1 -1
  337. package/lib/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
  338. package/lib/core/revertible.d.ts.map +1 -0
  339. package/lib/core/revertible.js.map +1 -0
  340. package/lib/core/schema-stored/format.d.ts +3 -3
  341. package/lib/core/schema-stored/format.js +1 -1
  342. package/lib/core/schema-stored/format.js.map +1 -1
  343. package/lib/core/schema-stored/schema.d.ts +2 -7
  344. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  345. package/lib/core/schema-stored/schema.js +4 -6
  346. package/lib/core/schema-stored/schema.js.map +1 -1
  347. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  348. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  349. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  350. package/lib/core/tree/anchorSet.js +6 -2
  351. package/lib/core/tree/anchorSet.js.map +1 -1
  352. package/lib/core/tree/detachedFieldIndex.d.ts +0 -1
  353. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  354. package/lib/core/tree/detachedFieldIndex.js +1 -0
  355. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  356. package/lib/core/tree/visitDelta.d.ts +7 -2
  357. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  358. package/lib/core/tree/visitDelta.js.map +1 -1
  359. package/lib/events/emitter.d.ts +127 -0
  360. package/lib/events/emitter.d.ts.map +1 -0
  361. package/lib/events/{events.js → emitter.js} +48 -29
  362. package/lib/events/emitter.js.map +1 -0
  363. package/lib/events/index.d.ts +2 -1
  364. package/lib/events/index.d.ts.map +1 -1
  365. package/lib/events/index.js +1 -1
  366. package/lib/events/index.js.map +1 -1
  367. package/lib/events/interop.d.ts +36 -0
  368. package/lib/events/interop.d.ts.map +1 -0
  369. package/{src/core/revertible/index.ts → lib/events/interop.js} +2 -2
  370. package/lib/events/interop.js.map +1 -0
  371. package/lib/events/listeners.d.ts +65 -0
  372. package/lib/events/listeners.d.ts.map +1 -0
  373. package/lib/{core/revertible/index.js → events/listeners.js} +2 -2
  374. package/lib/events/listeners.js.map +1 -0
  375. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
  376. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  377. package/lib/feature-libraries/chunked-forest/chunkTree.js +37 -16
  378. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  379. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
  380. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  381. package/lib/feature-libraries/chunked-forest/chunkedForest.js +12 -5
  382. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  383. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
  384. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  385. package/lib/feature-libraries/chunked-forest/uniformChunk.js +28 -2
  386. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  387. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
  388. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  389. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
  390. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  391. package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
  392. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
  393. package/lib/feature-libraries/flex-map-tree/index.js +1 -1
  394. package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
  395. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -33
  396. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  397. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +83 -104
  398. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  399. package/lib/feature-libraries/flex-tree/context.d.ts +30 -14
  400. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  401. package/lib/feature-libraries/flex-tree/context.js +10 -7
  402. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  403. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -190
  404. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  405. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -2
  406. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  407. package/lib/feature-libraries/flex-tree/index.d.ts +2 -3
  408. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  409. package/lib/feature-libraries/flex-tree/index.js +1 -1
  410. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  411. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
  412. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  413. package/lib/feature-libraries/flex-tree/lazyEntity.js +2 -10
  414. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  415. package/lib/feature-libraries/flex-tree/lazyField.d.ts +26 -28
  416. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  417. package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
  418. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  419. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -26
  420. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  421. package/lib/feature-libraries/flex-tree/lazyNode.js +23 -72
  422. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  423. package/lib/feature-libraries/flex-tree/unboxed.d.ts +4 -16
  424. package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  425. package/lib/feature-libraries/flex-tree/unboxed.js +5 -37
  426. package/lib/feature-libraries/flex-tree/unboxed.js.map +1 -1
  427. package/lib/feature-libraries/flex-tree/utilities.d.ts +2 -2
  428. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  429. package/lib/feature-libraries/flex-tree/utilities.js +3 -6
  430. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  431. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  432. package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -1
  433. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  434. package/lib/feature-libraries/index.d.ts +3 -5
  435. package/lib/feature-libraries/index.d.ts.map +1 -1
  436. package/lib/feature-libraries/index.js +5 -5
  437. package/lib/feature-libraries/index.js.map +1 -1
  438. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  439. package/lib/feature-libraries/modular-schema/comparison.js +3 -6
  440. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  441. package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
  442. package/lib/feature-libraries/modular-schema/discrepancies.js +3 -13
  443. package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
  444. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
  445. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  446. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
  447. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  448. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
  449. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  450. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
  451. package/lib/feature-libraries/schema-index/format.d.ts +3 -3
  452. package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  453. package/lib/feature-libraries/storedToViewSchema.js +3 -5
  454. package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
  455. package/lib/feature-libraries/typed-schema/flexList.d.ts +3 -3
  456. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  457. package/lib/feature-libraries/typed-schema/index.d.ts +2 -2
  458. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  459. package/lib/feature-libraries/typed-schema/index.js +2 -2
  460. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  461. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  462. package/lib/feature-libraries/typed-schema/schemaCollection.js +9 -11
  463. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  464. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
  465. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  466. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +5 -36
  467. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  468. package/lib/feature-libraries/typed-schema/view.d.ts +4 -6
  469. package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
  470. package/lib/feature-libraries/typed-schema/view.js +5 -4
  471. package/lib/feature-libraries/typed-schema/view.js.map +1 -1
  472. package/lib/index.d.ts +4 -4
  473. package/lib/index.d.ts.map +1 -1
  474. package/lib/index.js +3 -5
  475. package/lib/index.js.map +1 -1
  476. package/lib/legacy.d.ts +83 -0
  477. package/lib/packageVersion.d.ts +1 -1
  478. package/lib/packageVersion.d.ts.map +1 -1
  479. package/lib/packageVersion.js +1 -1
  480. package/lib/packageVersion.js.map +1 -1
  481. package/lib/public.d.ts +0 -1
  482. package/lib/shared-tree/checkoutFlexTreeView.d.ts +53 -0
  483. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
  484. package/lib/shared-tree/{treeView.js → checkoutFlexTreeView.js} +26 -5
  485. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -0
  486. package/lib/shared-tree/index.d.ts +3 -3
  487. package/lib/shared-tree/index.d.ts.map +1 -1
  488. package/lib/shared-tree/index.js +1 -1
  489. package/lib/shared-tree/index.js.map +1 -1
  490. package/lib/shared-tree/schematizeTree.d.ts +15 -4
  491. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  492. package/lib/shared-tree/schematizeTree.js +8 -9
  493. package/lib/shared-tree/schematizeTree.js.map +1 -1
  494. package/lib/shared-tree/schematizingTreeView.d.ts +9 -4
  495. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  496. package/lib/shared-tree/schematizingTreeView.js +26 -13
  497. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  498. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  499. package/lib/shared-tree/sharedTree.js +2 -2
  500. package/lib/shared-tree/sharedTree.js.map +1 -1
  501. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
  502. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  503. package/lib/shared-tree/sharedTreeChangeEnricher.js +6 -2
  504. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  505. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
  506. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  507. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -2
  508. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  509. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
  510. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  511. package/lib/shared-tree/sharedTreeEditBuilder.js +2 -2
  512. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  513. package/lib/shared-tree/treeApi.d.ts +1 -3
  514. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  515. package/lib/shared-tree/treeApi.js +7 -5
  516. package/lib/shared-tree/treeApi.js.map +1 -1
  517. package/lib/shared-tree/treeCheckout.d.ts +2 -13
  518. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  519. package/lib/shared-tree/treeCheckout.js +18 -2
  520. package/lib/shared-tree/treeCheckout.js.map +1 -1
  521. package/lib/shared-tree-core/branch.js +1 -1
  522. package/lib/shared-tree-core/branch.js.map +1 -1
  523. package/lib/simple-tree/api/create.d.ts.map +1 -1
  524. package/lib/simple-tree/api/create.js +2 -2
  525. package/lib/simple-tree/api/create.js.map +1 -1
  526. package/{dist/simple-tree → lib/simple-tree/api}/getJsonSchema.d.ts +1 -1
  527. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -0
  528. package/lib/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
  529. package/lib/simple-tree/api/getJsonSchema.js.map +1 -0
  530. package/{dist/simple-tree → lib/simple-tree/api}/getSimpleSchema.d.ts +1 -1
  531. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
  532. package/lib/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
  533. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -0
  534. package/lib/simple-tree/api/index.d.ts +5 -0
  535. package/lib/simple-tree/api/index.d.ts.map +1 -1
  536. package/lib/simple-tree/api/index.js +3 -0
  537. package/lib/simple-tree/api/index.js.map +1 -1
  538. package/{dist/simple-tree → lib/simple-tree/api}/jsonSchema.d.ts +1 -1
  539. package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -0
  540. package/lib/simple-tree/api/jsonSchema.js.map +1 -0
  541. package/lib/simple-tree/api/schemaFactory.d.ts +45 -14
  542. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  543. package/lib/simple-tree/api/schemaFactory.js +43 -12
  544. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  545. package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
  546. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -0
  547. package/lib/simple-tree/api/simpleSchema.js.map +1 -0
  548. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
  549. package/lib/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
  550. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
  551. package/lib/simple-tree/api/tree.d.ts +1 -21
  552. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  553. package/lib/simple-tree/api/tree.js +2 -34
  554. package/lib/simple-tree/api/tree.js.map +1 -1
  555. package/lib/simple-tree/api/treeApiBeta.d.ts +79 -0
  556. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -0
  557. package/lib/simple-tree/api/treeApiBeta.js +23 -0
  558. package/lib/simple-tree/api/treeApiBeta.js.map +1 -0
  559. package/lib/simple-tree/api/treeNodeApi.d.ts +1 -1
  560. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  561. package/lib/simple-tree/api/treeNodeApi.js +23 -21
  562. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  563. package/lib/simple-tree/api/verboseTree.js +1 -1
  564. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  565. package/lib/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
  566. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
  567. package/lib/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
  568. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
  569. package/lib/simple-tree/arrayNode.d.ts +2 -2
  570. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  571. package/lib/simple-tree/arrayNode.js +33 -24
  572. package/lib/simple-tree/arrayNode.js.map +1 -1
  573. package/lib/simple-tree/core/index.d.ts +3 -3
  574. package/lib/simple-tree/core/index.d.ts.map +1 -1
  575. package/lib/simple-tree/core/index.js +2 -2
  576. package/lib/simple-tree/core/index.js.map +1 -1
  577. package/lib/simple-tree/core/schemaCaching.d.ts +5 -0
  578. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  579. package/lib/simple-tree/core/schemaCaching.js +8 -0
  580. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  581. package/lib/simple-tree/core/treeNodeKernel.d.ts +61 -3
  582. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  583. package/lib/simple-tree/core/treeNodeKernel.js +156 -5
  584. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  585. package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -1
  586. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  587. package/lib/simple-tree/core/types.d.ts +17 -20
  588. package/lib/simple-tree/core/types.d.ts.map +1 -1
  589. package/lib/simple-tree/core/types.js.map +1 -1
  590. package/lib/simple-tree/core/withType.d.ts +3 -2
  591. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  592. package/lib/simple-tree/core/withType.js.map +1 -1
  593. package/lib/simple-tree/index.d.ts +7 -9
  594. package/lib/simple-tree/index.d.ts.map +1 -1
  595. package/lib/simple-tree/index.js +5 -5
  596. package/lib/simple-tree/index.js.map +1 -1
  597. package/lib/simple-tree/leafNodeSchema.d.ts +7 -9
  598. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  599. package/lib/simple-tree/leafNodeSchema.js +14 -12
  600. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  601. package/lib/simple-tree/mapNode.d.ts +1 -1
  602. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  603. package/lib/simple-tree/mapNode.js +38 -29
  604. package/lib/simple-tree/mapNode.js.map +1 -1
  605. package/lib/simple-tree/objectNode.d.ts +9 -7
  606. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  607. package/lib/simple-tree/objectNode.js +40 -34
  608. package/lib/simple-tree/objectNode.js.map +1 -1
  609. package/lib/simple-tree/proxies.d.ts +1 -14
  610. package/lib/simple-tree/proxies.d.ts.map +1 -1
  611. package/lib/simple-tree/proxies.js +11 -14
  612. package/lib/simple-tree/proxies.js.map +1 -1
  613. package/lib/simple-tree/proxyBinding.d.ts +2 -62
  614. package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
  615. package/lib/simple-tree/proxyBinding.js +6 -174
  616. package/lib/simple-tree/proxyBinding.js.map +1 -1
  617. package/lib/simple-tree/schemaTypes.d.ts +7 -7
  618. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  619. package/lib/simple-tree/schemaTypes.js +4 -4
  620. package/lib/simple-tree/schemaTypes.js.map +1 -1
  621. package/lib/simple-tree/toFlexSchema.d.ts +11 -1
  622. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  623. package/lib/simple-tree/toFlexSchema.js +29 -8
  624. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  625. package/lib/simple-tree/toMapTree.d.ts +25 -37
  626. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  627. package/lib/simple-tree/toMapTree.js +54 -17
  628. package/lib/simple-tree/toMapTree.js.map +1 -1
  629. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  630. package/lib/simple-tree/treeNodeValid.js +8 -11
  631. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  632. package/lib/simple-tree/typesUnsafe.d.ts +13 -13
  633. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  634. package/lib/simple-tree/walkSchema.d.ts +26 -0
  635. package/lib/simple-tree/walkSchema.d.ts.map +1 -0
  636. package/lib/simple-tree/walkSchema.js +43 -0
  637. package/lib/simple-tree/walkSchema.js.map +1 -0
  638. package/lib/treeFactory.d.ts +2 -1
  639. package/lib/treeFactory.d.ts.map +1 -1
  640. package/lib/treeFactory.js +2 -1
  641. package/lib/treeFactory.js.map +1 -1
  642. package/lib/tsdoc-metadata.json +1 -1
  643. package/lib/util/typeUtils.d.ts +2 -2
  644. package/lib/util/typeUtils.js.map +1 -1
  645. package/package.json +57 -25
  646. package/src/core/index.ts +1 -1
  647. package/src/core/{revertible/revertible.ts → revertible.ts} +15 -0
  648. package/src/core/schema-stored/format.ts +1 -1
  649. package/src/core/schema-stored/schema.ts +6 -13
  650. package/src/core/tree/anchorSet.ts +18 -3
  651. package/src/core/tree/detachedFieldIndex.ts +6 -5
  652. package/src/core/tree/visitDelta.ts +7 -2
  653. package/src/events/{events.ts → emitter.ts} +52 -139
  654. package/src/events/index.ts +7 -7
  655. package/src/events/interop.ts +49 -0
  656. package/src/events/listeners.ts +68 -0
  657. package/src/feature-libraries/chunked-forest/chunkTree.ts +63 -18
  658. package/src/feature-libraries/chunked-forest/chunkedForest.ts +18 -4
  659. package/src/feature-libraries/chunked-forest/uniformChunk.ts +33 -0
  660. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +5 -3
  661. package/src/feature-libraries/flex-map-tree/index.ts +1 -0
  662. package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +135 -210
  663. package/src/feature-libraries/flex-tree/README.md +4 -75
  664. package/src/feature-libraries/flex-tree/context.ts +37 -16
  665. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +69 -291
  666. package/src/feature-libraries/flex-tree/index.ts +7 -13
  667. package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
  668. package/src/feature-libraries/flex-tree/lazyField.ts +49 -73
  669. package/src/feature-libraries/flex-tree/lazyNode.ts +25 -154
  670. package/src/feature-libraries/flex-tree/unboxed.ts +9 -68
  671. package/src/feature-libraries/flex-tree/utilities.ts +4 -8
  672. package/src/feature-libraries/forest-summary/forestSummarizer.ts +4 -1
  673. package/src/feature-libraries/index.ts +2 -27
  674. package/src/feature-libraries/modular-schema/comparison.ts +4 -6
  675. package/src/feature-libraries/modular-schema/discrepancies.ts +7 -16
  676. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -1
  677. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -4
  678. package/src/feature-libraries/storedToViewSchema.ts +5 -6
  679. package/src/feature-libraries/typed-schema/flexList.ts +3 -3
  680. package/src/feature-libraries/typed-schema/index.ts +1 -3
  681. package/src/feature-libraries/typed-schema/schemaCollection.ts +15 -17
  682. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +35 -127
  683. package/src/feature-libraries/typed-schema/view.ts +4 -13
  684. package/src/index.ts +4 -8
  685. package/src/packageVersion.ts +1 -1
  686. package/src/shared-tree/checkoutFlexTreeView.ts +89 -0
  687. package/src/shared-tree/index.ts +2 -7
  688. package/src/shared-tree/schematizeTree.ts +23 -12
  689. package/src/shared-tree/schematizingTreeView.ts +34 -24
  690. package/src/shared-tree/sharedTree.ts +6 -1
  691. package/src/shared-tree/sharedTreeChangeEnricher.ts +6 -1
  692. package/src/shared-tree/sharedTreeChangeFamily.ts +7 -1
  693. package/src/shared-tree/sharedTreeEditBuilder.ts +9 -4
  694. package/src/shared-tree/treeApi.ts +10 -10
  695. package/src/shared-tree/treeCheckout.ts +26 -15
  696. package/src/shared-tree-core/branch.ts +1 -1
  697. package/src/simple-tree/ProxyBinding.md +23 -23
  698. package/src/simple-tree/api/create.ts +8 -3
  699. package/src/simple-tree/{getJsonSchema.ts → api/getJsonSchema.ts} +3 -3
  700. package/src/simple-tree/{getSimpleSchema.ts → api/getSimpleSchema.ts} +3 -3
  701. package/src/simple-tree/api/index.ts +20 -0
  702. package/src/simple-tree/{jsonSchema.ts → api/jsonSchema.ts} +1 -1
  703. package/src/simple-tree/api/schemaFactory.ts +44 -13
  704. package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +4 -4
  705. package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +4 -4
  706. package/src/simple-tree/api/tree.ts +2 -71
  707. package/src/simple-tree/api/treeApiBeta.ts +101 -0
  708. package/src/simple-tree/api/treeNodeApi.ts +32 -23
  709. package/src/simple-tree/api/verboseTree.ts +1 -1
  710. package/src/simple-tree/{viewSchemaToSimpleSchema.ts → api/viewSchemaToSimpleSchema.ts} +5 -5
  711. package/src/simple-tree/arrayNode.ts +37 -31
  712. package/src/simple-tree/core/index.ts +4 -1
  713. package/src/simple-tree/core/schemaCaching.ts +10 -0
  714. package/src/simple-tree/core/treeNodeKernel.ts +198 -5
  715. package/src/simple-tree/core/treeNodeSchema.ts +1 -1
  716. package/src/simple-tree/core/types.ts +16 -27
  717. package/src/simple-tree/core/withType.ts +3 -1
  718. package/src/simple-tree/index.ts +29 -21
  719. package/src/simple-tree/leafNodeSchema.ts +24 -28
  720. package/src/simple-tree/mapNode.ts +47 -29
  721. package/src/simple-tree/objectNode.ts +51 -46
  722. package/src/simple-tree/proxies.ts +22 -51
  723. package/src/simple-tree/proxyBinding.ts +3 -254
  724. package/src/simple-tree/schemaTypes.ts +8 -8
  725. package/src/simple-tree/toFlexSchema.ts +40 -7
  726. package/src/simple-tree/toMapTree.ts +113 -79
  727. package/src/simple-tree/treeNodeValid.ts +10 -13
  728. package/src/simple-tree/typesUnsafe.ts +13 -13
  729. package/src/simple-tree/walkSchema.ts +81 -0
  730. package/src/treeFactory.ts +2 -1
  731. package/src/util/typeUtils.ts +2 -2
  732. package/dist/core/revertible/index.d.ts.map +0 -1
  733. package/dist/core/revertible/index.js +0 -10
  734. package/dist/core/revertible/index.js.map +0 -1
  735. package/dist/core/revertible/revertible.d.ts.map +0 -1
  736. package/dist/core/revertible/revertible.js.map +0 -1
  737. package/dist/domains/index.d.ts +0 -8
  738. package/dist/domains/index.d.ts.map +0 -1
  739. package/dist/domains/index.js +0 -20
  740. package/dist/domains/index.js.map +0 -1
  741. package/dist/domains/json/index.d.ts +0 -7
  742. package/dist/domains/json/index.d.ts.map +0 -1
  743. package/dist/domains/json/index.js +0 -17
  744. package/dist/domains/json/index.js.map +0 -1
  745. package/dist/domains/json/jsonCursor.d.ts +0 -52
  746. package/dist/domains/json/jsonCursor.d.ts.map +0 -1
  747. package/dist/domains/json/jsonCursor.js +0 -197
  748. package/dist/domains/json/jsonCursor.js.map +0 -1
  749. package/dist/domains/json/jsonDomainSchema.d.ts +0 -24
  750. package/dist/domains/json/jsonDomainSchema.d.ts.map +0 -1
  751. package/dist/domains/json/jsonDomainSchema.js +0 -32
  752. package/dist/domains/json/jsonDomainSchema.js.map +0 -1
  753. package/dist/domains/leafDomain.d.ts +0 -72
  754. package/dist/domains/leafDomain.d.ts.map +0 -1
  755. package/dist/domains/leafDomain.js +0 -88
  756. package/dist/domains/leafDomain.js.map +0 -1
  757. package/dist/domains/schemaBuilder.d.ts +0 -103
  758. package/dist/domains/schemaBuilder.d.ts.map +0 -1
  759. package/dist/domains/schemaBuilder.js +0 -121
  760. package/dist/domains/schemaBuilder.js.map +0 -1
  761. package/dist/domains/testRecursiveDomain.d.ts +0 -17
  762. package/dist/domains/testRecursiveDomain.d.ts.map +0 -1
  763. package/dist/domains/testRecursiveDomain.js +0 -35
  764. package/dist/domains/testRecursiveDomain.js.map +0 -1
  765. package/dist/events/events.d.ts +0 -207
  766. package/dist/events/events.d.ts.map +0 -1
  767. package/dist/events/events.js.map +0 -1
  768. package/dist/feature-libraries/schemaBuilder.d.ts +0 -31
  769. package/dist/feature-libraries/schemaBuilder.d.ts.map +0 -1
  770. package/dist/feature-libraries/schemaBuilder.js +0 -40
  771. package/dist/feature-libraries/schemaBuilder.js.map +0 -1
  772. package/dist/feature-libraries/schemaBuilderBase.d.ts +0 -191
  773. package/dist/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
  774. package/dist/feature-libraries/schemaBuilderBase.js +0 -201
  775. package/dist/feature-libraries/schemaBuilderBase.js.map +0 -1
  776. package/dist/shared-tree/treeView.d.ts +0 -73
  777. package/dist/shared-tree/treeView.d.ts.map +0 -1
  778. package/dist/shared-tree/treeView.js.map +0 -1
  779. package/dist/simple-tree/getJsonSchema.d.ts.map +0 -1
  780. package/dist/simple-tree/getJsonSchema.js.map +0 -1
  781. package/dist/simple-tree/getSimpleSchema.d.ts.map +0 -1
  782. package/dist/simple-tree/getSimpleSchema.js.map +0 -1
  783. package/dist/simple-tree/jsonSchema.d.ts.map +0 -1
  784. package/dist/simple-tree/jsonSchema.js.map +0 -1
  785. package/dist/simple-tree/simpleSchema.d.ts.map +0 -1
  786. package/dist/simple-tree/simpleSchema.js.map +0 -1
  787. package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
  788. package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
  789. package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
  790. package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +0 -1
  791. package/lib/core/revertible/index.d.ts.map +0 -1
  792. package/lib/core/revertible/index.js.map +0 -1
  793. package/lib/core/revertible/revertible.d.ts.map +0 -1
  794. package/lib/core/revertible/revertible.js.map +0 -1
  795. package/lib/domains/index.d.ts +0 -8
  796. package/lib/domains/index.d.ts.map +0 -1
  797. package/lib/domains/index.js +0 -8
  798. package/lib/domains/index.js.map +0 -1
  799. package/lib/domains/json/index.d.ts +0 -7
  800. package/lib/domains/json/index.d.ts.map +0 -1
  801. package/lib/domains/json/index.js +0 -7
  802. package/lib/domains/json/index.js.map +0 -1
  803. package/lib/domains/json/jsonCursor.d.ts +0 -52
  804. package/lib/domains/json/jsonCursor.d.ts.map +0 -1
  805. package/lib/domains/json/jsonCursor.js +0 -192
  806. package/lib/domains/json/jsonCursor.js.map +0 -1
  807. package/lib/domains/json/jsonDomainSchema.d.ts +0 -24
  808. package/lib/domains/json/jsonDomainSchema.d.ts.map +0 -1
  809. package/lib/domains/json/jsonDomainSchema.js +0 -29
  810. package/lib/domains/json/jsonDomainSchema.js.map +0 -1
  811. package/lib/domains/leafDomain.d.ts +0 -72
  812. package/lib/domains/leafDomain.d.ts.map +0 -1
  813. package/lib/domains/leafDomain.js +0 -85
  814. package/lib/domains/leafDomain.js.map +0 -1
  815. package/lib/domains/schemaBuilder.d.ts +0 -103
  816. package/lib/domains/schemaBuilder.d.ts.map +0 -1
  817. package/lib/domains/schemaBuilder.js +0 -117
  818. package/lib/domains/schemaBuilder.js.map +0 -1
  819. package/lib/domains/testRecursiveDomain.d.ts +0 -17
  820. package/lib/domains/testRecursiveDomain.d.ts.map +0 -1
  821. package/lib/domains/testRecursiveDomain.js +0 -32
  822. package/lib/domains/testRecursiveDomain.js.map +0 -1
  823. package/lib/events/events.d.ts +0 -207
  824. package/lib/events/events.d.ts.map +0 -1
  825. package/lib/events/events.js.map +0 -1
  826. package/lib/feature-libraries/schemaBuilder.d.ts +0 -31
  827. package/lib/feature-libraries/schemaBuilder.d.ts.map +0 -1
  828. package/lib/feature-libraries/schemaBuilder.js +0 -36
  829. package/lib/feature-libraries/schemaBuilder.js.map +0 -1
  830. package/lib/feature-libraries/schemaBuilderBase.d.ts +0 -191
  831. package/lib/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
  832. package/lib/feature-libraries/schemaBuilderBase.js +0 -195
  833. package/lib/feature-libraries/schemaBuilderBase.js.map +0 -1
  834. package/lib/shared-tree/treeView.d.ts +0 -73
  835. package/lib/shared-tree/treeView.d.ts.map +0 -1
  836. package/lib/shared-tree/treeView.js.map +0 -1
  837. package/lib/simple-tree/getJsonSchema.d.ts.map +0 -1
  838. package/lib/simple-tree/getJsonSchema.js.map +0 -1
  839. package/lib/simple-tree/getSimpleSchema.d.ts.map +0 -1
  840. package/lib/simple-tree/getSimpleSchema.js.map +0 -1
  841. package/lib/simple-tree/jsonSchema.d.ts.map +0 -1
  842. package/lib/simple-tree/jsonSchema.js.map +0 -1
  843. package/lib/simple-tree/simpleSchema.d.ts.map +0 -1
  844. package/lib/simple-tree/simpleSchema.js.map +0 -1
  845. package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
  846. package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
  847. package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
  848. package/src/domains/README.md +0 -6
  849. package/src/domains/fence.json +0 -5
  850. package/src/domains/index.ts +0 -19
  851. package/src/domains/json/fence.json +0 -5
  852. package/src/domains/json/index.ts +0 -13
  853. package/src/domains/json/jsonCursor.ts +0 -247
  854. package/src/domains/json/jsonDomainSchema.ts +0 -47
  855. package/src/domains/leafDomain.ts +0 -97
  856. package/src/domains/schemaBuilder.ts +0 -153
  857. package/src/domains/testRecursiveDomain.ts +0 -38
  858. package/src/events/fence.json +0 -5
  859. package/src/feature-libraries/schemaBuilder.ts +0 -45
  860. package/src/feature-libraries/schemaBuilderBase.ts +0 -393
  861. package/src/shared-tree/treeView.ts +0 -113
  862. /package/dist/core/{revertible/revertible.js → revertible.js} +0 -0
  863. /package/dist/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
  864. /package/dist/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
  865. /package/dist/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
  866. /package/lib/core/{revertible/revertible.js → revertible.js} +0 -0
  867. /package/lib/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
  868. /package/lib/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
  869. /package/lib/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
@@ -13,6 +13,7 @@ import {
13
13
  type FieldUpPath,
14
14
  type ITreeCursorSynchronous,
15
15
  type ITreeSubscriptionCursor,
16
+ type TreeFieldStoredSchema,
16
17
  type TreeNavigationResult,
17
18
  inCursorNode,
18
19
  iterateCursorField,
@@ -26,7 +27,7 @@ import {
26
27
  type ValueFieldEditBuilder,
27
28
  } from "../default-schema/index.js";
28
29
  import type { FlexFieldKind } from "../modular-schema/index.js";
29
- import type { FlexAllowedTypes, FlexFieldSchema } from "../typed-schema/index.js";
30
+ import type { FlexFieldSchema } from "../typed-schema/index.js";
30
31
 
31
32
  import type { Context } from "./context.js";
32
33
  import {
@@ -37,8 +38,7 @@ import {
37
38
  type FlexTreeRequiredField,
38
39
  type FlexTreeSequenceField,
39
40
  type FlexTreeTypedField,
40
- type FlexTreeTypedNodeUnion,
41
- type FlexTreeUnboxNodeUnion,
41
+ type FlexTreeUnknownUnboxed,
42
42
  TreeStatus,
43
43
  flexTreeMarker,
44
44
  flexTreeSlot,
@@ -52,7 +52,7 @@ import {
52
52
  tryMoveCursorToAnchorSymbol,
53
53
  } from "./lazyEntity.js";
54
54
  import { type LazyTreeNode, makeTree } from "./lazyNode.js";
55
- import { unboxedUnion } from "./unboxed.js";
55
+ import { unboxedFlexNode } from "./unboxed.js";
56
56
  import { indexForAt, treeStatusFromAnchorCache } from "./utilities.js";
57
57
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
58
58
  import { cursorForMapTreeField, cursorForMapTreeNode } from "../mapTreeCursor.js";
@@ -125,11 +125,8 @@ export function makeField(
125
125
  /**
126
126
  * Base type for fields implementing {@link FlexTreeField} using cursors.
127
127
  */
128
- export abstract class LazyField<
129
- out TKind extends FlexFieldKind,
130
- TTypes extends FlexAllowedTypes,
131
- >
132
- extends LazyEntity<FlexFieldSchema<TKind, TTypes>, FieldAnchor>
128
+ export abstract class LazyField<out TKind extends FlexFieldKind>
129
+ extends LazyEntity<FlexFieldSchema<TKind>, FieldAnchor>
133
130
  implements FlexTreeField
134
131
  {
135
132
  public get [flexTreeMarker](): FlexTreeEntityKind.Field {
@@ -137,6 +134,10 @@ export abstract class LazyField<
137
134
  }
138
135
  public readonly key: FieldKey;
139
136
 
137
+ public get schema(): TreeFieldStoredSchema {
138
+ return this.flexSchema.stored;
139
+ }
140
+
140
141
  /**
141
142
  * If this field ends its lifetime before the Anchor does, this needs to be invoked to avoid a double free
142
143
  * if/when the Anchor is destroyed.
@@ -145,7 +146,7 @@ export abstract class LazyField<
145
146
 
146
147
  public constructor(
147
148
  context: Context,
148
- schema: FlexFieldSchema<TKind, TTypes>,
149
+ schema: FlexFieldSchema<TKind>,
149
150
  cursor: ITreeSubscriptionCursor,
150
151
  fieldAnchor: FieldAnchor,
151
152
  ) {
@@ -164,15 +165,13 @@ export abstract class LazyField<
164
165
  }
165
166
  }
166
167
 
167
- public is<TSchema extends FlexFieldSchema>(
168
- schema: TSchema,
169
- ): this is FlexTreeTypedField<TSchema> {
168
+ public is<TKind2 extends FlexFieldKind>(kind: TKind2): this is FlexTreeTypedField<TKind2> {
170
169
  assert(
171
- this.context.schema.policy.fieldKinds.get(schema.kind.identifier) === schema.kind,
172
- 0x77c /* Narrowing must be done to a kind that exists in this context */,
170
+ this.context.flexSchema.policy.fieldKinds.get(kind.identifier) === kind,
171
+ 0xa26 /* Narrowing must be done to a kind that exists in this context */,
173
172
  );
174
173
 
175
- return this.schema.equals(schema);
174
+ return this.flexSchema.kind === (kind as unknown);
176
175
  }
177
176
 
178
177
  public get parent(): FlexTreeNode | undefined {
@@ -203,13 +202,13 @@ export abstract class LazyField<
203
202
  return this[cursorSymbol].getFieldLength();
204
203
  }
205
204
 
206
- public atIndex(index: number): FlexTreeUnboxNodeUnion<TTypes> {
205
+ public atIndex(index: number): FlexTreeUnknownUnboxed {
207
206
  return inCursorNode(this[cursorSymbol], index, (cursor) =>
208
- unboxedUnion(this.context, this.schema, cursor),
207
+ unboxedFlexNode(this.context, cursor),
209
208
  );
210
209
  }
211
210
 
212
- public boxedAt(index: number): FlexTreeTypedNodeUnion<TTypes> | undefined {
211
+ public boxedAt(index: number): FlexTreeNode | undefined {
213
212
  const finalIndex = indexForAt(index, this.length);
214
213
 
215
214
  if (finalIndex === undefined) {
@@ -218,23 +217,20 @@ export abstract class LazyField<
218
217
 
219
218
  return inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>
220
219
  makeTree(this.context, cursor),
221
- ) as unknown as FlexTreeTypedNodeUnion<TTypes>;
220
+ );
222
221
  }
223
222
 
224
- public map<U>(callbackfn: (value: FlexTreeUnboxNodeUnion<TTypes>, index: number) => U): U[] {
223
+ public map<U>(callbackfn: (value: FlexTreeUnknownUnboxed, index: number) => U): U[] {
225
224
  return Array.from(this, callbackfn);
226
225
  }
227
226
 
228
- public boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<TTypes>> {
229
- return iterateCursorField(
230
- this[cursorSymbol],
231
- (cursor) => makeTree(this.context, cursor) as unknown as FlexTreeTypedNodeUnion<TTypes>,
232
- );
227
+ public boxedIterator(): IterableIterator<FlexTreeNode> {
228
+ return iterateCursorField(this[cursorSymbol], (cursor) => makeTree(this.context, cursor));
233
229
  }
234
230
 
235
- public [Symbol.iterator](): IterableIterator<FlexTreeUnboxNodeUnion<TTypes>> {
231
+ public [Symbol.iterator](): IterableIterator<FlexTreeUnknownUnboxed> {
236
232
  return iterateCursorField(this[cursorSymbol], (cursor) =>
237
- unboxedUnion(this.context, this.schema, cursor),
233
+ unboxedFlexNode(this.context, cursor),
238
234
  );
239
235
  }
240
236
 
@@ -263,20 +259,20 @@ export abstract class LazyField<
263
259
  }
264
260
  }
265
261
 
266
- export class LazySequence<TTypes extends FlexAllowedTypes>
267
- extends LazyField<typeof FieldKinds.sequence, TTypes>
268
- implements FlexTreeSequenceField<TTypes>
262
+ export class LazySequence
263
+ extends LazyField<typeof FieldKinds.sequence>
264
+ implements FlexTreeSequenceField
269
265
  {
270
266
  public constructor(
271
267
  context: Context,
272
- schema: FlexFieldSchema<typeof FieldKinds.sequence, TTypes>,
268
+ schema: FlexFieldSchema<typeof FieldKinds.sequence>,
273
269
  cursor: ITreeSubscriptionCursor,
274
270
  fieldAnchor: FieldAnchor,
275
271
  ) {
276
272
  super(context, schema, cursor, fieldAnchor);
277
273
  }
278
274
 
279
- public at(index: number): FlexTreeUnboxNodeUnion<TTypes> | undefined {
275
+ public at(index: number): FlexTreeUnknownUnboxed | undefined {
280
276
  const finalIndex = indexForAt(index, this.length);
281
277
 
282
278
  if (finalIndex === undefined) {
@@ -284,10 +280,10 @@ export class LazySequence<TTypes extends FlexAllowedTypes>
284
280
  }
285
281
 
286
282
  return inCursorNode(this[cursorSymbol], finalIndex, (cursor) =>
287
- unboxedUnion(this.context, this.schema, cursor),
283
+ unboxedFlexNode(this.context, cursor),
288
284
  );
289
285
  }
290
- public get asArray(): readonly FlexTreeUnboxNodeUnion<TTypes>[] {
286
+ public get asArray(): readonly FlexTreeUnknownUnboxed[] {
291
287
  return this.map((x) => x);
292
288
  }
293
289
 
@@ -306,13 +302,13 @@ export class LazySequence<TTypes extends FlexAllowedTypes>
306
302
  }
307
303
  }
308
304
 
309
- export class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>
310
- extends LazyField<typeof FieldKinds.required, TTypes>
311
- implements FlexTreeRequiredField<TTypes>
305
+ export class ReadonlyLazyValueField
306
+ extends LazyField<typeof FieldKinds.required>
307
+ implements FlexTreeRequiredField
312
308
  {
313
309
  public constructor(
314
310
  context: Context,
315
- schema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,
311
+ schema: FlexFieldSchema<typeof FieldKinds.required>,
316
312
  cursor: ITreeSubscriptionCursor,
317
313
  fieldAnchor: FieldAnchor,
318
314
  ) {
@@ -325,18 +321,15 @@ export class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>
325
321
  },
326
322
  };
327
323
 
328
- public get content(): FlexTreeUnboxNodeUnion<TTypes> {
324
+ public get content(): FlexTreeUnknownUnboxed {
329
325
  return this.atIndex(0);
330
326
  }
331
327
  }
332
328
 
333
- export class LazyValueField<TTypes extends FlexAllowedTypes>
334
- extends ReadonlyLazyValueField<TTypes>
335
- implements FlexTreeRequiredField<TTypes>
336
- {
329
+ export class LazyValueField extends ReadonlyLazyValueField implements FlexTreeRequiredField {
337
330
  public constructor(
338
331
  context: Context,
339
- schema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,
332
+ schema: FlexFieldSchema<typeof FieldKinds.required>,
340
333
  cursor: ITreeSubscriptionCursor,
341
334
  fieldAnchor: FieldAnchor,
342
335
  ) {
@@ -355,32 +348,18 @@ export class LazyValueField<TTypes extends FlexAllowedTypes>
355
348
  return fieldEditor;
356
349
  }
357
350
 
358
- public override get content(): FlexTreeUnboxNodeUnion<TTypes> {
351
+ public override get content(): FlexTreeUnknownUnboxed {
359
352
  return this.atIndex(0);
360
353
  }
361
354
  }
362
355
 
363
- export class LazyIdentifierField<TTypes extends FlexAllowedTypes>
364
- extends ReadonlyLazyValueField<TTypes>
365
- implements FlexTreeRequiredField<TTypes>
366
- {
367
- public constructor(
368
- context: Context,
369
- schema: FlexFieldSchema<typeof FieldKinds.required, TTypes>,
370
- cursor: ITreeSubscriptionCursor,
371
- fieldAnchor: FieldAnchor,
372
- ) {
373
- super(context, schema, cursor, fieldAnchor);
374
- }
375
- }
376
-
377
- export class LazyOptionalField<TTypes extends FlexAllowedTypes>
378
- extends LazyField<typeof FieldKinds.optional, TTypes>
379
- implements FlexTreeOptionalField<TTypes>
356
+ export class LazyOptionalField
357
+ extends LazyField<typeof FieldKinds.optional>
358
+ implements FlexTreeOptionalField
380
359
  {
381
360
  public constructor(
382
361
  context: Context,
383
- schema: FlexFieldSchema<typeof FieldKinds.optional, TTypes>,
362
+ schema: FlexFieldSchema<typeof FieldKinds.optional>,
384
363
  cursor: ITreeSubscriptionCursor,
385
364
  fieldAnchor: FieldAnchor,
386
365
  ) {
@@ -402,33 +381,30 @@ export class LazyOptionalField<TTypes extends FlexAllowedTypes>
402
381
  return fieldEditor;
403
382
  }
404
383
 
405
- public get content(): FlexTreeUnboxNodeUnion<TTypes> | undefined {
384
+ public get content(): FlexTreeUnknownUnboxed | undefined {
406
385
  return this.length === 0 ? undefined : this.atIndex(0);
407
386
  }
408
387
  }
409
388
 
410
- export class LazyForbiddenField<TTypes extends FlexAllowedTypes> extends LazyField<
411
- typeof FieldKinds.forbidden,
412
- TTypes
413
- > {}
389
+ export class LazyForbiddenField extends LazyField<typeof FieldKinds.forbidden> {}
414
390
 
415
- type Builder = new <TTypes extends FlexAllowedTypes>(
391
+ type Builder = new (
416
392
  context: Context,
417
393
  // Correct use of these builders requires the builder of the matching type to be used.
418
394
  // Since this has to be done at runtime anyway, trying to use safer typing than `any` here (such as `never`, which is only slightly safer)
419
395
  // does not seem worth it (ends up requiring type casts that are just as unsafe).
420
396
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
421
- schema: FlexFieldSchema<any, TTypes>,
397
+ schema: FlexFieldSchema<any>,
422
398
  cursor: ITreeSubscriptionCursor,
423
399
  fieldAnchor: FieldAnchor,
424
- ) => LazyField<FlexFieldKind, TTypes>;
400
+ ) => LazyField<FlexFieldKind>;
425
401
 
426
402
  const builderList: [FlexFieldKind, Builder][] = [
427
403
  [FieldKinds.forbidden, LazyForbiddenField],
428
404
  [FieldKinds.optional, LazyOptionalField],
429
405
  [FieldKinds.sequence, LazySequence],
430
406
  [FieldKinds.required, LazyValueField],
431
- [FieldKinds.identifier, LazyIdentifierField],
407
+ [FieldKinds.identifier, LazyValueField],
432
408
  ];
433
409
 
434
410
  const kindToClass: ReadonlyMap<FlexFieldKind, Builder> = new Map(builderList);
@@ -13,35 +13,20 @@ import {
13
13
  type ITreeSubscriptionCursor,
14
14
  type TreeNavigationResult,
15
15
  type TreeNodeSchemaIdentifier,
16
- type TreeValue,
17
16
  type Value,
18
17
  inCursorField,
19
18
  mapCursorFields,
20
19
  rootFieldKey,
21
20
  } from "../../core/index.js";
22
- import { brand, disposeSymbol, fail } from "../../util/index.js";
21
+ import { disposeSymbol, fail } from "../../util/index.js";
23
22
  import { FieldKinds } from "../default-schema/index.js";
24
- import {
25
- Any,
26
- FlexFieldSchema,
27
- type FlexMapNodeSchema,
28
- type FlexTreeNodeSchema,
29
- type LeafNodeSchema,
30
- schemaIsLeaf,
31
- schemaIsMap,
32
- schemaIsObjectNode,
33
- } from "../typed-schema/index.js";
23
+ import { FlexFieldSchema, type FlexTreeNodeSchema } from "../typed-schema/index.js";
34
24
 
35
25
  import type { Context } from "./context.js";
36
26
  import {
37
27
  FlexTreeEntityKind,
38
28
  type FlexTreeField,
39
- type FlexTreeLeafNode,
40
- type FlexTreeMapNode,
41
29
  type FlexTreeNode,
42
- type FlexTreeTypedField,
43
- type FlexTreeTypedNode,
44
- type FlexTreeUnboxField,
45
30
  flexTreeMarker,
46
31
  flexTreeSlot,
47
32
  } from "./flexTreeTypes.js";
@@ -53,7 +38,6 @@ import {
53
38
  tryMoveCursorToAnchorSymbol,
54
39
  } from "./lazyEntity.js";
55
40
  import { makeField } from "./lazyField.js";
56
- import { unboxedField } from "./unboxed.js";
57
41
 
58
42
  /**
59
43
  * @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
@@ -70,8 +54,8 @@ export function makeTree(context: Context, cursor: ITreeSubscriptionCursor): Laz
70
54
  assert(cached instanceof LazyTreeNode, 0x92c /* Expected LazyTreeNode */);
71
55
  return cached as LazyTreeNode;
72
56
  }
73
- const schema = context.schema.nodeSchema.get(cursor.type) ?? fail("missing schema");
74
- return buildSubclass(context, schema, cursor, anchorNode, anchor);
57
+ const schema = context.flexSchema.nodeSchema.get(cursor.type) ?? fail("missing schema");
58
+ return new LazyTreeNode(context, schema, cursor, anchorNode, anchor);
75
59
  }
76
60
 
77
61
  function cleanupTree(anchor: AnchorNode): void {
@@ -80,26 +64,6 @@ function cleanupTree(anchor: AnchorNode): void {
80
64
  cached[disposeSymbol]();
81
65
  }
82
66
 
83
- function buildSubclass(
84
- context: Context,
85
- schema: FlexTreeNodeSchema,
86
- cursor: ITreeSubscriptionCursor,
87
- anchorNode: AnchorNode,
88
- anchor: Anchor,
89
- ): LazyTreeNode {
90
- if (schemaIsMap(schema)) {
91
- return new LazyMap(context, schema, cursor, anchorNode, anchor);
92
- }
93
- if (schemaIsLeaf(schema)) {
94
- return new LazyLeaf(context, schema, cursor, anchorNode, anchor);
95
- }
96
- if (schemaIsObjectNode(schema)) {
97
- return new LazyTreeNode(context, schema, cursor, anchorNode, anchor);
98
- }
99
- // TODO: there should be a common fallback that works for cases without a specialized implementation.
100
- fail("unrecognized node kind");
101
- }
102
-
103
67
  /**
104
68
  * Lazy implementation of {@link FlexTreeNode}.
105
69
  */
@@ -110,10 +74,10 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
110
74
  public get [flexTreeMarker](): FlexTreeEntityKind.Node {
111
75
  return FlexTreeEntityKind.Node;
112
76
  }
113
- /**
114
- * Enumerable own property providing a more JS object friendly alternative to "schema".
115
- */
116
- public readonly type: TreeNodeSchemaIdentifier;
77
+
78
+ public get schema(): TreeNodeSchemaIdentifier {
79
+ return this.flexSchema.name;
80
+ }
117
81
 
118
82
  // Using JS private here prevents it from showing up as a enumerable own property, or conflicting with struct fields.
119
83
  readonly #removeDeleteCallback: () => void;
@@ -131,21 +95,17 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
131
95
  this.#removeDeleteCallback = anchorNode.on("afterDestroy", cleanupTree);
132
96
 
133
97
  assert(
134
- this.context.schema.nodeSchema.get(this.schema.name) !== undefined,
98
+ this.context.flexSchema.nodeSchema.get(this.flexSchema.name) !== undefined,
135
99
  0x784 /* There is no explicit schema for this node type. Ensure that the type is correct and the schema for it was added to the TreeStoredSchema */,
136
100
  );
137
-
138
- this.type = schema.name;
139
101
  }
140
102
 
141
- public is<TSchemaInner extends FlexTreeNodeSchema>(
142
- schema: TSchemaInner,
143
- ): this is FlexTreeTypedNode<TSchemaInner> {
103
+ public is(schema: FlexTreeNodeSchema): boolean {
144
104
  assert(
145
- this.context.schema.nodeSchema.get(schema.name) === schema,
105
+ this.context.flexSchema.nodeSchema.get(schema.name) === schema,
146
106
  0x785 /* Narrowing must be done to a schema that exists in this context */,
147
107
  );
148
- return this.schema === (schema as unknown);
108
+ return this.flexSchema === (schema as unknown);
149
109
  }
150
110
 
151
111
  protected override [tryMoveCursorToAnchorSymbol](
@@ -168,7 +128,7 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
168
128
  }
169
129
 
170
130
  public tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {
171
- const schema = this.schema.getFieldSchema(fieldKey);
131
+ const schema = this.flexSchema.getFieldSchema(fieldKey);
172
132
  return inCursorField(this[cursorSymbol], fieldKey, (cursor) => {
173
133
  if (cursor.getFieldLength() === 0) {
174
134
  return undefined;
@@ -178,12 +138,15 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
178
138
  }
179
139
 
180
140
  public getBoxed(key: FieldKey): FlexTreeField {
181
- return getBoxedField(this, key, this.schema.getFieldSchema(key));
141
+ const fieldSchema = this.flexSchema.getFieldSchema(key);
142
+ return inCursorField(this[cursorSymbol], key, (cursor) => {
143
+ return makeField(this.context, fieldSchema, cursor);
144
+ });
182
145
  }
183
146
 
184
147
  public boxedIterator(): IterableIterator<FlexTreeField> {
185
148
  return mapCursorFields(this[cursorSymbol], (cursor) =>
186
- makeField(this.context, this.schema.getFieldSchema(cursor.getFieldKey()), cursor),
149
+ makeField(this.context, this.flexSchema.getFieldSchema(cursor.getFieldKey()), cursor),
187
150
  ).values();
188
151
  }
189
152
 
@@ -202,11 +165,11 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
202
165
  // Parent field is a detached sequence, and thus needs special handling for its schema.
203
166
  // eslint-disable-next-line unicorn/prefer-ternary
204
167
  if (key === rootFieldKey) {
205
- fieldSchema = this.context.schema.rootFieldSchema;
168
+ fieldSchema = this.context.flexSchema.rootFieldSchema;
206
169
  } else {
207
170
  // All fields (in the flex tree API) have a schema.
208
171
  // Since currently there is no known schema for detached field other than the special default root:
209
- // give all other detached fields a schema of sequence of any.
172
+ // give all other detached fields a schema of sequence of anything.
210
173
  // That schema is the only one that is safe since its the only field schema that allows any possible field content.
211
174
  //
212
175
  // TODO:
@@ -215,16 +178,18 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
215
178
  // 2. Remove (and its inverse) start working on subsequences or fields contents (like everything in a sequence or optional field) and not just single nodes.
216
179
  // 3. Possibly other unknown cases.
217
180
  // Additionally this approach makes it possible for a user to take a FlexTree node, get its parent, check its schema, down cast based on that, then edit that detached field (ex: removing the node in it).
218
- // This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before s3ending the op).
181
+ // This MIGHT work properly with existing merge resolution logic (it must keep client in sync and be unable to violate schema), but this either needs robust testing or to be explicitly banned (error before sending the op).
219
182
  // Issues like replacing a node in the a removed sequenced then undoing the remove could easily violate schema if not everything works exactly right!
220
- fieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [Any]);
183
+ fieldSchema = FlexFieldSchema.create(FieldKinds.sequence, [
184
+ ...this.context.flexSchema.nodeSchema.values(),
185
+ ]);
221
186
  }
222
187
  } else {
223
188
  cursor.exitField();
224
189
  const parentType = cursor.type;
225
190
  cursor.enterField(key);
226
191
  const nodeSchema =
227
- this.context.schema.nodeSchema.get(parentType) ??
192
+ this.context.flexSchema.nodeSchema.get(parentType) ??
228
193
  fail("requested schema that does not exist");
229
194
  fieldSchema = nodeSchema.getFieldSchema(key);
230
195
  }
@@ -234,102 +199,8 @@ export class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTreeNodeSchem
234
199
 
235
200
  return { parent: proxifiedField, index };
236
201
  }
237
- }
238
-
239
- export class LazyMap<TSchema extends FlexMapNodeSchema>
240
- extends LazyTreeNode<TSchema>
241
- implements FlexTreeMapNode<TSchema>
242
- {
243
- public constructor(
244
- context: Context,
245
- schema: TSchema,
246
- cursor: ITreeSubscriptionCursor,
247
- anchorNode: AnchorNode,
248
- anchor: Anchor,
249
- ) {
250
- super(context, schema, cursor, anchorNode, anchor);
251
- }
252
202
 
253
203
  public keys(): IterableIterator<FieldKey> {
254
204
  return mapCursorFields(this[cursorSymbol], (cursor) => cursor.getFieldKey()).values();
255
205
  }
256
-
257
- public values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">> {
258
- return mapCursorFields(
259
- this[cursorSymbol],
260
- (cursor) =>
261
- unboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<
262
- TSchema["info"],
263
- "notEmpty"
264
- >,
265
- ).values();
266
- }
267
-
268
- public entries(): IterableIterator<
269
- [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
270
- > {
271
- return mapCursorFields(this[cursorSymbol], (cursor) => {
272
- const entry: [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">] = [
273
- cursor.getFieldKey(),
274
- unboxedField(this.context, this.schema.info, cursor) as FlexTreeUnboxField<
275
- TSchema["info"],
276
- "notEmpty"
277
- >,
278
- ];
279
- return entry;
280
- }).values();
281
- }
282
-
283
- public forEach(
284
- callbackFn: (
285
- value: FlexTreeUnboxField<TSchema["info"], "notEmpty">,
286
- key: FieldKey,
287
- map: FlexTreeMapNode<TSchema>,
288
- ) => void,
289
- thisArg?: unknown,
290
- ): void {
291
- const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;
292
- for (const [key, value] of this.entries()) {
293
- fn(value, key, this);
294
- }
295
- }
296
-
297
- public override getBoxed(key: string): FlexTreeTypedField<TSchema["info"]> {
298
- return super.getBoxed(brand(key)) as FlexTreeTypedField<TSchema["info"]>;
299
- }
300
-
301
- public [Symbol.iterator](): IterableIterator<
302
- [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
303
- > {
304
- return this.entries();
305
- }
306
- }
307
-
308
- export class LazyLeaf<TSchema extends LeafNodeSchema>
309
- extends LazyTreeNode<TSchema>
310
- implements FlexTreeLeafNode<TSchema>
311
- {
312
- public constructor(
313
- context: Context,
314
- schema: TSchema,
315
- cursor: ITreeSubscriptionCursor,
316
- anchorNode: AnchorNode,
317
- anchor: Anchor,
318
- ) {
319
- super(context, schema, cursor, anchorNode, anchor);
320
- }
321
-
322
- public override get value(): TreeValue<TSchema["info"]> {
323
- return super.value as TreeValue<TSchema["info"]>;
324
- }
325
- }
326
-
327
- function getBoxedField(
328
- objectNode: LazyTreeNode,
329
- key: FieldKey,
330
- fieldSchema: FlexFieldSchema,
331
- ): FlexTreeField {
332
- return inCursorField(objectNode[cursorSymbol], key, (cursor) => {
333
- return makeField(objectNode.context, fieldSchema, cursor);
334
- });
335
206
  }
@@ -3,81 +3,22 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { type ITreeSubscriptionCursor, inCursorNode } from "../../core/index.js";
7
- import { FieldKinds } from "../default-schema/index.js";
8
- import type { FlexFieldKind } from "../modular-schema/index.js";
9
- import {
10
- type FlexAllowedTypes,
11
- type FlexFieldSchema,
12
- type FlexTreeNodeSchema,
13
- schemaIsLeaf,
14
- } from "../typed-schema/index.js";
6
+ import type { ITreeSubscriptionCursor } from "../../core/index.js";
15
7
 
16
8
  import type { Context } from "./context.js";
17
- import type {
18
- FlexTreeNode,
19
- FlexTreeUnboxField,
20
- FlexTreeUnboxNode,
21
- FlexTreeUnboxNodeUnion,
22
- } from "./flexTreeTypes.js";
23
- import { makeField } from "./lazyField.js";
9
+ import type { FlexTreeUnknownUnboxed } from "./flexTreeTypes.js";
24
10
  import { makeTree } from "./lazyNode.js";
25
11
 
26
12
  /**
27
- * See {@link FlexTreeUnboxNode} for documentation on what unwrapping this performs.
13
+ * Returns the flex tree node, of the value if it has one.
28
14
  */
29
- export function unboxedTree<TSchema extends FlexTreeNodeSchema>(
15
+ export function unboxedFlexNode(
30
16
  context: Context,
31
- schema: TSchema,
32
17
  cursor: ITreeSubscriptionCursor,
33
- ): FlexTreeUnboxNode<TSchema> {
34
- if (schemaIsLeaf(schema)) {
35
- return cursor.value as FlexTreeUnboxNode<TSchema>;
18
+ ): FlexTreeUnknownUnboxed {
19
+ const value = cursor.value;
20
+ if (value !== undefined) {
21
+ return value;
36
22
  }
37
-
38
- return makeTree(context, cursor) as FlexTreeNode as FlexTreeUnboxNode<TSchema>;
39
- }
40
-
41
- /**
42
- * See {@link FlexTreeUnboxNodeUnion} for documentation on what unwrapping this performs.
43
- */
44
- export function unboxedUnion<TTypes extends FlexAllowedTypes>(
45
- context: Context,
46
- schema: FlexFieldSchema<FlexFieldKind, TTypes>,
47
- cursor: ITreeSubscriptionCursor,
48
- ): FlexTreeUnboxNodeUnion<TTypes> {
49
- const type = schema.monomorphicChildType;
50
- if (type !== undefined) {
51
- return unboxedTree(context, type, cursor) as FlexTreeUnboxNodeUnion<TTypes>;
52
- }
53
- return makeTree(context, cursor) as FlexTreeUnboxNodeUnion<TTypes>;
54
- }
55
-
56
- /**
57
- * @param context - the common context of the field.
58
- * @param schema - the TreeFieldStoredSchema of the field.
59
- * @param cursor - the cursor, which must point to the field being proxified.
60
- */
61
- export function unboxedField<TSchema extends FlexFieldSchema>(
62
- context: Context,
63
- schema: TSchema,
64
- cursor: ITreeSubscriptionCursor,
65
- ): FlexTreeUnboxField<TSchema> {
66
- const kind = schema.kind;
67
- if (kind === FieldKinds.required) {
68
- return inCursorNode(cursor, 0, (innerCursor) =>
69
- unboxedUnion(context, schema, innerCursor),
70
- ) as FlexTreeUnboxField<TSchema>;
71
- }
72
- if (kind === FieldKinds.optional) {
73
- if (cursor.getFieldLength() === 0) {
74
- return undefined as FlexTreeUnboxField<TSchema>;
75
- }
76
- return inCursorNode(cursor, 0, (innerCursor) =>
77
- unboxedUnion(context, schema, innerCursor),
78
- ) as FlexTreeUnboxField<TSchema>;
79
- }
80
-
81
- // TODO: forbidden and nodeKey
82
- return makeField(context, schema, cursor) as FlexTreeUnboxField<TSchema>;
23
+ return makeTree(context, cursor);
83
24
  }
@@ -78,16 +78,12 @@ export interface DetachedFieldCache {
78
78
  * Utility function to get a {@link SchemaAndPolicy} object from a {@link FlexTreeNode} or {@link FlexTreeField}.
79
79
  * @param nodeOrField - {@link FlexTreeNode} or {@link FlexTreeField} to get the schema and policy from.
80
80
  * @returns A {@link SchemaAndPolicy} object with the stored schema and policy from the node or field provided.
81
- * If the schema information is not available on the given node or field (e.g. because it is an unhydrated node), returns `undefined`.
81
+ * For {@link Unhydrated} nodes this schema may only describe the types allowed subtree for this particular entity.
82
82
  */
83
- export function getSchemaAndPolicy(nodeOrField: FlexTreeEntity): SchemaAndPolicy | undefined {
84
- if (nodeOrField.context === undefined) {
85
- return undefined;
86
- }
87
-
83
+ export function getSchemaAndPolicy(nodeOrField: FlexTreeEntity): SchemaAndPolicy {
88
84
  return {
89
- schema: nodeOrField.context.checkout.storedSchema,
90
- policy: nodeOrField.context.schema.policy,
85
+ schema: nodeOrField.context.schema,
86
+ policy: nodeOrField.context.flexSchema.policy,
91
87
  };
92
88
  }
93
89