@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
@@ -2,9 +2,9 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { type AnchorNode, type ExclusiveMapTree, type FieldKey, type MapTree, type TreeNodeSchemaIdentifier, type Value } from "../../core/index.js";
6
- import { FlexTreeEntityKind, type FlexTreeField, type FlexTreeMapNode, type FlexTreeNode, type FlexTreeSequenceField, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeTypedNodeUnion, type FlexTreeUnboxField, flexTreeMarker } from "../flex-tree/index.js";
7
- import { type FlexAllowedTypes, FlexFieldSchema, type FlexMapNodeSchema, type FlexTreeNodeSchema } from "../typed-schema/index.js";
5
+ import { type AnchorNode, type ExclusiveMapTree, type FieldKey, type FieldUpPath, type MapTree, type TreeFieldStoredSchema, type TreeNodeSchemaIdentifier, type TreeStoredSchema, type Value } from "../../core/index.js";
6
+ import { type FlexTreeContext, FlexTreeEntityKind, type FlexTreeField, type FlexTreeNode, type FlexTreeSequenceField, type FlexTreeTypedField, flexTreeMarker, type FlexTreeHydratedContext } from "../flex-tree/index.js";
7
+ import { FlexFieldSchema, type FlexTreeNodeSchema, type FlexTreeSchema } from "../typed-schema/index.js";
8
8
  import type { FlexFieldKind } from "../modular-schema/index.js";
9
9
  import { type SequenceFieldEditBuilder } from "../default-schema/index.js";
10
10
  /**
@@ -22,12 +22,12 @@ export declare function isMapTreeNode(flexNode: FlexTreeNode): flexNode is MapTr
22
22
  /**
23
23
  * Checks if the given {@link FlexTreeField} is a {@link MapTreeSequenceField}.
24
24
  */
25
- export declare function isMapTreeSequenceField<T extends FlexAllowedTypes>(field: FlexTreeSequenceField<T> | FlexTreeField): field is MapTreeSequenceField<T>;
25
+ export declare function isMapTreeSequenceField(field: FlexTreeSequenceField | FlexTreeField): field is MapTreeSequenceField;
26
26
  /**
27
27
  * An unhydrated {@link FlexTreeSequenceField}, which has additional editing capabilities.
28
28
  * @remarks When doing a removal edit, a {@link MapTreeSequenceField}'s `editor` returns ownership of the removed {@link ExclusiveMapTree}s to the caller.
29
29
  */
