@fluidframework/tree 2.2.0 → 2.3.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 (866) 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 -6
  14. package/api-report/tree.beta.api.md +21 -6
  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 +6 -6
  18. package/dist/alpha.d.ts +102 -0
  19. package/dist/beta.d.ts +6 -1
  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 +4 -6
  37. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  38. package/dist/core/tree/anchorSet.js +15 -1
  39. package/dist/core/tree/anchorSet.js.map +1 -1
  40. package/dist/core/tree/detachedFieldIndex.d.ts +0 -1
  41. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  42. package/dist/core/tree/detachedFieldIndex.js +1 -0
  43. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  44. package/dist/core/tree/visitDelta.d.ts +7 -2
  45. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  46. package/dist/core/tree/visitDelta.js.map +1 -1
  47. package/dist/events/emitter.d.ts +127 -0
  48. package/dist/events/emitter.d.ts.map +1 -0
  49. package/dist/events/{events.js → emitter.js} +49 -28
  50. package/dist/events/emitter.js.map +1 -0
  51. package/dist/events/index.d.ts +2 -1
  52. package/dist/events/index.d.ts.map +1 -1
  53. package/dist/events/index.js +4 -5
  54. package/dist/events/index.js.map +1 -1
  55. package/dist/events/interop.d.ts +36 -0
  56. package/dist/events/interop.d.ts.map +1 -0
  57. package/dist/{core/revertible/index.d.ts → events/interop.js} +3 -2
  58. package/dist/events/interop.js.map +1 -0
  59. package/dist/events/listeners.d.ts +65 -0
  60. package/dist/events/listeners.d.ts.map +1 -0
  61. package/{lib/core/revertible/index.d.ts → dist/events/listeners.js} +3 -2
  62. package/dist/events/listeners.js.map +1 -0
  63. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +25 -7
  64. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/chunkTree.js +36 -15
  66. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +4 -2
  68. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/chunkedForest.js +12 -5
  70. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +15 -2
  72. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/uniformChunk.js +28 -2
  74. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  75. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -1
  76. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  77. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +5 -4
  78. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  79. package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
  80. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
  81. package/dist/feature-libraries/flex-map-tree/index.js +2 -1
  82. package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
  83. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +35 -35
  84. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  85. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +82 -115
  86. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  87. package/dist/feature-libraries/flex-tree/context.d.ts +30 -14
  88. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  89. package/dist/feature-libraries/flex-tree/context.js +10 -7
  90. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  91. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +57 -281
  92. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  93. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +15 -32
  94. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  95. package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
  96. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  97. package/dist/feature-libraries/flex-tree/index.js +1 -3
  98. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  99. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +3 -3
  100. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  101. package/dist/feature-libraries/flex-tree/lazyEntity.js +2 -10
  102. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  103. package/dist/feature-libraries/flex-tree/lazyField.d.ts +26 -29
  104. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  105. package/dist/feature-libraries/flex-tree/lazyField.js +11 -17
  106. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  107. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
  108. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  109. package/dist/feature-libraries/flex-tree/lazyNode.js +23 -159
  110. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  111. package/dist/feature-libraries/flex-tree/unboxed.d.ts +4 -16
  112. package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  113. package/dist/feature-libraries/flex-tree/unboxed.js +7 -41
  114. package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
  115. package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -2
  116. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  117. package/dist/feature-libraries/flex-tree/utilities.js +3 -6
  118. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  119. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  120. package/dist/feature-libraries/forest-summary/forestSummarizer.js +4 -1
  121. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  122. package/dist/feature-libraries/index.d.ts +3 -5
  123. package/dist/feature-libraries/index.d.ts.map +1 -1
  124. package/dist/feature-libraries/index.js +5 -13
  125. package/dist/feature-libraries/index.js.map +1 -1
  126. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  127. package/dist/feature-libraries/modular-schema/comparison.js +3 -6
  128. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  129. package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
  130. package/dist/feature-libraries/modular-schema/discrepancies.js +3 -13
  131. package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
  132. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -1
  133. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  134. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -1
  135. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  136. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +12 -5
  137. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  138. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +6 -6
  139. package/dist/feature-libraries/schema-index/format.d.ts +3 -3
  140. package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  141. package/dist/feature-libraries/storedToViewSchema.js +2 -4
  142. package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
  143. package/dist/feature-libraries/typed-schema/flexList.d.ts +3 -3
  144. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  145. package/dist/feature-libraries/typed-schema/index.d.ts +2 -2
  146. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  147. package/dist/feature-libraries/typed-schema/index.js +2 -2
  148. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  149. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  150. package/dist/feature-libraries/typed-schema/schemaCollection.js +8 -10
  151. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  152. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +17 -48
  153. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  154. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +5 -37
  155. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  156. package/dist/feature-libraries/typed-schema/view.d.ts +4 -6
  157. package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
  158. package/dist/feature-libraries/typed-schema/view.js +5 -4
  159. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  160. package/dist/index.d.ts +3 -3
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +3 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/legacy.d.ts +83 -0
  165. package/dist/packageVersion.d.ts +1 -1
  166. package/dist/packageVersion.js +1 -1
  167. package/dist/packageVersion.js.map +1 -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.map +1 -1
  246. package/dist/simple-tree/api/treeNodeApi.js +51 -21
  247. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  248. package/dist/simple-tree/api/verboseTree.js +2 -2
  249. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  250. package/dist/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
  251. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
  252. package/dist/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
  253. package/{lib/simple-tree → dist/simple-tree/api}/viewSchemaToSimpleSchema.js.map +1 -1
  254. package/dist/simple-tree/arrayNode.d.ts +2 -2
  255. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  256. package/dist/simple-tree/arrayNode.js +33 -38
  257. package/dist/simple-tree/arrayNode.js.map +1 -1
  258. package/dist/simple-tree/core/index.d.ts +2 -2
  259. package/dist/simple-tree/core/index.d.ts.map +1 -1
  260. package/dist/simple-tree/core/index.js +4 -1
  261. package/dist/simple-tree/core/index.js.map +1 -1
  262. package/dist/simple-tree/core/schemaCaching.d.ts +5 -0
  263. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  264. package/dist/simple-tree/core/schemaCaching.js +10 -1
  265. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  266. package/dist/simple-tree/core/treeNodeKernel.d.ts +78 -7
  267. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  268. package/dist/simple-tree/core/treeNodeKernel.js +219 -30
  269. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  270. package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -1
  271. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  272. package/dist/simple-tree/core/types.d.ts +23 -8
  273. package/dist/simple-tree/core/types.d.ts.map +1 -1
  274. package/dist/simple-tree/core/types.js.map +1 -1
  275. package/dist/simple-tree/core/withType.d.ts +3 -2
  276. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  277. package/dist/simple-tree/core/withType.js.map +1 -1
  278. package/dist/simple-tree/index.d.ts +7 -9
  279. package/dist/simple-tree/index.d.ts.map +1 -1
  280. package/dist/simple-tree/index.js +15 -6
  281. package/dist/simple-tree/index.js.map +1 -1
  282. package/dist/simple-tree/leafNodeSchema.d.ts +7 -9
  283. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  284. package/dist/simple-tree/leafNodeSchema.js +13 -11
  285. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  286. package/dist/simple-tree/mapNode.d.ts +1 -1
  287. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  288. package/dist/simple-tree/mapNode.js +38 -29
  289. package/dist/simple-tree/mapNode.js.map +1 -1
  290. package/dist/simple-tree/objectNode.d.ts +9 -7
  291. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  292. package/dist/simple-tree/objectNode.js +37 -31
  293. package/dist/simple-tree/objectNode.js.map +1 -1
  294. package/dist/simple-tree/proxies.d.ts +1 -14
  295. package/dist/simple-tree/proxies.d.ts.map +1 -1
  296. package/dist/simple-tree/proxies.js +12 -15
  297. package/dist/simple-tree/proxies.js.map +1 -1
  298. package/dist/simple-tree/proxyBinding.d.ts +2 -62
  299. package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
  300. package/dist/simple-tree/proxyBinding.js +8 -181
  301. package/dist/simple-tree/proxyBinding.js.map +1 -1
  302. package/dist/simple-tree/schemaTypes.d.ts +7 -7
  303. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  304. package/dist/simple-tree/schemaTypes.js +4 -4
  305. package/dist/simple-tree/schemaTypes.js.map +1 -1
  306. package/dist/simple-tree/toFlexSchema.d.ts +11 -1
  307. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  308. package/dist/simple-tree/toFlexSchema.js +54 -31
  309. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  310. package/dist/simple-tree/toMapTree.d.ts +25 -37
  311. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  312. package/dist/simple-tree/toMapTree.js +53 -16
  313. package/dist/simple-tree/toMapTree.js.map +1 -1
  314. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  315. package/dist/simple-tree/treeNodeValid.js +7 -10
  316. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  317. package/dist/simple-tree/typesUnsafe.d.ts +13 -13
  318. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  319. package/dist/simple-tree/walkSchema.d.ts +26 -0
  320. package/dist/simple-tree/walkSchema.d.ts.map +1 -0
  321. package/dist/simple-tree/walkSchema.js +49 -0
  322. package/dist/simple-tree/walkSchema.js.map +1 -0
  323. package/dist/treeFactory.d.ts +2 -1
  324. package/dist/treeFactory.d.ts.map +1 -1
  325. package/dist/treeFactory.js +2 -1
  326. package/dist/treeFactory.js.map +1 -1
  327. package/dist/util/typeUtils.d.ts +2 -2
  328. package/dist/util/typeUtils.js.map +1 -1
  329. package/legacy.d.ts +11 -0
  330. package/lib/alpha.d.ts +102 -0
  331. package/lib/beta.d.ts +6 -1
  332. package/lib/core/index.d.ts +1 -1
  333. package/lib/core/index.d.ts.map +1 -1
  334. package/lib/core/index.js +1 -1
  335. package/lib/core/index.js.map +1 -1
  336. package/lib/core/{revertible/revertible.d.ts → revertible.d.ts} +12 -0
  337. package/lib/core/revertible.d.ts.map +1 -0
  338. package/lib/core/revertible.js.map +1 -0
  339. package/lib/core/schema-stored/format.d.ts +3 -3
  340. package/lib/core/schema-stored/format.js +1 -1
  341. package/lib/core/schema-stored/format.js.map +1 -1
  342. package/lib/core/schema-stored/schema.d.ts +2 -7
  343. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  344. package/lib/core/schema-stored/schema.js +4 -6
  345. package/lib/core/schema-stored/schema.js.map +1 -1
  346. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  347. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  348. package/lib/core/tree/anchorSet.d.ts +4 -6
  349. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  350. package/lib/core/tree/anchorSet.js +15 -1
  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} +49 -27
  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 -35
  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 -116
  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 -281
  404. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  405. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +15 -31
  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 +2 -2
  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 -29
  416. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  417. package/lib/feature-libraries/flex-tree/lazyField.js +11 -16
  418. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  419. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +6 -34
  420. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  421. package/lib/feature-libraries/flex-tree/lazyNode.js +24 -156
  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 +3 -3
  473. package/lib/index.d.ts.map +1 -1
  474. package/lib/index.js +3 -1
  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.js +1 -1
  479. package/lib/packageVersion.js.map +1 -1
  480. package/lib/shared-tree/checkoutFlexTreeView.d.ts +53 -0
  481. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -0
  482. package/lib/shared-tree/{treeView.js → checkoutFlexTreeView.js} +26 -5
  483. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -0
  484. package/lib/shared-tree/index.d.ts +3 -3
  485. package/lib/shared-tree/index.d.ts.map +1 -1
  486. package/lib/shared-tree/index.js +1 -1
  487. package/lib/shared-tree/index.js.map +1 -1
  488. package/lib/shared-tree/schematizeTree.d.ts +15 -4
  489. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  490. package/lib/shared-tree/schematizeTree.js +8 -9
  491. package/lib/shared-tree/schematizeTree.js.map +1 -1
  492. package/lib/shared-tree/schematizingTreeView.d.ts +9 -4
  493. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  494. package/lib/shared-tree/schematizingTreeView.js +26 -13
  495. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  496. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  497. package/lib/shared-tree/sharedTree.js +2 -2
  498. package/lib/shared-tree/sharedTree.js.map +1 -1
  499. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +3 -1
  500. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  501. package/lib/shared-tree/sharedTreeChangeEnricher.js +6 -2
  502. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  503. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -1
  504. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  505. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -2
  506. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  507. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -1
  508. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  509. package/lib/shared-tree/sharedTreeEditBuilder.js +2 -2
  510. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  511. package/lib/shared-tree/treeApi.d.ts +1 -3
  512. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  513. package/lib/shared-tree/treeApi.js +7 -5
  514. package/lib/shared-tree/treeApi.js.map +1 -1
  515. package/lib/shared-tree/treeCheckout.d.ts +2 -13
  516. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  517. package/lib/shared-tree/treeCheckout.js +18 -2
  518. package/lib/shared-tree/treeCheckout.js.map +1 -1
  519. package/lib/shared-tree-core/branch.js +1 -1
  520. package/lib/shared-tree-core/branch.js.map +1 -1
  521. package/lib/simple-tree/api/create.d.ts.map +1 -1
  522. package/lib/simple-tree/api/create.js +2 -2
  523. package/lib/simple-tree/api/create.js.map +1 -1
  524. package/{dist/simple-tree → lib/simple-tree/api}/getJsonSchema.d.ts +1 -1
  525. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -0
  526. package/lib/simple-tree/{getJsonSchema.js → api/getJsonSchema.js} +1 -1
  527. package/lib/simple-tree/api/getJsonSchema.js.map +1 -0
  528. package/{dist/simple-tree → lib/simple-tree/api}/getSimpleSchema.d.ts +1 -1
  529. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -0
  530. package/lib/simple-tree/{getSimpleSchema.js → api/getSimpleSchema.js} +1 -1
  531. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -0
  532. package/lib/simple-tree/api/index.d.ts +5 -0
  533. package/lib/simple-tree/api/index.d.ts.map +1 -1
  534. package/lib/simple-tree/api/index.js +3 -0
  535. package/lib/simple-tree/api/index.js.map +1 -1
  536. package/{dist/simple-tree → lib/simple-tree/api}/jsonSchema.d.ts +1 -1
  537. package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -0
  538. package/lib/simple-tree/api/jsonSchema.js.map +1 -0
  539. package/lib/simple-tree/api/schemaFactory.d.ts +45 -14
  540. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  541. package/lib/simple-tree/api/schemaFactory.js +43 -12
  542. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  543. package/lib/simple-tree/{simpleSchema.d.ts → api/simpleSchema.d.ts} +4 -4
  544. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -0
  545. package/lib/simple-tree/api/simpleSchema.js.map +1 -0
  546. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -0
  547. package/lib/simple-tree/{simpleSchemaToJsonSchema.js → api/simpleSchemaToJsonSchema.js} +4 -4
  548. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -0
  549. package/lib/simple-tree/api/tree.d.ts +1 -21
  550. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  551. package/lib/simple-tree/api/tree.js +2 -34
  552. package/lib/simple-tree/api/tree.js.map +1 -1
  553. package/lib/simple-tree/api/treeApiBeta.d.ts +79 -0
  554. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -0
  555. package/lib/simple-tree/api/treeApiBeta.js +23 -0
  556. package/lib/simple-tree/api/treeApiBeta.js.map +1 -0
  557. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  558. package/lib/simple-tree/api/treeNodeApi.js +53 -23
  559. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  560. package/lib/simple-tree/api/verboseTree.js +1 -1
  561. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  562. package/lib/simple-tree/{viewSchemaToSimpleSchema.d.ts → api/viewSchemaToSimpleSchema.d.ts} +1 -1
  563. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -0
  564. package/lib/simple-tree/{viewSchemaToSimpleSchema.js → api/viewSchemaToSimpleSchema.js} +4 -4
  565. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -0
  566. package/lib/simple-tree/arrayNode.d.ts +2 -2
  567. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  568. package/lib/simple-tree/arrayNode.js +36 -41
  569. package/lib/simple-tree/arrayNode.js.map +1 -1
  570. package/lib/simple-tree/core/index.d.ts +2 -2
  571. package/lib/simple-tree/core/index.d.ts.map +1 -1
  572. package/lib/simple-tree/core/index.js +2 -2
  573. package/lib/simple-tree/core/index.js.map +1 -1
  574. package/lib/simple-tree/core/schemaCaching.d.ts +5 -0
  575. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  576. package/lib/simple-tree/core/schemaCaching.js +8 -0
  577. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  578. package/lib/simple-tree/core/treeNodeKernel.d.ts +78 -7
  579. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  580. package/lib/simple-tree/core/treeNodeKernel.js +211 -24
  581. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  582. package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -1
  583. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  584. package/lib/simple-tree/core/types.d.ts +23 -8
  585. package/lib/simple-tree/core/types.d.ts.map +1 -1
  586. package/lib/simple-tree/core/types.js.map +1 -1
  587. package/lib/simple-tree/core/withType.d.ts +3 -2
  588. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  589. package/lib/simple-tree/core/withType.js.map +1 -1
  590. package/lib/simple-tree/index.d.ts +7 -9
  591. package/lib/simple-tree/index.d.ts.map +1 -1
  592. package/lib/simple-tree/index.js +5 -5
  593. package/lib/simple-tree/index.js.map +1 -1
  594. package/lib/simple-tree/leafNodeSchema.d.ts +7 -9
  595. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  596. package/lib/simple-tree/leafNodeSchema.js +14 -12
  597. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  598. package/lib/simple-tree/mapNode.d.ts +1 -1
  599. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  600. package/lib/simple-tree/mapNode.js +38 -29
  601. package/lib/simple-tree/mapNode.js.map +1 -1
  602. package/lib/simple-tree/objectNode.d.ts +9 -7
  603. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  604. package/lib/simple-tree/objectNode.js +40 -34
  605. package/lib/simple-tree/objectNode.js.map +1 -1
  606. package/lib/simple-tree/proxies.d.ts +1 -14
  607. package/lib/simple-tree/proxies.d.ts.map +1 -1
  608. package/lib/simple-tree/proxies.js +11 -14
  609. package/lib/simple-tree/proxies.js.map +1 -1
  610. package/lib/simple-tree/proxyBinding.d.ts +2 -62
  611. package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
  612. package/lib/simple-tree/proxyBinding.js +6 -174
  613. package/lib/simple-tree/proxyBinding.js.map +1 -1
  614. package/lib/simple-tree/schemaTypes.d.ts +7 -7
  615. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  616. package/lib/simple-tree/schemaTypes.js +4 -4
  617. package/lib/simple-tree/schemaTypes.js.map +1 -1
  618. package/lib/simple-tree/toFlexSchema.d.ts +11 -1
  619. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  620. package/lib/simple-tree/toFlexSchema.js +29 -8
  621. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  622. package/lib/simple-tree/toMapTree.d.ts +25 -37
  623. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  624. package/lib/simple-tree/toMapTree.js +54 -17
  625. package/lib/simple-tree/toMapTree.js.map +1 -1
  626. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  627. package/lib/simple-tree/treeNodeValid.js +8 -11
  628. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  629. package/lib/simple-tree/typesUnsafe.d.ts +13 -13
  630. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  631. package/lib/simple-tree/walkSchema.d.ts +26 -0
  632. package/lib/simple-tree/walkSchema.d.ts.map +1 -0
  633. package/lib/simple-tree/walkSchema.js +43 -0
  634. package/lib/simple-tree/walkSchema.js.map +1 -0
  635. package/lib/treeFactory.d.ts +2 -1
  636. package/lib/treeFactory.d.ts.map +1 -1
  637. package/lib/treeFactory.js +2 -1
  638. package/lib/treeFactory.js.map +1 -1
  639. package/lib/tsdoc-metadata.json +1 -1
  640. package/lib/util/typeUtils.d.ts +2 -2
  641. package/lib/util/typeUtils.js.map +1 -1
  642. package/package.json +58 -36
  643. package/src/core/index.ts +1 -1
  644. package/src/core/{revertible/revertible.ts → revertible.ts} +15 -0
  645. package/src/core/schema-stored/format.ts +1 -1
  646. package/src/core/schema-stored/schema.ts +6 -13
  647. package/src/core/tree/anchorSet.ts +35 -9
  648. package/src/core/tree/detachedFieldIndex.ts +6 -5
  649. package/src/core/tree/visitDelta.ts +7 -2
  650. package/src/events/{events.ts → emitter.ts} +55 -134
  651. package/src/events/index.ts +7 -7
  652. package/src/events/interop.ts +49 -0
  653. package/src/events/listeners.ts +68 -0
  654. package/src/feature-libraries/chunked-forest/chunkTree.ts +63 -18
  655. package/src/feature-libraries/chunked-forest/chunkedForest.ts +18 -4
  656. package/src/feature-libraries/chunked-forest/uniformChunk.ts +33 -0
  657. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +5 -3
  658. package/src/feature-libraries/flex-map-tree/index.ts +1 -0
  659. package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +135 -231
  660. package/src/feature-libraries/flex-tree/README.md +4 -75
  661. package/src/feature-libraries/flex-tree/context.ts +37 -16
  662. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +69 -458
  663. package/src/feature-libraries/flex-tree/index.ts +7 -29
  664. package/src/feature-libraries/flex-tree/lazyEntity.ts +2 -11
  665. package/src/feature-libraries/flex-tree/lazyField.ts +49 -79
  666. package/src/feature-libraries/flex-tree/lazyNode.ts +26 -306
  667. package/src/feature-libraries/flex-tree/unboxed.ts +9 -68
  668. package/src/feature-libraries/flex-tree/utilities.ts +4 -8
  669. package/src/feature-libraries/forest-summary/forestSummarizer.ts +4 -1
  670. package/src/feature-libraries/index.ts +2 -41
  671. package/src/feature-libraries/modular-schema/comparison.ts +4 -6
  672. package/src/feature-libraries/modular-schema/discrepancies.ts +7 -16
  673. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -1
  674. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +14 -4
  675. package/src/feature-libraries/storedToViewSchema.ts +5 -6
  676. package/src/feature-libraries/typed-schema/flexList.ts +3 -3
  677. package/src/feature-libraries/typed-schema/index.ts +1 -3
  678. package/src/feature-libraries/typed-schema/schemaCollection.ts +15 -17
  679. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +35 -127
  680. package/src/feature-libraries/typed-schema/view.ts +4 -13
  681. package/src/index.ts +5 -1
  682. package/src/packageVersion.ts +1 -1
  683. package/src/shared-tree/checkoutFlexTreeView.ts +89 -0
  684. package/src/shared-tree/index.ts +2 -7
  685. package/src/shared-tree/schematizeTree.ts +23 -12
  686. package/src/shared-tree/schematizingTreeView.ts +34 -24
  687. package/src/shared-tree/sharedTree.ts +6 -1
  688. package/src/shared-tree/sharedTreeChangeEnricher.ts +6 -1
  689. package/src/shared-tree/sharedTreeChangeFamily.ts +7 -1
  690. package/src/shared-tree/sharedTreeEditBuilder.ts +9 -4
  691. package/src/shared-tree/treeApi.ts +10 -10
  692. package/src/shared-tree/treeCheckout.ts +26 -15
  693. package/src/shared-tree-core/branch.ts +1 -1
  694. package/src/simple-tree/ProxyBinding.md +23 -23
  695. package/src/simple-tree/api/create.ts +8 -3
  696. package/src/simple-tree/{getJsonSchema.ts → api/getJsonSchema.ts} +3 -3
  697. package/src/simple-tree/{getSimpleSchema.ts → api/getSimpleSchema.ts} +3 -3
  698. package/src/simple-tree/api/index.ts +20 -0
  699. package/src/simple-tree/{jsonSchema.ts → api/jsonSchema.ts} +1 -1
  700. package/src/simple-tree/api/schemaFactory.ts +44 -13
  701. package/src/simple-tree/{simpleSchema.ts → api/simpleSchema.ts} +4 -4
  702. package/src/simple-tree/{simpleSchemaToJsonSchema.ts → api/simpleSchemaToJsonSchema.ts} +4 -4
  703. package/src/simple-tree/api/tree.ts +2 -71
  704. package/src/simple-tree/api/treeApiBeta.ts +101 -0
  705. package/src/simple-tree/api/treeNodeApi.ts +63 -22
  706. package/src/simple-tree/api/verboseTree.ts +1 -1
  707. package/src/simple-tree/{viewSchemaToSimpleSchema.ts → api/viewSchemaToSimpleSchema.ts} +5 -5
  708. package/src/simple-tree/arrayNode.ts +38 -41
  709. package/src/simple-tree/core/index.ts +4 -0
  710. package/src/simple-tree/core/schemaCaching.ts +10 -0
  711. package/src/simple-tree/core/treeNodeKernel.ts +279 -27
  712. package/src/simple-tree/core/treeNodeSchema.ts +1 -1
  713. package/src/simple-tree/core/types.ts +23 -8
  714. package/src/simple-tree/core/withType.ts +3 -1
  715. package/src/simple-tree/index.ts +29 -20
  716. package/src/simple-tree/leafNodeSchema.ts +24 -28
  717. package/src/simple-tree/mapNode.ts +47 -29
  718. package/src/simple-tree/objectNode.ts +51 -46
  719. package/src/simple-tree/proxies.ts +22 -51
  720. package/src/simple-tree/proxyBinding.ts +3 -254
  721. package/src/simple-tree/schemaTypes.ts +8 -8
  722. package/src/simple-tree/toFlexSchema.ts +40 -7
  723. package/src/simple-tree/toMapTree.ts +113 -79
  724. package/src/simple-tree/treeNodeValid.ts +10 -13
  725. package/src/simple-tree/typesUnsafe.ts +13 -13
  726. package/src/simple-tree/walkSchema.ts +81 -0
  727. package/src/treeFactory.ts +2 -1
  728. package/src/util/typeUtils.ts +2 -2
  729. package/dist/core/revertible/index.d.ts.map +0 -1
  730. package/dist/core/revertible/index.js +0 -10
  731. package/dist/core/revertible/index.js.map +0 -1
  732. package/dist/core/revertible/revertible.d.ts.map +0 -1
  733. package/dist/core/revertible/revertible.js.map +0 -1
  734. package/dist/domains/index.d.ts +0 -8
  735. package/dist/domains/index.d.ts.map +0 -1
  736. package/dist/domains/index.js +0 -20
  737. package/dist/domains/index.js.map +0 -1
  738. package/dist/domains/json/index.d.ts +0 -7
  739. package/dist/domains/json/index.d.ts.map +0 -1
  740. package/dist/domains/json/index.js +0 -17
  741. package/dist/domains/json/index.js.map +0 -1
  742. package/dist/domains/json/jsonCursor.d.ts +0 -52
  743. package/dist/domains/json/jsonCursor.d.ts.map +0 -1
  744. package/dist/domains/json/jsonCursor.js +0 -197
  745. package/dist/domains/json/jsonCursor.js.map +0 -1
  746. package/dist/domains/json/jsonDomainSchema.d.ts +0 -24
  747. package/dist/domains/json/jsonDomainSchema.d.ts.map +0 -1
  748. package/dist/domains/json/jsonDomainSchema.js +0 -32
  749. package/dist/domains/json/jsonDomainSchema.js.map +0 -1
  750. package/dist/domains/leafDomain.d.ts +0 -72
  751. package/dist/domains/leafDomain.d.ts.map +0 -1
  752. package/dist/domains/leafDomain.js +0 -88
  753. package/dist/domains/leafDomain.js.map +0 -1
  754. package/dist/domains/schemaBuilder.d.ts +0 -103
  755. package/dist/domains/schemaBuilder.d.ts.map +0 -1
  756. package/dist/domains/schemaBuilder.js +0 -121
  757. package/dist/domains/schemaBuilder.js.map +0 -1
  758. package/dist/domains/testRecursiveDomain.d.ts +0 -17
  759. package/dist/domains/testRecursiveDomain.d.ts.map +0 -1
  760. package/dist/domains/testRecursiveDomain.js +0 -35
  761. package/dist/domains/testRecursiveDomain.js.map +0 -1
  762. package/dist/events/events.d.ts +0 -201
  763. package/dist/events/events.d.ts.map +0 -1
  764. package/dist/events/events.js.map +0 -1
  765. package/dist/feature-libraries/schemaBuilder.d.ts +0 -31
  766. package/dist/feature-libraries/schemaBuilder.d.ts.map +0 -1
  767. package/dist/feature-libraries/schemaBuilder.js +0 -40
  768. package/dist/feature-libraries/schemaBuilder.js.map +0 -1
  769. package/dist/feature-libraries/schemaBuilderBase.d.ts +0 -191
  770. package/dist/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
  771. package/dist/feature-libraries/schemaBuilderBase.js +0 -201
  772. package/dist/feature-libraries/schemaBuilderBase.js.map +0 -1
  773. package/dist/shared-tree/treeView.d.ts +0 -73
  774. package/dist/shared-tree/treeView.d.ts.map +0 -1
  775. package/dist/shared-tree/treeView.js.map +0 -1
  776. package/dist/simple-tree/getJsonSchema.d.ts.map +0 -1
  777. package/dist/simple-tree/getJsonSchema.js.map +0 -1
  778. package/dist/simple-tree/getSimpleSchema.d.ts.map +0 -1
  779. package/dist/simple-tree/getSimpleSchema.js.map +0 -1
  780. package/dist/simple-tree/jsonSchema.d.ts.map +0 -1
  781. package/dist/simple-tree/jsonSchema.js.map +0 -1
  782. package/dist/simple-tree/simpleSchema.d.ts.map +0 -1
  783. package/dist/simple-tree/simpleSchema.js.map +0 -1
  784. package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
  785. package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
  786. package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
  787. package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +0 -1
  788. package/lib/core/revertible/index.d.ts.map +0 -1
  789. package/lib/core/revertible/index.js.map +0 -1
  790. package/lib/core/revertible/revertible.d.ts.map +0 -1
  791. package/lib/core/revertible/revertible.js.map +0 -1
  792. package/lib/domains/index.d.ts +0 -8
  793. package/lib/domains/index.d.ts.map +0 -1
  794. package/lib/domains/index.js +0 -8
  795. package/lib/domains/index.js.map +0 -1
  796. package/lib/domains/json/index.d.ts +0 -7
  797. package/lib/domains/json/index.d.ts.map +0 -1
  798. package/lib/domains/json/index.js +0 -7
  799. package/lib/domains/json/index.js.map +0 -1
  800. package/lib/domains/json/jsonCursor.d.ts +0 -52
  801. package/lib/domains/json/jsonCursor.d.ts.map +0 -1
  802. package/lib/domains/json/jsonCursor.js +0 -192
  803. package/lib/domains/json/jsonCursor.js.map +0 -1
  804. package/lib/domains/json/jsonDomainSchema.d.ts +0 -24
  805. package/lib/domains/json/jsonDomainSchema.d.ts.map +0 -1
  806. package/lib/domains/json/jsonDomainSchema.js +0 -29
  807. package/lib/domains/json/jsonDomainSchema.js.map +0 -1
  808. package/lib/domains/leafDomain.d.ts +0 -72
  809. package/lib/domains/leafDomain.d.ts.map +0 -1
  810. package/lib/domains/leafDomain.js +0 -85
  811. package/lib/domains/leafDomain.js.map +0 -1
  812. package/lib/domains/schemaBuilder.d.ts +0 -103
  813. package/lib/domains/schemaBuilder.d.ts.map +0 -1
  814. package/lib/domains/schemaBuilder.js +0 -117
  815. package/lib/domains/schemaBuilder.js.map +0 -1
  816. package/lib/domains/testRecursiveDomain.d.ts +0 -17
  817. package/lib/domains/testRecursiveDomain.d.ts.map +0 -1
  818. package/lib/domains/testRecursiveDomain.js +0 -32
  819. package/lib/domains/testRecursiveDomain.js.map +0 -1
  820. package/lib/events/events.d.ts +0 -201
  821. package/lib/events/events.d.ts.map +0 -1
  822. package/lib/events/events.js.map +0 -1
  823. package/lib/feature-libraries/schemaBuilder.d.ts +0 -31
  824. package/lib/feature-libraries/schemaBuilder.d.ts.map +0 -1
  825. package/lib/feature-libraries/schemaBuilder.js +0 -36
  826. package/lib/feature-libraries/schemaBuilder.js.map +0 -1
  827. package/lib/feature-libraries/schemaBuilderBase.d.ts +0 -191
  828. package/lib/feature-libraries/schemaBuilderBase.d.ts.map +0 -1
  829. package/lib/feature-libraries/schemaBuilderBase.js +0 -195
  830. package/lib/feature-libraries/schemaBuilderBase.js.map +0 -1
  831. package/lib/shared-tree/treeView.d.ts +0 -73
  832. package/lib/shared-tree/treeView.d.ts.map +0 -1
  833. package/lib/shared-tree/treeView.js.map +0 -1
  834. package/lib/simple-tree/getJsonSchema.d.ts.map +0 -1
  835. package/lib/simple-tree/getJsonSchema.js.map +0 -1
  836. package/lib/simple-tree/getSimpleSchema.d.ts.map +0 -1
  837. package/lib/simple-tree/getSimpleSchema.js.map +0 -1
  838. package/lib/simple-tree/jsonSchema.d.ts.map +0 -1
  839. package/lib/simple-tree/jsonSchema.js.map +0 -1
  840. package/lib/simple-tree/simpleSchema.d.ts.map +0 -1
  841. package/lib/simple-tree/simpleSchema.js.map +0 -1
  842. package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +0 -1
  843. package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +0 -1
  844. package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +0 -1
  845. package/src/domains/README.md +0 -6
  846. package/src/domains/fence.json +0 -5
  847. package/src/domains/index.ts +0 -19
  848. package/src/domains/json/fence.json +0 -5
  849. package/src/domains/json/index.ts +0 -13
  850. package/src/domains/json/jsonCursor.ts +0 -247
  851. package/src/domains/json/jsonDomainSchema.ts +0 -47
  852. package/src/domains/leafDomain.ts +0 -97
  853. package/src/domains/schemaBuilder.ts +0 -153
  854. package/src/domains/testRecursiveDomain.ts +0 -38
  855. package/src/events/fence.json +0 -5
  856. package/src/feature-libraries/schemaBuilder.ts +0 -45
  857. package/src/feature-libraries/schemaBuilderBase.ts +0 -393
  858. package/src/shared-tree/treeView.ts +0 -113
  859. /package/dist/core/{revertible/revertible.js → revertible.js} +0 -0
  860. /package/dist/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
  861. /package/dist/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
  862. /package/dist/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
  863. /package/lib/core/{revertible/revertible.js → revertible.js} +0 -0
  864. /package/lib/simple-tree/{jsonSchema.js → api/jsonSchema.js} +0 -0
  865. /package/lib/simple-tree/{simpleSchema.js → api/simpleSchema.js} +0 -0
  866. /package/lib/simple-tree/{simpleSchemaToJsonSchema.d.ts → api/simpleSchemaToJsonSchema.d.ts} +0 -0
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  import { assert, oob } from "@fluidframework/core-utils/internal";
7
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
+
7
9
  import {
8
10
  type AnchorNode,
9
11
  EmptyKey,
@@ -11,43 +13,40 @@ import {
11
13
  type FieldKey,
12
14
  type FieldUpPath,
13
15
  type MapTree,
16
+ type TreeFieldStoredSchema,
14
17
  type TreeNodeSchemaIdentifier,
15
- type TreeValue,
18
+ type TreeStoredSchema,
16
19
  type Value,
17
20
  } from "../../core/index.js";
18
- import { brand, fail, getOrCreate, mapIterable } from "../../util/index.js";
21
+ import { brand, fail, getOrCreate, isReadonlyArray, mapIterable } from "../../util/index.js";
19
22
  import {
23
+ type FlexTreeContext,
20
24
  FlexTreeEntityKind,
21
25
  type FlexTreeField,
22
- type FlexTreeLeafNode,
23
- type FlexTreeMapNode,
24
26
  type FlexTreeNode,
25
27
  type FlexTreeOptionalField,
26
28
  type FlexTreeRequiredField,
27
29
  type FlexTreeSequenceField,
28
30
  type FlexTreeTypedField,
29
- type FlexTreeTypedNode,
30
- type FlexTreeTypedNodeUnion,
31
- type FlexTreeUnboxField,
32
- type FlexTreeUnboxNodeUnion,
31
+ type FlexTreeUnknownUnboxed,
33
32
  flexTreeMarker,
34
33
  indexForAt,
34
+ type FlexTreeHydratedContext,
35
35
  } from "../flex-tree/index.js";
36
36
  import {
37
37
  type FlexAllowedTypes,
38
38
  FlexFieldSchema,
39
- type FlexMapNodeSchema,
40
39
  type FlexTreeNodeSchema,
41
- type LeafNodeSchema,
40
+ type FlexTreeSchema,
41
+ intoStoredSchemaCollection,
42
42
  isLazy,
43
- schemaIsLeaf,
44
- schemaIsMap,
45
- schemaIsObjectNode,
46
43
  } from "../typed-schema/index.js";
47
- import { type FlexImplicitAllowedTypes, normalizeAllowedTypes } from "../schemaBuilderBase.js";
48
44
  import type { FlexFieldKind } from "../modular-schema/index.js";
49
- import { FieldKinds, type SequenceFieldEditBuilder } from "../default-schema/index.js";
50
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
45
+ import {
46
+ defaultSchemaPolicy,
47
+ FieldKinds,
48
+ type SequenceFieldEditBuilder,
49
+ } from "../default-schema/index.js";
51
50
 
52
51
  // #region Nodes
53
52
 
@@ -70,9 +69,9 @@ export function isMapTreeNode(flexNode: FlexTreeNode): flexNode is MapTreeNode {
70
69
  /**
71
70
  * Checks if the given {@link FlexTreeField} is a {@link MapTreeSequenceField}.
72
71
  */
73
- export function isMapTreeSequenceField<T extends FlexAllowedTypes>(
74
- field: FlexTreeSequenceField<T> | FlexTreeField,
75
- ): field is MapTreeSequenceField<T> {
72
+ export function isMapTreeSequenceField(
73
+ field: FlexTreeSequenceField | FlexTreeField,
74
+ ): field is MapTreeSequenceField {
76
75
  return field instanceof EagerMapTreeSequenceField;
77
76
  }
78
77
 
@@ -80,8 +79,7 @@ export function isMapTreeSequenceField<T extends FlexAllowedTypes>(
80
79
  * An unhydrated {@link FlexTreeSequenceField}, which has additional editing capabilities.
81
80
  * @remarks When doing a removal edit, a {@link MapTreeSequenceField}'s `editor` returns ownership of the removed {@link ExclusiveMapTree}s to the caller.
82
81
  */
83
- export interface MapTreeSequenceField<T extends FlexAllowedTypes>
84
- extends FlexTreeSequenceField<T> {
82
+ export interface MapTreeSequenceField extends FlexTreeSequenceField {
85
83
  readonly editor: MapTreeSequenceFieldEditBuilder;
86
84
  }
87
85
 
@@ -109,7 +107,11 @@ interface LocationInField {
109
107
  * MapTreeNodes are unconditionally cached -
110
108
  * when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `MapTreeNode` object.
111
109
  */
112
- export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements MapTreeNode {
110
+ export class EagerMapTreeNode implements MapTreeNode {
111
+ public get schema(): TreeNodeSchemaIdentifier {
112
+ return this.flexSchema.name;
113
+ }
114
+
113
115
  public readonly [flexTreeMarker] = FlexTreeEntityKind.Node as const;
114
116
 
115
117
  /**
@@ -121,7 +123,8 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
121
123
  * Instead, it should always be acquired via {@link getOrCreateNode}.
122
124
  */
123
125
  public constructor(
124
- public readonly schema: TSchema,
126
+ public readonly context: UnhydratedContext,
127
+ public readonly flexSchema: FlexTreeNodeSchema,
125
128
  /** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
126
129
  public readonly mapTree: ExclusiveMapTree,
127
130
  private location = unparentedLocation,
@@ -140,7 +143,7 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
140
143
  }
141
144
 
142
145
  public get type(): TreeNodeSchemaIdentifier {
143
- return this.schema.name;
146
+ return this.flexSchema.name;
144
147
  }
145
148
 
146
149
  /**
@@ -177,37 +180,38 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
177
180
  return this.location;
178
181
  }
179
182
 
180
- public is<TSchemaInner extends FlexTreeNodeSchema>(
181
- schema: TSchemaInner,
182
- ): this is FlexTreeTypedNode<TSchemaInner> {
183
- return (schema as unknown) === this.schema;
183
+ public is(schema: FlexTreeNodeSchema): boolean {
184
+ return (schema as unknown) === this.flexSchema;
184
185
  }
185
186
 
186
- public tryGetField(key: FieldKey): EagerMapTreeField<FlexAllowedTypes> | undefined {
187
+ public tryGetField(key: FieldKey): EagerMapTreeField | undefined {
187
188
  const field = this.mapTree.fields.get(key);
188
189
  // Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.
189
190
  if (field !== undefined && field.length > 0) {
190
- return getOrCreateField(this, key, this.schema.getFieldSchema(key));
191
+ return getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
191
192
  }
192
193
  }
193
194
 
194
195
  public getBoxed(key: string): FlexTreeField {
195
196
  const fieldKey: FieldKey = brand(key);
196
- return getOrCreateField(this, fieldKey, this.schema.getFieldSchema(fieldKey));
197
+ return getOrCreateField(this, fieldKey, this.flexSchema.getFieldSchema(fieldKey));
197
198
  }
198
199
 
199
200
  public boxedIterator(): IterableIterator<FlexTreeField> {
200
201
  return mapIterable(this.mapTree.fields.entries(), ([key]) =>
201
- getOrCreateField(this, key, this.schema.getFieldSchema(key)),
202
+ getOrCreateField(this, key, this.flexSchema.getFieldSchema(key)),
202
203
  );
203
204
  }
204
205
 
206
+ public keys(): IterableIterator<FieldKey> {
207
+ // TODO: how this should handle missing defaults (and empty keys if they end up being allowed) needs to be determined.
208
+ return this.mapTree.fields.keys();
209
+ }
210
+
205
211
  public get value(): Value {
206
212
  return this.mapTree.value;
207
213
  }
208
214
 
209
- public context = undefined;
210
-
211
215
  public get anchorNode(): AnchorNode {
212
216
  // This API is relevant to `LazyTreeNode`s, but not `MapTreeNode`s.
213
217
  // TODO: Refactor the FlexTreeNode interface so that stubbing this out isn't necessary.
@@ -216,11 +220,12 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
216
220
 
217
221
  private walkTree(): void {
218
222
  for (const [key, mapTrees] of this.mapTree.fields) {
219
- const field = getOrCreateField(this, key, this.schema.getFieldSchema(key));
223
+ const field = getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
220
224
  for (let index = 0; index < field.length; index++) {
221
225
  const child = getOrCreateChild(
226
+ this.context,
222
227
  mapTrees[index] ?? oob(),
223
- this.schema.getFieldSchema(key).allowedTypes,
228
+ this.flexSchema.getFieldSchema(key).allowedTypes,
224
229
  { parent: field, index },
225
230
  );
226
231
  // These next asserts detect the case where `getOrCreateChild` gets a cache hit of a different node than the one we're trying to create
@@ -236,84 +241,31 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
236
241
  }
237
242
  }
238
243
 
244
+ // #endregion Nodes
245
+
239
246
  /**
240
- * The implementation of a map node created by {@link getOrCreateNode}.
247
+ * Implementation of `FlexTreeContext`.
248
+ *
249
+ * @remarks An editor is required to edit the FlexTree.
241
250
  */
242
- export class EagerMapTreeMapNode<TSchema extends FlexMapNodeSchema>
243
- extends EagerMapTreeNode<TSchema>
244
- implements FlexTreeMapNode<TSchema>
245
- {
246
- public keys(): IterableIterator<FieldKey> {
247
- return this.mapTree.fields.keys();
248
- }
249
-
250
- public values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">> {
251
- return mapIterable(
252
- this.mapTree.fields.keys(),
253
- (key) =>
254
- unboxedField(
255
- this.tryGetField(key) ?? fail("Unexpected empty map field"),
256
- key,
257
- this.mapTree,
258
- this,
259
- ) as FlexTreeUnboxField<TSchema["info"], "notEmpty">,
260
- );
261
- }
262
-
263
- public entries(): IterableIterator<
264
- [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
265
- > {
266
- return mapIterable(this.mapTree.fields.keys(), (key) => [
267
- key,
268
- unboxedField(
269
- this.tryGetField(key) ?? fail("Unexpected empty map field"),
270
- key,
271
- this.mapTree,
272
- this,
273
- ) as FlexTreeUnboxField<TSchema["info"], "notEmpty">,
274
- ]);
275
- }
276
-
277
- public forEach(
278
- callbackFn: (
279
- value: FlexTreeUnboxField<TSchema["info"], "notEmpty">,
280
- key: FieldKey,
281
- map: FlexTreeMapNode<TSchema>,
282
- ) => void,
283
- thisArg?: unknown,
284
- ): void {
285
- const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;
286
- for (const [key, value] of this.entries()) {
287
- fn(value, key, this);
288
- }
289
- }
251
+ export class UnhydratedContext implements FlexTreeContext {
252
+ public readonly schema: TreeStoredSchema;
290
253
 
291
- public override getBoxed(key: string): FlexTreeTypedField<TSchema["info"]> {
292
- return super.getBoxed(key) as FlexTreeTypedField<TSchema["info"]>;
293
- }
294
-
295
- public [Symbol.iterator](): IterableIterator<
296
- [FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]
297
- > {
298
- return this.entries();
254
+ /**
255
+ * @param flexSchema - Schema to use when working with the tree.
256
+ */
257
+ public constructor(public readonly flexSchema: FlexTreeSchema) {
258
+ this.schema = {
259
+ rootFieldSchema: flexSchema.rootFieldSchema.stored,
260
+ ...intoStoredSchemaCollection(flexSchema),
261
+ };
299
262
  }
300
263
 
301
- public override boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema["info"]>> {
302
- return super.boxedIterator() as IterableIterator<FlexTreeTypedField<TSchema["info"]>>;
264
+ public isHydrated(): this is FlexTreeHydratedContext {
265
+ return false;
303
266
  }
304
267
  }
305
268
 
306
- class EagerMapTreeLeafNode<TSchema extends LeafNodeSchema>
307
- extends EagerMapTreeNode<TSchema>
308
- implements FlexTreeLeafNode<TSchema>
309
- {
310
- public override get value(): TreeValue<TSchema["info"]> {
311
- return super.value as TreeValue<TSchema["info"]>;
312
- }
313
- }
314
-
315
- // #endregion Nodes
316
-
317
269
  // #region Fields
318
270
 
319
271
  /**
@@ -325,6 +277,13 @@ interface MapTreeField extends FlexTreeField {
325
277
  readonly mapTrees: readonly MapTree[];
326
278
  }
327
279
 
280
+ const emptyContext = new UnhydratedContext({
281
+ adapters: {},
282
+ nodeSchema: new Map(),
283
+ policy: defaultSchemaPolicy,
284
+ rootFieldSchema: FlexFieldSchema.empty,
285
+ });
286
+
328
287
  /**
329
288
  * A special singleton that is the implicit {@link LocationInField} of all un-parented {@link EagerMapTreeNode}s.
330
289
  * @remarks This exists because {@link EagerMapTreeNode.parentField} must return a field.
@@ -339,8 +298,8 @@ const unparentedLocation: LocationInField = {
339
298
  length: 0,
340
299
  key: EmptyKey,
341
300
  parent: undefined,
342
- is<TSchema extends FlexFieldSchema>(schema: TSchema) {
343
- return schema === (FlexFieldSchema.empty as FlexFieldSchema);
301
+ is<TKind2 extends FlexFieldKind>(kind: TKind2) {
302
+ return this.schema.kind === kind.identifier;
344
303
  },
345
304
  boxedIterator(): IterableIterator<FlexTreeNode> {
346
305
  return [].values();
@@ -348,20 +307,28 @@ const unparentedLocation: LocationInField = {
348
307
  boxedAt(index: number): FlexTreeNode | undefined {
349
308
  return undefined;
350
309
  },
351
- schema: FlexFieldSchema.empty,
352
- context: undefined,
310
+ schema: FlexFieldSchema.empty.stored,
311
+ context: emptyContext,
353
312
  mapTrees: [],
313
+ getFieldPath() {
314
+ fail("unsupported");
315
+ },
354
316
  },
355
317
  index: -1,
356
318
  };
357
319
 
358
- class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
320
+ class EagerMapTreeField implements MapTreeField {
359
321
  public [flexTreeMarker] = FlexTreeEntityKind.Field as const;
360
322
 
323
+ public get schema(): TreeFieldStoredSchema {
324
+ return this.flexSchema.stored;
325
+ }
326
+
361
327
  public constructor(
362
- public readonly schema: FlexFieldSchema<FlexFieldKind, T>,
328
+ public readonly context: UnhydratedContext,
329
+ public readonly flexSchema: FlexFieldSchema,
363
330
  public readonly key: FieldKey,
364
- public readonly parent: EagerMapTreeNode<FlexTreeNodeSchema>,
331
+ public readonly parent: EagerMapTreeNode,
365
332
  ) {
366
333
  const fieldKeyCache = getFieldKeyCache(parent);
367
334
  assert(!fieldKeyCache.has(key), 0x990 /* A field already exists for the given MapTrees */);
@@ -388,40 +355,36 @@ class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
388
355
  return this.mapTrees.length;
389
356
  }
390
357
 
391
- public is<TSchemaInner extends FlexFieldSchema>(
392
- schema: TSchemaInner,
393
- ): this is FlexTreeTypedField<TSchemaInner> {
394
- return this.schema.equals(schema);
358
+ public is<TKind2 extends FlexFieldKind>(kind: TKind2): this is FlexTreeTypedField<TKind2> {
359
+ return this.schema.kind === kind.identifier;
395
360
  }
396
361
 
397
- public boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<T>> {
362
+ public boxedIterator(): IterableIterator<FlexTreeNode> {
398
363
  return this.mapTrees
399
364
  .map(
400
365
  (m, index) =>
401
- getOrCreateChild(m, this.schema.allowedTypes, {
366
+ getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
402
367
  parent: this,
403
368
  index,
404
- }) as FlexTreeNode as FlexTreeTypedNodeUnion<T>,
369
+ }) as FlexTreeNode,
405
370
  )
406
371
  .values();
407
372
  }
408
373
 
409
- public boxedAt(index: number): FlexTreeTypedNodeUnion<T> | undefined {
374
+ public boxedAt(index: number): FlexTreeNode | undefined {
410
375
  const i = indexForAt(index, this.length);
411
376
  if (i === undefined) {
412
377
  return undefined;
413
378
  }
414
379
  const m = this.mapTrees[i];
415
380
  if (m !== undefined) {
416
- return getOrCreateChild(m, this.schema.allowedTypes, {
381
+ return getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
417
382
  parent: this,
418
383
  index: i,
419
- }) as FlexTreeNode as FlexTreeTypedNodeUnion<T>;
384
+ }) as FlexTreeNode;
420
385
  }
421
386
  }
422
387
 
423
- public context: undefined;
424
-
425
388
  /**
426
389
  * Mutate this field.
427
390
  * @param edit - A function which receives the current `MapTree`s that comprise the contents of the field so that it may be mutated.
@@ -439,12 +402,13 @@ class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
439
402
  this.parent.mapTree.fields.delete(this.key);
440
403
  }
441
404
  }
405
+
406
+ public getFieldPath(): FieldUpPath {
407
+ throw unsupportedUsageError("Editing an array");
408
+ }
442
409
  }
443
410
 
444
- class EagerMapTreeOptionalField<T extends FlexAllowedTypes>
445
- extends EagerMapTreeField<T>
446
- implements FlexTreeOptionalField<T>
447
- {
411
+ class EagerMapTreeOptionalField extends EagerMapTreeField implements FlexTreeOptionalField {
448
412
  public readonly editor = {
449
413
  set: (newContent: ExclusiveMapTree | undefined): void => {
450
414
  // If the new content is a MapTreeNode, it needs to have its parent pointer updated
@@ -467,10 +431,10 @@ class EagerMapTreeOptionalField<T extends FlexAllowedTypes>
467
431
  },
468
432
  };
469
433
 
470
- public get content(): FlexTreeUnboxNodeUnion<T> | undefined {
434
+ public get content(): FlexTreeUnknownUnboxed | undefined {
471
435
  const value = this.mapTrees[0];
472
436
  if (value !== undefined) {
473
- return unboxedUnion(this.schema, value, {
437
+ return unboxed(this.flexSchema, value, {
474
438
  parent: this,
475
439
  index: 0,
476
440
  });
@@ -480,19 +444,16 @@ class EagerMapTreeOptionalField<T extends FlexAllowedTypes>
480
444
  }
481
445
  }
482
446
 
483
- class EagerMapTreeRequiredField<T extends FlexAllowedTypes>
484
- extends EagerMapTreeOptionalField<T>
485
- implements FlexTreeRequiredField<T>
447
+ class EagerMapTreeRequiredField
448
+ extends EagerMapTreeOptionalField
449
+ implements FlexTreeRequiredField
486
450
  {
487
- public override get content(): FlexTreeUnboxNodeUnion<T> {
451
+ public override get content(): FlexTreeUnknownUnboxed {
488
452
  return super.content ?? fail("Expected EagerMapTree required field to have a value");
489
453
  }
490
454
  }
491
455
 
492
- class EagerMapTreeSequenceField<T extends FlexAllowedTypes>
493
- extends EagerMapTreeField<T>
494
- implements FlexTreeSequenceField<T>
495
- {
456
+ class EagerMapTreeSequenceField extends EagerMapTreeField implements FlexTreeSequenceField {
496
457
  public readonly editor: MapTreeSequenceFieldEditBuilder = {
497
458
  insert: (index, newContent): void => {
498
459
  for (let i = 0; i < newContent.length; i++) {
@@ -524,44 +485,32 @@ class EagerMapTreeSequenceField<T extends FlexAllowedTypes>
524
485
  },
525
486
  };
526
487
 
527
- public at(index: number): FlexTreeUnboxNodeUnion<T> | undefined {
488
+ public at(index: number): FlexTreeUnknownUnboxed | undefined {
528
489
  const i = indexForAt(index, this.length);
529
490
  if (i === undefined) {
530
491
  return undefined;
531
492
  }
532
- return unboxedUnion(this.schema, this.mapTrees[i] ?? oob(), { parent: this, index: i });
493
+ return unboxed(this.flexSchema, this.mapTrees[i] ?? oob(), { parent: this, index: i });
533
494
  }
534
- public map<U>(callbackfn: (value: FlexTreeUnboxNodeUnion<T>, index: number) => U): U[] {
495
+ public map<U>(callbackfn: (value: FlexTreeUnknownUnboxed, index: number) => U): U[] {
535
496
  return Array.from(this, callbackfn);
536
497
  }
537
- public mapBoxed<U>(callbackfn: (value: FlexTreeTypedNodeUnion<T>, index: number) => U): U[] {
538
- return Array.from(this.boxedIterator(), callbackfn);
539
- }
540
498
 
541
- public *[Symbol.iterator](): IterableIterator<FlexTreeUnboxNodeUnion<T>> {
499
+ public *[Symbol.iterator](): IterableIterator<FlexTreeUnknownUnboxed> {
542
500
  for (const [i, mapTree] of this.mapTrees.entries()) {
543
- yield unboxedUnion(this.schema, mapTree, { parent: this, index: i });
501
+ yield unboxed(this.flexSchema, mapTree, { parent: this, index: i });
544
502
  }
545
503
  }
546
-
547
- public getFieldPath(): FieldUpPath {
548
- throw unsupportedUsageError("Editing an array");
549
- }
550
504
  }
551
505
 
552
506
  // #endregion Fields
553
507
 
554
508
  // #region Caching and unboxing utilities
555
509
 
556
- const nodeCache = new WeakMap<MapTree, EagerMapTreeNode<FlexTreeNodeSchema>>();
510
+ const nodeCache = new WeakMap<MapTree, EagerMapTreeNode>();
557
511
  /** Node Parent -\> Field Key -\> Field */
558
- const fieldCache = new WeakMap<
559
- MapTreeNode,
560
- Map<FieldKey, EagerMapTreeField<FlexAllowedTypes>>
561
- >();
562
- function getFieldKeyCache(
563
- parent: MapTreeNode,
564
- ): WeakMap<FieldKey, EagerMapTreeField<FlexAllowedTypes>> {
512
+ const fieldCache = new WeakMap<MapTreeNode, Map<FieldKey, EagerMapTreeField>>();
513
+ function getFieldKeyCache(parent: MapTreeNode): WeakMap<FieldKey, EagerMapTreeField> {
565
514
  return getOrCreate(fieldCache, parent, () => new Map());
566
515
  }
567
516
 
@@ -580,59 +529,52 @@ export function tryGetMapTreeNode(mapTree: MapTree): MapTreeNode | undefined {
580
529
  * @remarks It must conform to the `nodeSchema`.
581
530
  */
582
531
  export function getOrCreateMapTreeNode(
532
+ context: UnhydratedContext,
583
533
  nodeSchema: FlexTreeNodeSchema,
584
534
  mapTree: ExclusiveMapTree,
585
- ): EagerMapTreeNode<FlexTreeNodeSchema> {
586
- return nodeCache.get(mapTree) ?? createNode(nodeSchema, mapTree, undefined);
535
+ ): EagerMapTreeNode {
536
+ return nodeCache.get(mapTree) ?? createNode(context, nodeSchema, mapTree, undefined);
587
537
  }
588
538
 
589
539
  /** Helper for creating a `MapTreeNode` given the parent field (e.g. when "walking down") */
590
540
  function getOrCreateChild(
541
+ context: UnhydratedContext,
591
542
  mapTree: ExclusiveMapTree,
592
- implicitAllowedTypes: FlexImplicitAllowedTypes,
543
+ allowedTypes: FlexAllowedTypes,
593
544
  parent: LocationInField | undefined,
594
- ): EagerMapTreeNode<FlexTreeNodeSchema> {
545
+ ): EagerMapTreeNode {
595
546
  const cached = nodeCache.get(mapTree);
596
547
  if (cached !== undefined) {
597
548
  return cached;
598
549
  }
599
550
 
600
- const allowedTypes = normalizeAllowedTypes(implicitAllowedTypes);
551
+ assert(isReadonlyArray(allowedTypes), 0xa25 /* invalid types */);
601
552
  const nodeSchema =
602
553
  allowedTypes
603
554
  .map((t) => (isLazy(t) ? t() : t))
604
555
  .find((t): t is FlexTreeNodeSchema => {
605
- assert(t !== "Any", 0x993 /* 'Any' type is not supported */);
606
556
  return t.name === mapTree.type;
607
557
  }) ?? fail("Unsupported node schema");
608
558
 
609
- return createNode(nodeSchema, mapTree, parent);
559
+ return createNode(context, nodeSchema, mapTree, parent);
610
560
  }
611
561
 
612
562
  /** Always constructs a new node, therefore may not be called twice for the same `MapTree`. */
613
- function createNode<TSchema extends FlexTreeNodeSchema>(
614
- nodeSchema: TSchema,
563
+ function createNode(
564
+ context: UnhydratedContext,
565
+ nodeSchema: FlexTreeNodeSchema,
615
566
  mapTree: ExclusiveMapTree,
616
567
  parentField: LocationInField | undefined,
617
- ): EagerMapTreeNode<TSchema> {
618
- if (schemaIsLeaf(nodeSchema)) {
619
- return new EagerMapTreeLeafNode(nodeSchema, mapTree, parentField);
620
- }
621
- if (schemaIsMap(nodeSchema)) {
622
- return new EagerMapTreeMapNode(nodeSchema, mapTree, parentField);
623
- }
624
- if (schemaIsObjectNode(nodeSchema)) {
625
- return new EagerMapTreeNode(nodeSchema, mapTree, parentField);
626
- }
627
- assert(false, 0x994 /* Unrecognized node kind */);
568
+ ): EagerMapTreeNode {
569
+ return new EagerMapTreeNode(context, nodeSchema, mapTree, parentField);
628
570
  }
629
571
 
630
572
  /** Creates a field with the given attributes, or returns a cached field if there is one */
631
573
  function getOrCreateField(
632
- parent: EagerMapTreeNode<FlexTreeNodeSchema>,
574
+ parent: EagerMapTreeNode,
633
575
  key: FieldKey,
634
576
  schema: FlexFieldSchema,
635
- ): EagerMapTreeField<FlexFieldSchema["allowedTypes"]> {
577
+ ): EagerMapTreeField {
636
578
  const cached = getFieldKeyCache(parent).get(key);
637
579
  if (cached !== undefined) {
638
580
  return cached;
@@ -642,70 +584,32 @@ function getOrCreateField(
642
584
  schema.kind.identifier === FieldKinds.required.identifier ||
643
585
  schema.kind.identifier === FieldKinds.identifier.identifier
644
586
  ) {
645
- return new EagerMapTreeRequiredField(schema, key, parent);
587
+ return new EagerMapTreeRequiredField(parent.context, schema, key, parent);
646
588
  }
647
589
 
648
590
  if (schema.kind.identifier === FieldKinds.optional.identifier) {
649
- return new EagerMapTreeOptionalField(schema, key, parent);
591
+ return new EagerMapTreeOptionalField(parent.context, schema, key, parent);
650
592
  }
651
593
 
652
594
  if (schema.kind.identifier === FieldKinds.sequence.identifier) {
653
- return new EagerMapTreeSequenceField(schema, key, parent);
595
+ return new EagerMapTreeSequenceField(parent.context, schema, key, parent);
654
596
  }
655
597
 
656
- return new EagerMapTreeField(schema, key, parent);
598
+ return new EagerMapTreeField(parent.context, schema, key, parent);
657
599
  }
658
600
 
659
- /** Unboxes non-polymorphic leaf nodes to their values, if applicable */
660
- function unboxedUnion<TTypes extends FlexAllowedTypes>(
661
- schema: FlexFieldSchema<FlexFieldKind, TTypes>,
601
+ /** Unboxes leaf nodes to their values */
602
+ function unboxed(
603
+ schema: FlexFieldSchema,
662
604
  mapTree: ExclusiveMapTree,
663
605
  parent: LocationInField,
664
- ): FlexTreeUnboxNodeUnion<TTypes> {
665
- const type = schema.monomorphicChildType;
666
- if (type !== undefined) {
667
- if (schemaIsLeaf(type)) {
668
- return mapTree.value as FlexTreeUnboxNodeUnion<TTypes>;
669
- }
670
- return getOrCreateChild(mapTree, type, parent) as FlexTreeUnboxNodeUnion<TTypes>;
606
+ ): FlexTreeUnknownUnboxed {
607
+ const value = mapTree.value;
608
+ if (value !== undefined) {
609
+ return value;
671
610
  }
672
611
 
673
- return getOrCreateChild(
674
- mapTree,
675
- schema.allowedTypes,
676
- parent,
677
- ) as FlexTreeUnboxNodeUnion<TTypes>;
678
- }
679
-
680
- /** Unboxes non-polymorphic required and optional fields holding leaf nodes to their values, if applicable */
681
- function unboxedField<TFieldSchema extends FlexFieldSchema>(
682
- field: EagerMapTreeField<FlexAllowedTypes>,
683
- key: FieldKey,
684
- mapTree: ExclusiveMapTree,
685
- parentNode: EagerMapTreeNode<FlexTreeNodeSchema>,
686
- ): FlexTreeUnboxField<TFieldSchema> {
687
- const fieldSchema = field.schema;
688
- const mapTrees =
689
- mapTree.fields.get(key) ?? fail("Key does not exist in unhydrated map tree");
690
-
691
- if (fieldSchema.kind === FieldKinds.required) {
692
- return unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
693
- parent: field,
694
- index: 0,
695
- }) as FlexTreeUnboxField<TFieldSchema>;
696
- }
697
- if (fieldSchema.kind === FieldKinds.optional) {
698
- return (
699
- mapTrees.length > 0
700
- ? unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
701
- parent: field,
702
- index: 0,
703
- })
704
- : undefined
705
- ) as FlexTreeUnboxField<TFieldSchema>;
706
- }
707
-
708
- return getOrCreateField(parentNode, key, fieldSchema) as FlexTreeUnboxField<TFieldSchema>;
612
+ return getOrCreateChild(parent.parent.context, mapTree, schema.allowedTypes, parent);
709
613
  }
710
614
 
711
615
  // #endregion Caching and unboxing utilities