30
- export interface MapTreeSequenceField<T extends FlexAllowedTypes> extends FlexTreeSequenceField<T> {
30
+ export interface MapTreeSequenceField extends FlexTreeSequenceField {
31
31
  readonly editor: MapTreeSequenceFieldEditBuilder;
32
32
  }
33
33
  interface MapTreeSequenceFieldEditBuilder extends SequenceFieldEditBuilder<ExclusiveMapTree[]> {
@@ -51,11 +51,13 @@ interface LocationInField {
51
51
  * MapTreeNodes are unconditionally cached -
52
52
  * when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `MapTreeNode` object.
53
53
  */
54
- export declare class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements MapTreeNode {
55
- readonly schema: TSchema;
54
+ export declare class EagerMapTreeNode implements MapTreeNode {
55
+ readonly context: UnhydratedContext;
56
+ readonly flexSchema: FlexTreeNodeSchema;
56
57
  /** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
57
58
  readonly mapTree: ExclusiveMapTree;
58
59
  private location;
60
+ get schema(): TreeNodeSchemaIdentifier;
59
61
  readonly [flexTreeMarker]: FlexTreeEntityKind.Node;
60
62
  /**
61
63
  * Create a new MapTreeNode.
@@ -65,7 +67,7 @@ export declare class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implem
65
67
  * A `MapTreeNode` may never be constructed more than once for the same {@link MapTree} object.
66
68
  * Instead, it should always be acquired via {@link getOrCreateNode}.
67
69
  */
68
- constructor(schema: TSchema,
70
+ constructor(context: UnhydratedContext, flexSchema: FlexTreeNodeSchema,
69
71
  /** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
70
72
  mapTree: ExclusiveMapTree, location?: LocationInField);
71
73
  get type(): TreeNodeSchemaIdentifier;
@@ -83,32 +85,28 @@ export declare class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implem
83
85
  * @remarks If this node is unparented, this method will return the special {@link unparentedLocation} as the parent.
84
86
  */
85
87
  get parentField(): LocationInField;
86
- is<TSchemaInner extends FlexTreeNodeSchema>(schema: TSchemaInner): this is FlexTreeTypedNode<TSchemaInner>;
87
- tryGetField(key: FieldKey): EagerMapTreeField<FlexAllowedTypes> | undefined;
88
+ is(schema: FlexTreeNodeSchema): boolean;
89
+ tryGetField(key: FieldKey): EagerMapTreeField | undefined;
88
90
  getBoxed(key: string): FlexTreeField;
89
91
  boxedIterator(): IterableIterator<FlexTreeField>;
92
+ keys(): IterableIterator<FieldKey>;
90
93
  get value(): Value;
91
- context: undefined;
92
94
  get anchorNode(): AnchorNode;
93
95
  private walkTree;
94
96
  }
95
97
  /**
96
- * The implementation of a map node created by {@link getOrCreateNode}.
98
+ * Implementation of `FlexTreeContext`.
99
+ *
100
+ * @remarks An editor is required to edit the FlexTree.
97
101
  */
98
- export declare class EagerMapTreeMapNode<TSchema extends FlexMapNodeSchema> extends EagerMapTreeNode<TSchema> implements FlexTreeMapNode<TSchema> {
99
- keys(): IterableIterator<FieldKey>;
100
- values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">>;
101
- entries(): IterableIterator<[
102
- FieldKey,
103
- FlexTreeUnboxField<TSchema["info"], "notEmpty">
104
- ]>;
105
- forEach(callbackFn: (value: FlexTreeUnboxField<TSchema["info"], "notEmpty">, key: FieldKey, map: FlexTreeMapNode<TSchema>) => void, thisArg?: unknown): void;
106
- getBoxed(key: string): FlexTreeTypedField<TSchema["info"]>;
107
- [Symbol.iterator](): IterableIterator<[
108
- FieldKey,
109
- FlexTreeUnboxField<TSchema["info"], "notEmpty">
110
- ]>;
111
- boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema["info"]>>;
102
+ export declare class UnhydratedContext implements FlexTreeContext {
103
+ readonly flexSchema: FlexTreeSchema;
104
+ readonly schema: TreeStoredSchema;
105
+ /**
106
+ * @param flexSchema - Schema to use when working with the tree.
107
+ */
108
+ constructor(flexSchema: FlexTreeSchema);
109
+ isHydrated(): this is FlexTreeHydratedContext;
112
110
  }
113
111
  /**
114
112
  * A readonly {@link FlexTreeField} which wraps an array of {@link MapTrees}.
@@ -118,18 +116,19 @@ export declare class EagerMapTreeMapNode<TSchema extends FlexMapNodeSchema> exte
118
116
  interface MapTreeField extends FlexTreeField {
119
117
  readonly mapTrees: readonly MapTree[];
120
118
  }
121
- declare class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
122
- readonly schema: FlexFieldSchema<FlexFieldKind, T>;
119
+ declare class EagerMapTreeField implements MapTreeField {
120
+ readonly context: UnhydratedContext;
121
+ readonly flexSchema: FlexFieldSchema;
123
122
  readonly key: FieldKey;
124
- readonly parent: EagerMapTreeNode<FlexTreeNodeSchema>;
123
+ readonly parent: EagerMapTreeNode;
125
124
  [flexTreeMarker]: FlexTreeEntityKind.Field;
126
- constructor(schema: FlexFieldSchema<FlexFieldKind, T>, key: FieldKey, parent: EagerMapTreeNode<FlexTreeNodeSchema>);
125
+ get schema(): TreeFieldStoredSchema;
126
+ constructor(context: UnhydratedContext, flexSchema: FlexFieldSchema, key: FieldKey, parent: EagerMapTreeNode);
127
127
  get mapTrees(): readonly ExclusiveMapTree[];
128
128
  get length(): number;
129
- is<TSchemaInner extends FlexFieldSchema>(schema: TSchemaInner): this is FlexTreeTypedField<TSchemaInner>;
130
- boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<T>>;
131
- boxedAt(index: number): FlexTreeTypedNodeUnion<T> | undefined;
132
- context: undefined;
129
+ is<TKind2 extends FlexFieldKind>(kind: TKind2): this is FlexTreeTypedField<TKind2>;
130
+ boxedIterator(): IterableIterator<FlexTreeNode>;
131
+ boxedAt(index: number): FlexTreeNode | undefined;
133
132
  /**
134
133
  * Mutate this field.
135
134
  * @param edit - A function which receives the current `MapTree`s that comprise the contents of the field so that it may be mutated.
@@ -139,6 +138,7 @@ declare class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeFi
139
138
  * This function ensures that the parent MapTree has no empty fields (which is an invariant of `MapTree`) after the mutation.
140
139
  */
141
140
  protected edit(edit: (mapTrees: ExclusiveMapTree[]) => void | ExclusiveMapTree[]): void;
141
+ getFieldPath(): FieldUpPath;
142
142
  }
143
143
  /**
144
144
  * If there exists a {@link EagerMapTreeNode} for the given {@link MapTree}, returns it, otherwise returns `undefined`.
@@ -151,7 +151,7 @@ export declare function tryGetMapTreeNode(mapTree: MapTree): MapTreeNode | undef
151
151
  * @param mapTree - the {@link MapTree} containing the data for this node.
152
152
  * @remarks It must conform to the `nodeSchema`.
153
153
  */
154
- export declare function getOrCreateMapTreeNode(nodeSchema: FlexTreeNodeSchema, mapTree: ExclusiveMapTree): EagerMapTreeNode<FlexTreeNodeSchema>;
154
+ export declare function getOrCreateMapTreeNode(context: UnhydratedContext, nodeSchema: FlexTreeNodeSchema, mapTree: ExclusiveMapTree): EagerMapTreeNode;
155
155
  export declare function unsupportedUsageError(message?: string): Error;
156
156
  export {};
157
157
  //# sourceMappingURL=mapTreeNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapTreeNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/mapTreeNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapTreeNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/mapTreeNode.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,12 @@
4
4
  */
5
5
  var _a, _b;
6
6
  import { assert, oob } from "@fluidframework/core-utils/internal";
7
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
8
  import { EmptyKey, } from "../../core/index.js";
8
- import { brand, fail, getOrCreate, mapIterable } from "../../util/index.js";
9
+ import { brand, fail, getOrCreate, isReadonlyArray, mapIterable } from "../../util/index.js";
9
10
  import { FlexTreeEntityKind, flexTreeMarker, indexForAt, } from "../flex-tree/index.js";
10
- import { FlexFieldSchema, isLazy, schemaIsLeaf, schemaIsMap, schemaIsObjectNode, } from "../typed-schema/index.js";
11
- import { normalizeAllowedTypes } from "../schemaBuilderBase.js";
12
- import { FieldKinds } from "../default-schema/index.js";
13
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
11
+ import { FlexFieldSchema, intoStoredSchemaCollection, isLazy, } from "../typed-schema/index.js";
12
+ import { defaultSchemaPolicy, FieldKinds, } from "../default-schema/index.js";
14
13
  /**
15
14
  * Checks if the given {@link FlexTreeNode} is a {@link MapTreeNode}.
16
15
  */
@@ -31,6 +30,9 @@ export function isMapTreeSequenceField(field) {
31
30
  * when retrieved via {@link getOrCreateNode}, the same {@link MapTree} object will always produce the same `MapTreeNode` object.
32
31
  */
33
32
  export class EagerMapTreeNode {
33
+ get schema() {
34
+ return this.flexSchema.name;
35
+ }
34
36
  /**
35
37
  * Create a new MapTreeNode.
36
38
  * @param location - the parentage of this node, if it is being created underneath an existing node and field, or undefined if not
@@ -39,14 +41,14 @@ export class EagerMapTreeNode {
39
41
  * A `MapTreeNode` may never be constructed more than once for the same {@link MapTree} object.
40
42
  * Instead, it should always be acquired via {@link getOrCreateNode}.
41
43
  */
42
- constructor(schema,
44
+ constructor(context, flexSchema,
43
45
  /** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
44
46
  mapTree, location = unparentedLocation) {
45
- this.schema = schema;
47
+ this.context = context;
48
+ this.flexSchema = flexSchema;
46
49
  this.mapTree = mapTree;
47
50
  this.location = location;
48
51
  this[_a] = FlexTreeEntityKind.Node;
49
- this.context = undefined;
50
52
  assert(!nodeCache.has(mapTree), 0x98b /* A node already exists for the given MapTree */);
51
53
  nodeCache.set(mapTree, this);
52
54
  // Fully demand the tree to ensure that parent pointers are present and accurate on all nodes.
@@ -59,7 +61,7 @@ export class EagerMapTreeNode {
59
61
  this.walkTree();
60
62
  }
61
63
  get type() {
62
- return this.schema.name;
64
+ return this.flexSchema.name;
63
65
  }
64
66
  adoptBy(parent, index) {
65
67
  if (parent !== undefined) {
@@ -80,21 +82,25 @@ export class EagerMapTreeNode {
80
82
  return this.location;
81
83
  }
82
84
  is(schema) {
83
- return schema === this.schema;
85
+ return schema === this.flexSchema;
84
86
  }
85
87
  tryGetField(key) {
86
88
  const field = this.mapTree.fields.get(key);
87
89
  // Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.
88
90
  if (field !== undefined && field.length > 0) {
89
- return getOrCreateField(this, key, this.schema.getFieldSchema(key));
91
+ return getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
90
92
  }
91
93
  }
92
94
  getBoxed(key) {
93
95
  const fieldKey = brand(key);
94
- return getOrCreateField(this, fieldKey, this.schema.getFieldSchema(fieldKey));
96
+ return getOrCreateField(this, fieldKey, this.flexSchema.getFieldSchema(fieldKey));
95
97
  }
96
98
  boxedIterator() {
97
- return mapIterable(this.mapTree.fields.entries(), ([key]) => getOrCreateField(this, key, this.schema.getFieldSchema(key)));
99
+ return mapIterable(this.mapTree.fields.entries(), ([key]) => getOrCreateField(this, key, this.flexSchema.getFieldSchema(key)));
100
+ }
101
+ keys() {
102
+ // TODO: how this should handle missing defaults (and empty keys if they end up being allowed) needs to be determined.
103
+ return this.mapTree.fields.keys();
98
104
  }
99
105
  get value() {
100
106
  return this.mapTree.value;
@@ -106,9 +112,9 @@ export class EagerMapTreeNode {
106
112
  }
107
113
  walkTree() {
108
114
  for (const [key, mapTrees] of this.mapTree.fields) {
109
- const field = getOrCreateField(this, key, this.schema.getFieldSchema(key));
115
+ const field = getOrCreateField(this, key, this.flexSchema.getFieldSchema(key));
110
116
  for (let index = 0; index < field.length; index++) {
111
- const child = getOrCreateChild(mapTrees[index] ?? oob(), this.schema.getFieldSchema(key).allowedTypes, { parent: field, index });
117
+ const child = getOrCreateChild(this.context, mapTrees[index] ?? oob(), this.flexSchema.getFieldSchema(key).allowedTypes, { parent: field, index });
112
118
  // These next asserts detect the case where `getOrCreateChild` gets a cache hit of a different node than the one we're trying to create
113
119
  assert(child.location !== undefined, 0x98d /* Expected node to have parent */);
114
120
  assert(child.location.parent.parent === this, 0x98e /* Node may not be multi-parented */);
@@ -119,43 +125,33 @@ export class EagerMapTreeNode {
119
125
  }
120
126
  }
121
127
  _a = flexTreeMarker;
128
+ // #endregion Nodes
122
129
  /**
123
- * The implementation of a map node created by {@link getOrCreateNode}.
130
+ * Implementation of `FlexTreeContext`.
131
+ *
132
+ * @remarks An editor is required to edit the FlexTree.
124
133
  */
125
- export class EagerMapTreeMapNode extends EagerMapTreeNode {
126
- keys() {
127
- return this.mapTree.fields.keys();
128
- }
129
- values() {
130
- return mapIterable(this.mapTree.fields.keys(), (key) => unboxedField(this.tryGetField(key) ?? fail("Unexpected empty map field"), key, this.mapTree, this));
131
- }
132
- entries() {
133
- return mapIterable(this.mapTree.fields.keys(), (key) => [
134
- key,
135
- unboxedField(this.tryGetField(key) ?? fail("Unexpected empty map field"), key, this.mapTree, this),
136
- ]);
137
- }
138
- forEach(callbackFn, thisArg) {
139
- const fn = thisArg !== undefined ? callbackFn.bind(thisArg) : callbackFn;
140
- for (const [key, value] of this.entries()) {
141
- fn(value, key, this);
142
- }
143
- }
144
- getBoxed(key) {
145
- return super.getBoxed(key);
146
- }
147
- [Symbol.iterator]() {
148
- return this.entries();
134
+ export class UnhydratedContext {
135
+ /**
136
+ * @param flexSchema - Schema to use when working with the tree.
137
+ */
138
+ constructor(flexSchema) {
139
+ this.flexSchema = flexSchema;
140
+ this.schema = {
141
+ rootFieldSchema: flexSchema.rootFieldSchema.stored,
142
+ ...intoStoredSchemaCollection(flexSchema),
143
+ };
149
144
  }
150
- boxedIterator() {
151
- return super.boxedIterator();
152
- }
153
- }
154
- class EagerMapTreeLeafNode extends EagerMapTreeNode {
155
- get value() {
156
- return super.value;
145
+ isHydrated() {
146
+ return false;
157
147
  }
158
148
  }
149
+ const emptyContext = new UnhydratedContext({
150
+ adapters: {},
151
+ nodeSchema: new Map(),
152
+ policy: defaultSchemaPolicy,
153
+ rootFieldSchema: FlexFieldSchema.empty,
154
+ });
159
155
  /**
160
156
  * A special singleton that is the implicit {@link LocationInField} of all un-parented {@link EagerMapTreeNode}s.
161
157
  * @remarks This exists because {@link EagerMapTreeNode.parentField} must return a field.
@@ -170,8 +166,8 @@ const unparentedLocation = {
170
166
  length: 0,
171
167
  key: EmptyKey,
172
168
  parent: undefined,
173
- is(schema) {
174
- return schema === FlexFieldSchema.empty;
169
+ is(kind) {
170
+ return this.schema.kind === kind.identifier;
175
171
  },
176
172
  boxedIterator() {
177
173
  return [].values();
@@ -179,15 +175,22 @@ const unparentedLocation = {
179
175
  boxedAt(index) {
180
176
  return undefined;
181
177
  },
182
- schema: FlexFieldSchema.empty,
183
- context: undefined,
178
+ schema: FlexFieldSchema.empty.stored,
179
+ context: emptyContext,
184
180
  mapTrees: [],
181
+ getFieldPath() {
182
+ fail("unsupported");
183
+ },
185
184
  },
186
185
  index: -1,
187
186
  };
188
187
  class EagerMapTreeField {
189
- constructor(schema, key, parent) {
190
- this.schema = schema;
188
+ get schema() {
189
+ return this.flexSchema.stored;
190
+ }
191
+ constructor(context, flexSchema, key, parent) {
192
+ this.context = context;
193
+ this.flexSchema = flexSchema;
191
194
  this.key = key;
192
195
  this.parent = parent;
193
196
  this[_b] = FlexTreeEntityKind.Field;
@@ -212,12 +215,12 @@ class EagerMapTreeField {
212
215
  get length() {
213
216
  return this.mapTrees.length;
214
217
  }
215
- is(schema) {
216
- return this.schema.equals(schema);
218
+ is(kind) {
219
+ return this.schema.kind === kind.identifier;
217
220
  }
218
221
  boxedIterator() {
219
222
  return this.mapTrees
220
- .map((m, index) => getOrCreateChild(m, this.schema.allowedTypes, {
223
+ .map((m, index) => getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
221
224
  parent: this,
222
225
  index,
223
226
  }))
@@ -230,7 +233,7 @@ class EagerMapTreeField {
230
233
  }
231
234
  const m = this.mapTrees[i];
232
235
  if (m !== undefined) {
233
- return getOrCreateChild(m, this.schema.allowedTypes, {
236
+ return getOrCreateChild(this.context, m, this.flexSchema.allowedTypes, {
234
237
  parent: this,
235
238
  index: i,
236
239
  });
@@ -254,6 +257,9 @@ class EagerMapTreeField {
254
257
  this.parent.mapTree.fields.delete(this.key);
255
258
  }
256
259
  }
260
+ getFieldPath() {
261
+ throw unsupportedUsageError("Editing an array");
262
+ }
257
263
  }
258
264
  _b = flexTreeMarker;
259
265
  class EagerMapTreeOptionalField extends EagerMapTreeField {
@@ -284,7 +290,7 @@ class EagerMapTreeOptionalField extends EagerMapTreeField {
284
290
  get content() {
285
291
  const value = this.mapTrees[0];
286
292
  if (value !== undefined) {
287
- return unboxedUnion(this.schema, value, {
293
+ return unboxed(this.flexSchema, value, {
288
294
  parent: this,
289
295
  index: 0,
290
296
  });
@@ -337,22 +343,16 @@ class EagerMapTreeSequenceField extends EagerMapTreeField {
337
343
  if (i === undefined) {
338
344
  return undefined;
339
345
  }
340
- return unboxedUnion(this.schema, this.mapTrees[i] ?? oob(), { parent: this, index: i });
346
+ return unboxed(this.flexSchema, this.mapTrees[i] ?? oob(), { parent: this, index: i });
341
347
  }
342
348
  map(callbackfn) {
343
349
  return Array.from(this, callbackfn);
344
350
  }
345
- mapBoxed(callbackfn) {
346
- return Array.from(this.boxedIterator(), callbackfn);
347
- }
348
351
  *[Symbol.iterator]() {
349
352
  for (const [i, mapTree] of this.mapTrees.entries()) {
350
- yield unboxedUnion(this.schema, mapTree, { parent: this, index: i });
353
+ yield unboxed(this.flexSchema, mapTree, { parent: this, index: i });
351
354
  }
352
355
  }
353
- getFieldPath() {
354
- throw unsupportedUsageError("Editing an array");
355
- }
356
356
  }
357
357
  // #endregion Fields
358
358
  // #region Caching and unboxing utilities
@@ -375,36 +375,26 @@ export function tryGetMapTreeNode(mapTree) {
375
375
  * @param mapTree - the {@link MapTree} containing the data for this node.
376
376
  * @remarks It must conform to the `nodeSchema`.
377
377
  */
378
- export function getOrCreateMapTreeNode(nodeSchema, mapTree) {
379
- return nodeCache.get(mapTree) ?? createNode(nodeSchema, mapTree, undefined);
378
+ export function getOrCreateMapTreeNode(context, nodeSchema, mapTree) {
379
+ return nodeCache.get(mapTree) ?? createNode(context, nodeSchema, mapTree, undefined);
380
380
  }
381
381
  /** Helper for creating a `MapTreeNode` given the parent field (e.g. when "walking down") */
382
- function getOrCreateChild(mapTree, implicitAllowedTypes, parent) {
382
+ function getOrCreateChild(context, mapTree, allowedTypes, parent) {
383
383
  const cached = nodeCache.get(mapTree);
384
384
  if (cached !== undefined) {
385
385
  return cached;
386
386
  }
387
- const allowedTypes = normalizeAllowedTypes(implicitAllowedTypes);
387
+ assert(isReadonlyArray(allowedTypes), 0xa25 /* invalid types */);
388
388
  const nodeSchema = allowedTypes
389
389
  .map((t) => (isLazy(t) ? t() : t))
390
390
  .find((t) => {
391
- assert(t !== "Any", 0x993 /* 'Any' type is not supported */);
392
391
  return t.name === mapTree.type;
393
392
  }) ?? fail("Unsupported node schema");
394
- return createNode(nodeSchema, mapTree, parent);
393
+ return createNode(context, nodeSchema, mapTree, parent);
395
394
  }
396
395
  /** Always constructs a new node, therefore may not be called twice for the same `MapTree`. */
397
- function createNode(nodeSchema, mapTree, parentField) {
398
- if (schemaIsLeaf(nodeSchema)) {
399
- return new EagerMapTreeLeafNode(nodeSchema, mapTree, parentField);
400
- }
401
- if (schemaIsMap(nodeSchema)) {
402
- return new EagerMapTreeMapNode(nodeSchema, mapTree, parentField);
403
- }
404
- if (schemaIsObjectNode(nodeSchema)) {
405
- return new EagerMapTreeNode(nodeSchema, mapTree, parentField);
406
- }
407
- assert(false, 0x994 /* Unrecognized node kind */);
396
+ function createNode(context, nodeSchema, mapTree, parentField) {
397
+ return new EagerMapTreeNode(context, nodeSchema, mapTree, parentField);
408
398
  }
409
399
  /** Creates a field with the given attributes, or returns a cached field if there is one */
410
400
  function getOrCreateField(parent, key, schema) {
@@ -414,46 +404,23 @@ function getOrCreateField(parent, key, schema) {
414
404
  }
415
405
  if (schema.kind.identifier === FieldKinds.required.identifier ||
416
406
  schema.kind.identifier === FieldKinds.identifier.identifier) {
417
- return new EagerMapTreeRequiredField(schema, key, parent);
407
+ return new EagerMapTreeRequiredField(parent.context, schema, key, parent);
418
408
  }
419
409
  if (schema.kind.identifier === FieldKinds.optional.identifier) {
420
- return new EagerMapTreeOptionalField(schema, key, parent);
410
+ return new EagerMapTreeOptionalField(parent.context, schema, key, parent);
421
411
  }
422
412
  if (schema.kind.identifier === FieldKinds.sequence.identifier) {
423
- return new EagerMapTreeSequenceField(schema, key, parent);
413
+ return new EagerMapTreeSequenceField(parent.context, schema, key, parent);
424
414
  }
425
- return new EagerMapTreeField(schema, key, parent);
415
+ return new EagerMapTreeField(parent.context, schema, key, parent);
426
416
  }
427
- /** Unboxes non-polymorphic leaf nodes to their values, if applicable */
428
- function unboxedUnion(schema, mapTree, parent) {
429
- const type = schema.monomorphicChildType;
430
- if (type !== undefined) {
431
- if (schemaIsLeaf(type)) {
432
- return mapTree.value;
433
- }
434
- return getOrCreateChild(mapTree, type, parent);
435
- }
436
- return getOrCreateChild(mapTree, schema.allowedTypes, parent);
437
- }
438
- /** Unboxes non-polymorphic required and optional fields holding leaf nodes to their values, if applicable */
439
- function unboxedField(field, key, mapTree, parentNode) {
440
- const fieldSchema = field.schema;
441
- const mapTrees = mapTree.fields.get(key) ?? fail("Key does not exist in unhydrated map tree");
442
- if (fieldSchema.kind === FieldKinds.required) {
443
- return unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
444
- parent: field,
445
- index: 0,
446
- });
447
- }
448
- if (fieldSchema.kind === FieldKinds.optional) {
449
- return (mapTrees.length > 0
450
- ? unboxedUnion(fieldSchema, mapTrees[0] ?? oob(), {
451
- parent: field,
452
- index: 0,
453
- })
454
- : undefined);
417
+ /** Unboxes leaf nodes to their values */
418
+ function unboxed(schema, mapTree, parent) {
419
+ const value = mapTree.value;
420
+ if (value !== undefined) {
421
+ return value;
455
422
  }
456
- return getOrCreateField(parentNode, key, fieldSchema);
423
+ return getOrCreateChild(parent.parent.context, mapTree, schema.allowedTypes, parent);
457
424
  }
458
425
  // #endregion Caching and unboxing utilities
459
426
  export function unsupportedUsageError(message) {