@fluidframework/tree 2.50.0 → 2.51.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 (636) hide show
  1. package/.eslintrc.cjs +3 -2
  2. package/.vscode/Tree.code-workspace +14 -1
  3. package/.vscode/settings.json +16 -0
  4. package/CHANGELOG.md +51 -2
  5. package/api-report/tree.alpha.api.md +7 -7
  6. package/dist/core/schema-stored/schema.d.ts +14 -1
  7. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  8. package/dist/core/schema-stored/schema.js.map +1 -1
  9. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  10. package/dist/feature-libraries/default-schema/schemaChecker.js +3 -0
  11. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  12. package/dist/feature-libraries/flex-tree/context.d.ts +7 -2
  13. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  14. package/dist/feature-libraries/flex-tree/context.js +4 -4
  15. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  16. package/dist/feature-libraries/flex-tree/index.d.ts +1 -0
  17. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  18. package/dist/feature-libraries/flex-tree/index.js +3 -1
  19. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  20. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  21. package/dist/feature-libraries/flex-tree/lazyField.js +5 -5
  22. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  23. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +3 -1
  24. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  25. package/dist/feature-libraries/flex-tree/lazyNode.js +5 -3
  26. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  27. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  28. package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -4
  29. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  30. package/dist/feature-libraries/index.d.ts +2 -2
  31. package/dist/feature-libraries/index.d.ts.map +1 -1
  32. package/dist/feature-libraries/index.js +3 -8
  33. package/dist/feature-libraries/index.js.map +1 -1
  34. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  35. package/dist/feature-libraries/modular-schema/comparison.js +0 -3
  36. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  37. package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
  38. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  39. package/dist/feature-libraries/modular-schema/index.js +1 -8
  40. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  41. package/dist/packageVersion.d.ts +1 -1
  42. package/dist/packageVersion.js +1 -1
  43. package/dist/packageVersion.js.map +1 -1
  44. package/dist/shared-tree/index.d.ts +0 -1
  45. package/dist/shared-tree/index.d.ts.map +1 -1
  46. package/dist/shared-tree/index.js +1 -3
  47. package/dist/shared-tree/index.js.map +1 -1
  48. package/dist/shared-tree/schematizeTree.d.ts +1 -1
  49. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  50. package/dist/shared-tree/schematizeTree.js +7 -10
  51. package/dist/shared-tree/schematizeTree.js.map +1 -1
  52. package/dist/shared-tree/schematizingTreeView.d.ts +11 -13
  53. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  54. package/dist/shared-tree/schematizingTreeView.js +60 -83
  55. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  56. package/dist/shared-tree/sharedTreeChangeTypes.d.ts +1 -1
  57. package/dist/shared-tree/sharedTreeChangeTypes.js.map +1 -1
  58. package/dist/shared-tree/tree.d.ts.map +1 -1
  59. package/dist/shared-tree/tree.js +4 -3
  60. package/dist/shared-tree/tree.js.map +1 -1
  61. package/dist/shared-tree/treeAlpha.d.ts +7 -1
  62. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  63. package/dist/shared-tree/treeAlpha.js.map +1 -1
  64. package/dist/shared-tree/treeCheckout.d.ts +7 -2
  65. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  66. package/dist/shared-tree/treeCheckout.js +4 -1
  67. package/dist/shared-tree/treeCheckout.js.map +1 -1
  68. package/dist/simple-tree/api/conciseTree.d.ts +1 -1
  69. package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
  70. package/dist/simple-tree/api/conciseTree.js.map +1 -1
  71. package/dist/simple-tree/api/configuration.d.ts +1 -1
  72. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  73. package/dist/simple-tree/api/configuration.js +5 -5
  74. package/dist/simple-tree/api/configuration.js.map +1 -1
  75. package/dist/simple-tree/api/create.d.ts +3 -1
  76. package/dist/simple-tree/api/create.d.ts.map +1 -1
  77. package/dist/simple-tree/api/create.js +2 -0
  78. package/dist/simple-tree/api/create.js.map +1 -1
  79. package/dist/simple-tree/api/customTree.d.ts +1 -2
  80. package/dist/simple-tree/api/customTree.d.ts.map +1 -1
  81. package/dist/simple-tree/api/customTree.js.map +1 -1
  82. package/dist/simple-tree/api/getJsonSchema.d.ts +1 -1
  83. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  84. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  85. package/dist/simple-tree/api/getSimpleSchema.d.ts +1 -1
  86. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  87. package/dist/simple-tree/api/identifierIndex.d.ts +1 -1
  88. package/dist/simple-tree/api/identifierIndex.js +2 -2
  89. package/dist/simple-tree/api/identifierIndex.js.map +1 -1
  90. package/dist/simple-tree/api/index.d.ts +1 -1
  91. package/dist/simple-tree/api/index.d.ts.map +1 -1
  92. package/dist/simple-tree/api/index.js.map +1 -1
  93. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +4 -19
  94. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  95. package/dist/simple-tree/api/schemaCompatibilityTester.js +31 -82
  96. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  97. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +14 -2
  98. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  99. package/dist/simple-tree/api/schemaCreationUtilities.js +41 -4
  100. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  101. package/dist/simple-tree/api/schemaFactory.d.ts +36 -3
  102. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  103. package/dist/simple-tree/api/schemaFactory.js +18 -18
  104. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  105. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +16 -16
  106. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  107. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  108. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +2 -2
  109. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  110. package/dist/simple-tree/api/schemaFactoryRecursive.js +2 -2
  111. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  112. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  113. package/dist/simple-tree/api/schemaFromSimple.js +4 -4
  114. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  115. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +2 -2
  116. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  117. package/dist/simple-tree/api/simpleTreeIndex.d.ts +2 -2
  118. package/dist/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
  119. package/dist/simple-tree/api/simpleTreeIndex.js +1 -1
  120. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  121. package/dist/simple-tree/api/storedSchema.d.ts +1 -1
  122. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  123. package/dist/simple-tree/api/storedSchema.js +2 -2
  124. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  125. package/dist/simple-tree/api/tree.d.ts +2 -1
  126. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  127. package/dist/simple-tree/api/tree.js.map +1 -1
  128. package/dist/simple-tree/api/treeBeta.d.ts +4 -1
  129. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
  130. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  131. package/dist/simple-tree/api/treeNodeApi.d.ts +1 -2
  132. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  133. package/dist/simple-tree/api/treeNodeApi.js +3 -3
  134. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  135. package/dist/simple-tree/api/typesUnsafe.d.ts +2 -3
  136. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  137. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  138. package/dist/simple-tree/api/verboseTree.d.ts +2 -1
  139. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  140. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  141. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +1 -1
  142. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +2 -2
  143. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  144. package/dist/simple-tree/core/allowedTypes.d.ts +316 -0
  145. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -0
  146. package/dist/simple-tree/core/allowedTypes.js +173 -0
  147. package/dist/simple-tree/core/allowedTypes.js.map +1 -0
  148. package/dist/simple-tree/core/context.d.ts +3 -9
  149. package/dist/simple-tree/core/context.d.ts.map +1 -1
  150. package/dist/simple-tree/core/context.js +3 -11
  151. package/dist/simple-tree/core/context.js.map +1 -1
  152. package/dist/simple-tree/core/flexList.d.ts.map +1 -0
  153. package/dist/simple-tree/core/flexList.js.map +1 -0
  154. package/dist/simple-tree/core/getOrCreateNode.d.ts +1 -1
  155. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  156. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  157. package/dist/simple-tree/core/index.d.ts +9 -3
  158. package/dist/simple-tree/core/index.d.ts.map +1 -1
  159. package/dist/simple-tree/core/index.js +19 -3
  160. package/dist/simple-tree/core/index.js.map +1 -1
  161. package/dist/simple-tree/core/treeNodeKernel.d.ts +8 -1
  162. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  163. package/dist/simple-tree/core/treeNodeKernel.js +24 -20
  164. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  165. package/dist/simple-tree/core/treeNodeSchema.d.ts +182 -39
  166. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  167. package/dist/simple-tree/core/treeNodeSchema.js +47 -17
  168. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  169. package/{lib/simple-tree → dist/simple-tree/core}/treeNodeValid.d.ts +18 -4
  170. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -0
  171. package/dist/simple-tree/{treeNodeValid.js → core/treeNodeValid.js} +41 -11
  172. package/dist/simple-tree/core/treeNodeValid.js.map +1 -0
  173. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
  174. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  175. package/dist/simple-tree/core/walkSchema.d.ts +2 -1
  176. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  177. package/dist/simple-tree/core/walkSchema.js +6 -2
  178. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  179. package/dist/simple-tree/createContext.d.ts +6 -2
  180. package/dist/simple-tree/createContext.d.ts.map +1 -1
  181. package/dist/simple-tree/createContext.js +15 -3
  182. package/dist/simple-tree/createContext.js.map +1 -1
  183. package/dist/{feature-libraries/modular-schema → simple-tree}/discrepancies.d.ts +22 -29
  184. package/dist/simple-tree/discrepancies.d.ts.map +1 -0
  185. package/dist/simple-tree/discrepancies.js +382 -0
  186. package/dist/simple-tree/discrepancies.js.map +1 -0
  187. package/dist/simple-tree/fieldSchema.d.ts +423 -0
  188. package/dist/simple-tree/fieldSchema.d.ts.map +1 -0
  189. package/dist/simple-tree/{schemaTypes.js → fieldSchema.js} +5 -195
  190. package/dist/simple-tree/fieldSchema.js.map +1 -0
  191. package/dist/simple-tree/index.d.ts +7 -6
  192. package/dist/simple-tree/index.d.ts.map +1 -1
  193. package/dist/simple-tree/index.js +17 -11
  194. package/dist/simple-tree/index.js.map +1 -1
  195. package/dist/simple-tree/leafNodeSchema.d.ts +14 -5
  196. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  197. package/dist/simple-tree/leafNodeSchema.js +117 -2
  198. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  199. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
  200. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  201. package/dist/simple-tree/node-kinds/array/arrayNode.js +97 -26
  202. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  203. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +2 -2
  204. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  205. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  206. package/dist/simple-tree/node-kinds/common.d.ts +16 -0
  207. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -0
  208. package/dist/simple-tree/node-kinds/common.js +42 -0
  209. package/dist/simple-tree/node-kinds/common.js.map +1 -0
  210. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  211. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  212. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  213. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -3
  214. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  215. package/dist/simple-tree/node-kinds/map/mapNode.js +64 -26
  216. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  217. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +2 -2
  218. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  219. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  220. package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
  221. package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  222. package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
  223. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +19 -5
  224. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  225. package/dist/simple-tree/node-kinds/object/objectNode.js +131 -27
  226. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  227. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +11 -4
  228. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  229. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  230. package/dist/simple-tree/node-kinds/record/recordNode.d.ts +2 -2
  231. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  232. package/dist/simple-tree/node-kinds/record/recordNode.js +41 -13
  233. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  234. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  235. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  236. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  237. package/dist/simple-tree/prepareForInsertion.d.ts +2 -2
  238. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  239. package/dist/simple-tree/prepareForInsertion.js +3 -3
  240. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  241. package/dist/simple-tree/simpleSchema.d.ts +2 -2
  242. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  243. package/dist/simple-tree/simpleSchema.js.map +1 -1
  244. package/dist/simple-tree/toStoredSchema.d.ts +1 -1
  245. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  246. package/dist/simple-tree/toStoredSchema.js +6 -7
  247. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  248. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +5 -11
  249. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  250. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +25 -395
  251. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  252. package/dist/simple-tree/unsafeUnknownSchema.d.ts +52 -0
  253. package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -0
  254. package/dist/simple-tree/unsafeUnknownSchema.js +13 -0
  255. package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -0
  256. package/dist/simple-tree/walkFieldSchema.d.ts +1 -1
  257. package/dist/simple-tree/walkFieldSchema.js +2 -2
  258. package/dist/simple-tree/walkFieldSchema.js.map +1 -1
  259. package/dist/tableSchema.d.ts +12 -12
  260. package/dist/treeFactory.d.ts +0 -1
  261. package/dist/treeFactory.d.ts.map +1 -1
  262. package/dist/treeFactory.js +0 -1
  263. package/dist/treeFactory.js.map +1 -1
  264. package/lib/core/schema-stored/schema.d.ts +14 -1
  265. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  266. package/lib/core/schema-stored/schema.js.map +1 -1
  267. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  268. package/lib/feature-libraries/default-schema/schemaChecker.js +3 -0
  269. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  270. package/lib/feature-libraries/flex-tree/context.d.ts +7 -2
  271. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  272. package/lib/feature-libraries/flex-tree/context.js +4 -4
  273. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  274. package/lib/feature-libraries/flex-tree/index.d.ts +1 -0
  275. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  276. package/lib/feature-libraries/flex-tree/index.js +1 -0
  277. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  278. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  279. package/lib/feature-libraries/flex-tree/lazyField.js +6 -6
  280. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  281. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +3 -1
  282. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  283. package/lib/feature-libraries/flex-tree/lazyNode.js +3 -1
  284. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  285. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  286. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -2
  287. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  288. package/lib/feature-libraries/index.d.ts +2 -2
  289. package/lib/feature-libraries/index.d.ts.map +1 -1
  290. package/lib/feature-libraries/index.js +2 -2
  291. package/lib/feature-libraries/index.js.map +1 -1
  292. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  293. package/lib/feature-libraries/modular-schema/comparison.js +0 -3
  294. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  295. package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
  296. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  297. package/lib/feature-libraries/modular-schema/index.js +0 -1
  298. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  299. package/lib/packageVersion.d.ts +1 -1
  300. package/lib/packageVersion.js +1 -1
  301. package/lib/packageVersion.js.map +1 -1
  302. package/lib/shared-tree/index.d.ts +0 -1
  303. package/lib/shared-tree/index.d.ts.map +1 -1
  304. package/lib/shared-tree/index.js +0 -1
  305. package/lib/shared-tree/index.js.map +1 -1
  306. package/lib/shared-tree/schematizeTree.d.ts +1 -1
  307. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  308. package/lib/shared-tree/schematizeTree.js +5 -8
  309. package/lib/shared-tree/schematizeTree.js.map +1 -1
  310. package/lib/shared-tree/schematizingTreeView.d.ts +11 -13
  311. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  312. package/lib/shared-tree/schematizingTreeView.js +61 -83
  313. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  314. package/lib/shared-tree/sharedTreeChangeTypes.d.ts +1 -1
  315. package/lib/shared-tree/sharedTreeChangeTypes.js.map +1 -1
  316. package/lib/shared-tree/tree.d.ts.map +1 -1
  317. package/lib/shared-tree/tree.js +4 -3
  318. package/lib/shared-tree/tree.js.map +1 -1
  319. package/lib/shared-tree/treeAlpha.d.ts +7 -1
  320. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  321. package/lib/shared-tree/treeAlpha.js.map +1 -1
  322. package/lib/shared-tree/treeCheckout.d.ts +7 -2
  323. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  324. package/lib/shared-tree/treeCheckout.js +5 -2
  325. package/lib/shared-tree/treeCheckout.js.map +1 -1
  326. package/lib/simple-tree/api/conciseTree.d.ts +1 -1
  327. package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
  328. package/lib/simple-tree/api/conciseTree.js.map +1 -1
  329. package/lib/simple-tree/api/configuration.d.ts +1 -1
  330. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  331. package/lib/simple-tree/api/configuration.js +2 -2
  332. package/lib/simple-tree/api/configuration.js.map +1 -1
  333. package/lib/simple-tree/api/create.d.ts +3 -1
  334. package/lib/simple-tree/api/create.d.ts.map +1 -1
  335. package/lib/simple-tree/api/create.js +2 -0
  336. package/lib/simple-tree/api/create.js.map +1 -1
  337. package/lib/simple-tree/api/customTree.d.ts +1 -2
  338. package/lib/simple-tree/api/customTree.d.ts.map +1 -1
  339. package/lib/simple-tree/api/customTree.js.map +1 -1
  340. package/lib/simple-tree/api/getJsonSchema.d.ts +1 -1
  341. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  342. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  343. package/lib/simple-tree/api/getSimpleSchema.d.ts +1 -1
  344. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  345. package/lib/simple-tree/api/identifierIndex.d.ts +1 -1
  346. package/lib/simple-tree/api/identifierIndex.js +1 -1
  347. package/lib/simple-tree/api/identifierIndex.js.map +1 -1
  348. package/lib/simple-tree/api/index.d.ts +1 -1
  349. package/lib/simple-tree/api/index.d.ts.map +1 -1
  350. package/lib/simple-tree/api/index.js.map +1 -1
  351. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +4 -19
  352. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  353. package/lib/simple-tree/api/schemaCompatibilityTester.js +25 -76
  354. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  355. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +14 -2
  356. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  357. package/lib/simple-tree/api/schemaCreationUtilities.js +40 -4
  358. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  359. package/lib/simple-tree/api/schemaFactory.d.ts +36 -3
  360. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  361. package/lib/simple-tree/api/schemaFactory.js +2 -2
  362. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  363. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +16 -16
  364. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  365. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  366. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +2 -2
  367. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  368. package/lib/simple-tree/api/schemaFactoryRecursive.js +1 -1
  369. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  370. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  371. package/lib/simple-tree/api/schemaFromSimple.js +1 -1
  372. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  373. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +1 -1
  374. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  375. package/lib/simple-tree/api/simpleTreeIndex.d.ts +2 -2
  376. package/lib/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
  377. package/lib/simple-tree/api/simpleTreeIndex.js +2 -2
  378. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  379. package/lib/simple-tree/api/storedSchema.d.ts +1 -1
  380. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  381. package/lib/simple-tree/api/storedSchema.js +2 -2
  382. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  383. package/lib/simple-tree/api/tree.d.ts +2 -1
  384. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  385. package/lib/simple-tree/api/tree.js.map +1 -1
  386. package/lib/simple-tree/api/treeBeta.d.ts +4 -1
  387. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
  388. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  389. package/lib/simple-tree/api/treeNodeApi.d.ts +1 -2
  390. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  391. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  392. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  393. package/lib/simple-tree/api/typesUnsafe.d.ts +2 -3
  394. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  395. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  396. package/lib/simple-tree/api/verboseTree.d.ts +2 -1
  397. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  398. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  399. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +1 -1
  400. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +1 -1
  401. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  402. package/lib/simple-tree/core/allowedTypes.d.ts +316 -0
  403. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -0
  404. package/lib/simple-tree/core/allowedTypes.js +162 -0
  405. package/lib/simple-tree/core/allowedTypes.js.map +1 -0
  406. package/lib/simple-tree/core/context.d.ts +3 -9
  407. package/lib/simple-tree/core/context.d.ts.map +1 -1
  408. package/lib/simple-tree/core/context.js +0 -8
  409. package/lib/simple-tree/core/context.js.map +1 -1
  410. package/lib/simple-tree/core/flexList.d.ts.map +1 -0
  411. package/lib/simple-tree/core/flexList.js.map +1 -0
  412. package/lib/simple-tree/core/getOrCreateNode.d.ts +1 -1
  413. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  414. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  415. package/lib/simple-tree/core/index.d.ts +9 -3
  416. package/lib/simple-tree/core/index.d.ts.map +1 -1
  417. package/lib/simple-tree/core/index.js +6 -3
  418. package/lib/simple-tree/core/index.js.map +1 -1
  419. package/lib/simple-tree/core/treeNodeKernel.d.ts +8 -1
  420. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  421. package/lib/simple-tree/core/treeNodeKernel.js +10 -6
  422. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  423. package/lib/simple-tree/core/treeNodeSchema.d.ts +182 -39
  424. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  425. package/lib/simple-tree/core/treeNodeSchema.js +44 -14
  426. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  427. package/{dist/simple-tree → lib/simple-tree/core}/treeNodeValid.d.ts +18 -4
  428. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -0
  429. package/lib/simple-tree/{treeNodeValid.js → core/treeNodeValid.js} +31 -3
  430. package/lib/simple-tree/core/treeNodeValid.js.map +1 -0
  431. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
  432. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  433. package/lib/simple-tree/core/walkSchema.d.ts +2 -1
  434. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  435. package/lib/simple-tree/core/walkSchema.js +7 -3
  436. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  437. package/lib/simple-tree/createContext.d.ts +6 -2
  438. package/lib/simple-tree/createContext.d.ts.map +1 -1
  439. package/lib/simple-tree/createContext.js +13 -2
  440. package/lib/simple-tree/createContext.js.map +1 -1
  441. package/lib/{feature-libraries/modular-schema → simple-tree}/discrepancies.d.ts +22 -29
  442. package/lib/simple-tree/discrepancies.d.ts.map +1 -0
  443. package/lib/simple-tree/discrepancies.js +376 -0
  444. package/lib/simple-tree/discrepancies.js.map +1 -0
  445. package/lib/simple-tree/fieldSchema.d.ts +423 -0
  446. package/lib/simple-tree/fieldSchema.d.ts.map +1 -0
  447. package/lib/simple-tree/{schemaTypes.js → fieldSchema.js} +3 -183
  448. package/lib/simple-tree/fieldSchema.js.map +1 -0
  449. package/lib/simple-tree/index.d.ts +7 -6
  450. package/lib/simple-tree/index.d.ts.map +1 -1
  451. package/lib/simple-tree/index.js +4 -3
  452. package/lib/simple-tree/index.js.map +1 -1
  453. package/lib/simple-tree/leafNodeSchema.d.ts +14 -5
  454. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  455. package/lib/simple-tree/leafNodeSchema.js +117 -3
  456. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  457. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
  458. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  459. package/lib/simple-tree/node-kinds/array/arrayNode.js +86 -15
  460. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  461. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +2 -2
  462. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  463. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js +1 -1
  464. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  465. package/lib/simple-tree/node-kinds/common.d.ts +16 -0
  466. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -0
  467. package/lib/simple-tree/node-kinds/common.js +38 -0
  468. package/lib/simple-tree/node-kinds/common.js.map +1 -0
  469. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  470. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  471. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  472. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -3
  473. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  474. package/lib/simple-tree/node-kinds/map/mapNode.js +51 -13
  475. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  476. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +2 -2
  477. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  478. package/lib/simple-tree/node-kinds/map/mapNodeTypes.js +1 -1
  479. package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  480. package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
  481. package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
  482. package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
  483. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +19 -5
  484. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  485. package/lib/simple-tree/node-kinds/object/objectNode.js +116 -14
  486. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  487. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +11 -4
  488. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  489. package/lib/simple-tree/node-kinds/object/objectNodeTypes.js +1 -1
  490. package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  491. package/lib/simple-tree/node-kinds/record/recordNode.d.ts +2 -2
  492. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  493. package/lib/simple-tree/node-kinds/record/recordNode.js +40 -12
  494. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  495. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  496. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  497. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js +1 -1
  498. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  499. package/lib/simple-tree/prepareForInsertion.d.ts +2 -2
  500. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  501. package/lib/simple-tree/prepareForInsertion.js +2 -2
  502. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  503. package/lib/simple-tree/simpleSchema.d.ts +2 -2
  504. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  505. package/lib/simple-tree/simpleSchema.js.map +1 -1
  506. package/lib/simple-tree/toStoredSchema.d.ts +1 -1
  507. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  508. package/lib/simple-tree/toStoredSchema.js +2 -3
  509. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  510. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +5 -11
  511. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  512. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +10 -381
  513. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  514. package/lib/simple-tree/unsafeUnknownSchema.d.ts +52 -0
  515. package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -0
  516. package/lib/simple-tree/unsafeUnknownSchema.js +10 -0
  517. package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -0
  518. package/lib/simple-tree/walkFieldSchema.d.ts +1 -1
  519. package/lib/simple-tree/walkFieldSchema.js +1 -1
  520. package/lib/simple-tree/walkFieldSchema.js.map +1 -1
  521. package/lib/tableSchema.d.ts +12 -12
  522. package/lib/treeFactory.d.ts +0 -1
  523. package/lib/treeFactory.d.ts.map +1 -1
  524. package/lib/treeFactory.js +0 -1
  525. package/lib/treeFactory.js.map +1 -1
  526. package/package.json +22 -23
  527. package/src/core/schema-stored/schema.ts +14 -1
  528. package/src/feature-libraries/default-schema/schemaChecker.ts +3 -0
  529. package/src/feature-libraries/flex-tree/context.ts +10 -5
  530. package/src/feature-libraries/flex-tree/index.ts +2 -0
  531. package/src/feature-libraries/flex-tree/lazyField.ts +10 -6
  532. package/src/feature-libraries/flex-tree/lazyNode.ts +6 -1
  533. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -2
  534. package/src/feature-libraries/index.ts +1 -15
  535. package/src/feature-libraries/modular-schema/comparison.ts +0 -4
  536. package/src/feature-libraries/modular-schema/index.ts +0 -17
  537. package/src/packageVersion.ts +1 -1
  538. package/src/shared-tree/index.ts +0 -2
  539. package/src/shared-tree/schematizeTree.ts +5 -9
  540. package/src/shared-tree/schematizingTreeView.ts +75 -113
  541. package/src/shared-tree/sharedTreeChangeTypes.ts +1 -1
  542. package/src/shared-tree/tree.ts +4 -3
  543. package/src/shared-tree/treeAlpha.ts +7 -1
  544. package/src/shared-tree/treeCheckout.ts +15 -2
  545. package/src/simple-tree/api/conciseTree.ts +1 -2
  546. package/src/simple-tree/api/configuration.ts +7 -4
  547. package/src/simple-tree/api/create.ts +3 -1
  548. package/src/simple-tree/api/customTree.ts +1 -2
  549. package/src/simple-tree/api/getJsonSchema.ts +1 -1
  550. package/src/simple-tree/api/getSimpleSchema.ts +1 -1
  551. package/src/simple-tree/api/identifierIndex.ts +1 -1
  552. package/src/simple-tree/api/index.ts +2 -0
  553. package/src/simple-tree/api/schemaCompatibilityTester.ts +38 -128
  554. package/src/simple-tree/api/schemaCreationUtilities.ts +50 -5
  555. package/src/simple-tree/api/schemaFactory.ts +45 -10
  556. package/src/simple-tree/api/schemaFactoryAlpha.ts +4 -7
  557. package/src/simple-tree/api/schemaFactoryRecursive.ts +9 -4
  558. package/src/simple-tree/api/schemaFromSimple.ts +2 -3
  559. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +1 -1
  560. package/src/simple-tree/api/simpleTreeIndex.ts +8 -3
  561. package/src/simple-tree/api/storedSchema.ts +1 -2
  562. package/src/simple-tree/api/tree.ts +2 -2
  563. package/src/simple-tree/api/treeBeta.ts +4 -1
  564. package/src/simple-tree/api/treeNodeApi.ts +5 -8
  565. package/src/simple-tree/api/typesUnsafe.ts +5 -4
  566. package/src/simple-tree/api/verboseTree.ts +3 -6
  567. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +1 -1
  568. package/src/simple-tree/core/README.md +1 -1
  569. package/src/simple-tree/core/allowedTypes.ts +496 -0
  570. package/src/simple-tree/core/context.ts +3 -10
  571. package/src/simple-tree/core/getOrCreateNode.ts +1 -1
  572. package/src/simple-tree/core/index.ts +62 -9
  573. package/src/simple-tree/core/treeNodeKernel.ts +12 -6
  574. package/src/simple-tree/core/treeNodeSchema.ts +247 -63
  575. package/src/simple-tree/{treeNodeValid.ts → core/treeNodeValid.ts} +59 -15
  576. package/src/simple-tree/core/unhydratedFlexTree.ts +1 -1
  577. package/src/simple-tree/core/walkSchema.ts +9 -5
  578. package/src/simple-tree/createContext.ts +26 -2
  579. package/src/simple-tree/discrepancies.ts +648 -0
  580. package/src/simple-tree/fieldSchema.ts +734 -0
  581. package/src/simple-tree/index.ts +41 -31
  582. package/src/simple-tree/leafNodeSchema.ts +137 -5
  583. package/src/simple-tree/node-kinds/array/arrayNode.ts +141 -30
  584. package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +5 -7
  585. package/src/simple-tree/node-kinds/common.ts +60 -0
  586. package/src/simple-tree/node-kinds/index.ts +2 -0
  587. package/src/simple-tree/node-kinds/map/mapNode.ts +91 -33
  588. package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +5 -7
  589. package/src/simple-tree/node-kinds/object/index.ts +2 -0
  590. package/src/simple-tree/node-kinds/object/objectNode.ts +205 -25
  591. package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +22 -5
  592. package/src/simple-tree/node-kinds/record/recordNode.ts +68 -26
  593. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +6 -8
  594. package/src/simple-tree/prepareForInsertion.ts +7 -6
  595. package/src/simple-tree/simpleSchema.ts +2 -2
  596. package/src/simple-tree/toStoredSchema.ts +2 -3
  597. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +12 -494
  598. package/src/simple-tree/unsafeUnknownSchema.ts +70 -0
  599. package/src/simple-tree/walkFieldSchema.ts +1 -1
  600. package/src/treeFactory.ts +0 -1
  601. package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +0 -1
  602. package/dist/feature-libraries/modular-schema/discrepancies.js +0 -361
  603. package/dist/feature-libraries/modular-schema/discrepancies.js.map +0 -1
  604. package/dist/shared-tree/checkoutFlexTreeView.d.ts +0 -58
  605. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +0 -1
  606. package/dist/shared-tree/checkoutFlexTreeView.js +0 -77
  607. package/dist/shared-tree/checkoutFlexTreeView.js.map +0 -1
  608. package/dist/simple-tree/flexList.d.ts.map +0 -1
  609. package/dist/simple-tree/flexList.js.map +0 -1
  610. package/dist/simple-tree/schemaTypes.d.ts +0 -856
  611. package/dist/simple-tree/schemaTypes.d.ts.map +0 -1
  612. package/dist/simple-tree/schemaTypes.js.map +0 -1
  613. package/dist/simple-tree/treeNodeValid.d.ts.map +0 -1
  614. package/dist/simple-tree/treeNodeValid.js.map +0 -1
  615. package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +0 -1
  616. package/lib/feature-libraries/modular-schema/discrepancies.js +0 -354
  617. package/lib/feature-libraries/modular-schema/discrepancies.js.map +0 -1
  618. package/lib/shared-tree/checkoutFlexTreeView.d.ts +0 -58
  619. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +0 -1
  620. package/lib/shared-tree/checkoutFlexTreeView.js +0 -72
  621. package/lib/shared-tree/checkoutFlexTreeView.js.map +0 -1
  622. package/lib/simple-tree/flexList.d.ts.map +0 -1
  623. package/lib/simple-tree/flexList.js.map +0 -1
  624. package/lib/simple-tree/schemaTypes.d.ts +0 -856
  625. package/lib/simple-tree/schemaTypes.d.ts.map +0 -1
  626. package/lib/simple-tree/schemaTypes.js.map +0 -1
  627. package/lib/simple-tree/treeNodeValid.d.ts.map +0 -1
  628. package/lib/simple-tree/treeNodeValid.js.map +0 -1
  629. package/src/feature-libraries/modular-schema/discrepancies.ts +0 -567
  630. package/src/shared-tree/checkoutFlexTreeView.ts +0 -100
  631. package/src/simple-tree/schemaTypes.ts +0 -1420
  632. /package/dist/simple-tree/{flexList.d.ts → core/flexList.d.ts} +0 -0
  633. /package/dist/simple-tree/{flexList.js → core/flexList.js} +0 -0
  634. /package/lib/simple-tree/{flexList.d.ts → core/flexList.d.ts} +0 -0
  635. /package/lib/simple-tree/{flexList.js → core/flexList.js} +0 -0
  636. /package/src/simple-tree/{flexList.ts → core/flexList.ts} +0 -0
@@ -1,567 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- import { assert } from "@fluidframework/core-utils/internal";
7
-
8
- import {
9
- type FieldKey,
10
- type FieldKindIdentifier,
11
- LeafNodeStoredSchema,
12
- MapNodeStoredSchema,
13
- ObjectNodeStoredSchema,
14
- storedEmptyFieldSchema,
15
- type TreeFieldStoredSchema,
16
- type TreeNodeSchemaIdentifier,
17
- type TreeNodeStoredSchema,
18
- type TreeStoredSchema,
19
- type TreeTypeSet,
20
- type ValueSchema,
21
- } from "../../core/index.js";
22
- import { brand } from "../../util/index.js";
23
-
24
- // TODO:
25
- // The comparisons in this file seem redundant with those in comparison.ts.
26
- // Rather than both existing, one of which just returns boolean and the other which returns additional details, a simple comparison which returns everything needed should be used.
27
-
28
- /**
29
- * Discriminated union (keyed on `mismatch`) of discrepancies between a view and stored schema.
30
- * @remarks
31
- *
32
- * 1. FieldDiscrepancy
33
- *
34
- * `FieldDiscrepancy` represents the differences between two `TreeFieldStoredSchema` objects. It consists of
35
- * three types of incompatibilities:
36
- *
37
- * - FieldKindDiscrepancy: Indicates the differences in `FieldKindIdentifier` between two `TreeFieldStoredSchema`
38
- * objects (e.g., optional, required, sequence, etc.).
39
- * - AllowedTypesDiscrepancy: Indicates the differences in the allowed child types between the two schemas.
40
- * - ValueSchemaDiscrepancy: Specifically indicates the differences in the `ValueSchema` of two
41
- * `LeafNodeStoredSchema` objects.
42
- *
43
- * 2. NodeDiscrepancy
44
- *
45
- * `NodeDiscrepancy` represents the differences between two `TreeNodeStoredSchema` objects and includes:
46
- *
47
- * - NodeKindDiscrepancy: Indicates the differences in the types of `TreeNodeStoredSchema` (currently supports
48
- * `ObjectNodeStoredSchema`, `MapNodeStoredSchema`, and `LeafNodeStoredSchema`).
49
- * - NodeFieldsDiscrepancy: Indicates the `FieldDiscrepancy` of `TreeFieldStoredSchema` within two
50
- * `TreeNodeStoredSchema`. It includes an array of `FieldDiscrepancy` instances in the `differences` field.
51
- *
52
- * When comparing two nodes for compatibility, it only makes sense to compare their fields if the nodes are of
53
- * the same kind (map, object, leaf).
54
- *
55
- * 3. Discrepancy
56
- *
57
- * Discrepancy consists of both `NodeDiscrepancy` and `FieldDiscrepancy`, representing any kind of
58
- * schema differences. See {@link getAllowedContentDiscrepancies} for more details about how we process it
59
- * and the ordering.
60
- */
61
- export type Discrepancy = FieldDiscrepancy | NodeDiscrepancy;
62
-
63
- export type NodeDiscrepancy = NodeKindDiscrepancy | NodeFieldsDiscrepancy;
64
-
65
- /**
66
- * A discrepancy in the declaration of a field.
67
- */
68
- export type FieldDiscrepancy =
69
- | AllowedTypeDiscrepancy
70
- | FieldKindDiscrepancy
71
- | ValueSchemaDiscrepancy;
72
-
73
- /**
74
- * Information about where a field discrepancy is located within a collection of schema.
75
- */
76
- export interface FieldDiscrepancyLocation {
77
- /**
78
- * The {@link TreeNodeSchemaIdentifier} that contains the discrepancy.
79
- *
80
- * Undefined iff the discrepancy is part of the root field schema.
81
- */
82
- identifier: TreeNodeSchemaIdentifier | undefined;
83
- /**
84
- * The {@link FieldKey} for the field that contains the discrepancy.
85
- * Undefined when:
86
- * - the discrepancy is part of the root field schema
87
- * - the discrepancy is for 'all fields' of a map node
88
- */
89
- fieldKey: FieldKey | undefined;
90
- }
91
-
92
- /**
93
- * A discrepancy in the allowed types of a field.
94
- *
95
- * @remarks
96
- * This reports the symmetric difference of allowed types in view/stored to enable more efficient checks for compatibility
97
- */
98
- export interface AllowedTypeDiscrepancy extends FieldDiscrepancyLocation {
99
- mismatch: "allowedTypes";
100
- /**
101
- * List of allowed type identifiers in viewed schema which are not allowed in stored schema
102
- */
103
- view: TreeNodeSchemaIdentifier[];
104
- /**
105
- * List of allowed type identifiers in stored schema which are not allowed in view schema
106
- */
107
- stored: TreeNodeSchemaIdentifier[];
108
- }
109
-
110
- export interface FieldKindDiscrepancy extends FieldDiscrepancyLocation {
111
- mismatch: "fieldKind";
112
- view: FieldKindIdentifier;
113
- stored: FieldKindIdentifier;
114
- }
115
-
116
- export interface ValueSchemaDiscrepancy {
117
- identifier: TreeNodeSchemaIdentifier;
118
- mismatch: "valueSchema";
119
- view: ValueSchema | undefined;
120
- stored: ValueSchema | undefined;
121
- }
122
-
123
- export interface NodeKindDiscrepancy {
124
- identifier: TreeNodeSchemaIdentifier;
125
- mismatch: "nodeKind";
126
- view: SchemaFactoryNodeKind | undefined;
127
- stored: SchemaFactoryNodeKind | undefined;
128
- }
129
-
130
- export interface NodeFieldsDiscrepancy {
131
- identifier: TreeNodeSchemaIdentifier;
132
- mismatch: "fields";
133
- differences: FieldDiscrepancy[];
134
- }
135
-
136
- type SchemaFactoryNodeKind = "object" | "leaf" | "map";
137
-
138
- function getNodeSchemaType(nodeSchema: TreeNodeStoredSchema): SchemaFactoryNodeKind {
139
- if (nodeSchema instanceof ObjectNodeStoredSchema) {
140
- return "object";
141
- } else if (nodeSchema instanceof MapNodeStoredSchema) {
142
- return "map";
143
- } else if (nodeSchema instanceof LeafNodeStoredSchema) {
144
- return "leaf";
145
- }
146
- throwUnsupportedNodeType(nodeSchema.constructor.name);
147
- }
148
-
149
- /**
150
- * Finds and reports discrepancies between a view schema and a stored schema.
151
- *
152
- * See documentation on {@link Discrepancy} for details of possible discrepancies.
153
- * @remarks
154
- * This function does not attempt to distinguish between equivalent representations of a node/field involving extraneous never trees.
155
- * For example, a Forbidden field with allowed type set `[]` is equivalent to an optional field with allowed type set `[]`,
156
- * as well as an optional field with an allowed type set containing only unconstructable types.
157
- *
158
- * It is up to the caller to determine whether such discrepancies matter.
159
- */
160
- export function* getAllowedContentDiscrepancies(
161
- view: TreeStoredSchema,
162
- stored: TreeStoredSchema,
163
- ): Iterable<Discrepancy> {
164
- // check root schema discrepancies
165
- yield* getFieldDiscrepancies(
166
- view.rootFieldSchema,
167
- stored.rootFieldSchema,
168
- undefined,
169
- undefined,
170
- );
171
-
172
- for (const result of compareMaps(view.nodeSchema, stored.nodeSchema)) {
173
- switch (result.type) {
174
- case "aExtra": {
175
- const viewType = getNodeSchemaType(result.value);
176
- yield {
177
- identifier: result.key,
178
- mismatch: "nodeKind",
179
- view: viewType,
180
- stored: undefined,
181
- };
182
- break;
183
- }
184
- case "bExtra": {
185
- const storedType = getNodeSchemaType(result.value);
186
- yield {
187
- identifier: result.key,
188
- mismatch: "nodeKind",
189
- view: undefined,
190
- stored: storedType,
191
- };
192
- break;
193
- }
194
- case "both": {
195
- yield* getNodeDiscrepancies(result.key, result.valueA, result.valueB);
196
- break;
197
- }
198
- default:
199
- break;
200
- }
201
- }
202
- }
203
-
204
- function* getNodeDiscrepancies(
205
- identifier: TreeNodeSchemaIdentifier,
206
- view: TreeNodeStoredSchema,
207
- stored: TreeNodeStoredSchema,
208
- ): Iterable<Discrepancy> {
209
- const viewType = getNodeSchemaType(view);
210
- const storedType = getNodeSchemaType(stored);
211
- if (viewType !== storedType) {
212
- yield {
213
- identifier,
214
- mismatch: "nodeKind",
215
- view: viewType,
216
- stored: storedType,
217
- };
218
- return;
219
- }
220
-
221
- switch (viewType) {
222
- case "object": {
223
- const differences = Array.from(
224
- trackObjectNodeDiscrepancies(
225
- identifier,
226
- view as ObjectNodeStoredSchema,
227
- stored as ObjectNodeStoredSchema,
228
- ),
229
- );
230
- if (differences.length > 0) {
231
- yield {
232
- identifier,
233
- mismatch: "fields",
234
- differences,
235
- } satisfies NodeFieldsDiscrepancy;
236
- }
237
- break;
238
- }
239
- case "map":
240
- yield* getFieldDiscrepancies(
241
- (view as MapNodeStoredSchema).mapFields,
242
- (stored as MapNodeStoredSchema).mapFields,
243
- identifier,
244
- undefined,
245
- );
246
- break;
247
- case "leaf": {
248
- const viewValue = (view as LeafNodeStoredSchema).leafValue;
249
- const storedValue = (stored as LeafNodeStoredSchema).leafValue;
250
- if (viewValue !== storedValue) {
251
- yield {
252
- identifier,
253
- mismatch: "valueSchema",
254
- view: viewValue,
255
- stored: storedValue,
256
- };
257
- }
258
- break;
259
- }
260
- default:
261
- break;
262
- }
263
- }
264
-
265
- /**
266
- * The function to track the discrepancies between two field stored schemas.
267
- *
268
- * @param keyOrRoot - If the key is missing, it indicates that this is the root field schema.
269
- */
270
- function* getFieldDiscrepancies(
271
- view: TreeFieldStoredSchema,
272
- stored: TreeFieldStoredSchema,
273
- identifier: TreeNodeSchemaIdentifier | undefined,
274
- fieldKey: FieldKey | undefined,
275
- ): Iterable<FieldDiscrepancy> {
276
- // Only track the symmetric differences of two sets.
277
- const findSetDiscrepancies = (
278
- a: TreeTypeSet,
279
- b: TreeTypeSet,
280
- ): [TreeNodeSchemaIdentifier[], TreeNodeSchemaIdentifier[]] => {
281
- const aDiff = [...a].filter((value) => !b.has(value));
282
- const bDiff = [...b].filter((value) => !a.has(value));
283
- return [aDiff, bDiff];
284
- };
285
-
286
- const [viewExtra, storedExtra] = findSetDiscrepancies(view.types, stored.types);
287
- if (viewExtra.length > 0 || storedExtra.length > 0) {
288
- yield {
289
- identifier,
290
- fieldKey,
291
- mismatch: "allowedTypes",
292
- view: viewExtra,
293
- stored: storedExtra,
294
- } satisfies AllowedTypeDiscrepancy;
295
- }
296
-
297
- if (view.kind !== stored.kind) {
298
- yield {
299
- identifier,
300
- fieldKey,
301
- mismatch: "fieldKind",
302
- view: view.kind,
303
- stored: stored.kind,
304
- } satisfies FieldKindDiscrepancy;
305
- }
306
- }
307
-
308
- function* trackObjectNodeDiscrepancies(
309
- identifier: TreeNodeSchemaIdentifier,
310
- view: ObjectNodeStoredSchema,
311
- stored: ObjectNodeStoredSchema,
312
- ): Iterable<FieldDiscrepancy> {
313
- /**
314
- * Similar to the logic used for tracking discrepancies between two node schemas, we will identify
315
- * three types of differences:
316
- * 1. Fields that exist in the view schema but not in the stored schema.
317
- * 2. Fields that exist in both schemas but have different contents.
318
- * 3. Fields that exist in the stored schema but not in the view schema.
319
- *
320
- * First, the view schema is iterated to track the first two types of differences.
321
- * Then, the stored schema is iterated to find the third type.
322
- */
323
-
324
- for (const result of compareMaps(view.objectNodeFields, stored.objectNodeFields)) {
325
- const fieldKey = result.key;
326
- switch (result.type) {
327
- case "aExtra": {
328
- if (result.value.kind === storedEmptyFieldSchema.kind) {
329
- // In one of view/stored, this field is explicitly forbidden, but in the other it is implicitly forbidden
330
- // (by way of omission). We treat these identically anyway.
331
- break;
332
- }
333
- yield {
334
- identifier,
335
- fieldKey,
336
- mismatch: "fieldKind",
337
- view: result.value.kind,
338
- stored: storedEmptyFieldSchema.kind,
339
- } satisfies FieldKindDiscrepancy;
340
- break;
341
- }
342
- case "bExtra": {
343
- if (result.value.kind === storedEmptyFieldSchema.kind) {
344
- // In one of view/stored, this field is explicitly forbidden, but in the other it is implicitly forbidden
345
- // (by way of omission). We treat these identically anyway.
346
- break;
347
- }
348
- yield {
349
- identifier,
350
- fieldKey,
351
- mismatch: "fieldKind",
352
- view: storedEmptyFieldSchema.kind,
353
- stored: result.value.kind,
354
- } satisfies FieldKindDiscrepancy;
355
- break;
356
- }
357
- case "both": {
358
- yield* getFieldDiscrepancies(result.valueA, result.valueB, identifier, fieldKey);
359
- break;
360
- }
361
- default:
362
- break;
363
- }
364
- }
365
- }
366
-
367
- function* compareMaps<K, V1, V2>(
368
- a: ReadonlyMap<K, V1>,
369
- b: ReadonlyMap<K, V2>,
370
- ): Iterable<
371
- | { type: "aExtra"; key: K; value: V1 }
372
- | { type: "bExtra"; key: K; value: V2 }
373
- | { type: "both"; key: K; valueA: V1; valueB: V2 }
374
- > {
375
- for (const [key, valueA] of a) {
376
- const valueB = b.get(key);
377
- yield valueB === undefined
378
- ? { type: "aExtra", key, value: valueA }
379
- : { type: "both", key, valueA, valueB };
380
- }
381
- for (const [key, valueB] of b) {
382
- if (!a.has(key)) {
383
- yield { type: "bExtra", key, value: valueB };
384
- }
385
- }
386
- }
387
- /**
388
- * @remarks
389
- *
390
- * This function uses incompatibilities to determine if changes to a document schema are backward-compatible, i.e., it determines
391
- * whether the `view` schema allows a superset of the documents that the `stored` schema allows.
392
- * According to the policy of schema evolution, `isRepoSuperset` supports three types of changes:
393
- * 1. Adding an optional field to an object node.
394
- * 2. Expanding the set of allowed types for a field.
395
- * 3. Relaxing a field kind to a more general field kind.
396
- *
397
- * Notes: We expect isRepoSuperset to return consistent results with allowsRepoSuperset. However, currently there are some scenarios
398
- * where the inconsistency will occur:
399
- *
400
- * - Different Node Kinds: If a and b have different node kinds (e.g., a is an objectNodeSchema and b is a mapNodeSchema),
401
- * `isRepoSuperset` will determine that a can never be the superset of b. In contrast, `allowsRepoSuperset` will continue
402
- * validating internal fields.
403
- */
404
- export function isRepoSuperset(view: TreeStoredSchema, stored: TreeStoredSchema): boolean {
405
- const discrepancies = getAllowedContentDiscrepancies(view, stored);
406
-
407
- for (const discrepancy of discrepancies) {
408
- switch (discrepancy.mismatch) {
409
- case "nodeKind": {
410
- if (discrepancy.stored !== undefined) {
411
- // It's fine for the view schema to know of a node type that the stored schema doesn't know about.
412
- return false;
413
- }
414
- break;
415
- }
416
- case "valueSchema":
417
- case "allowedTypes":
418
- case "fieldKind": {
419
- if (!isFieldDiscrepancyCompatible(discrepancy)) {
420
- return false;
421
- }
422
- break;
423
- }
424
- case "fields": {
425
- if (
426
- discrepancy.differences.some(
427
- (difference) => !isFieldDiscrepancyCompatible(difference),
428
- )
429
- ) {
430
- return false;
431
- }
432
- break;
433
- }
434
- // No default
435
- }
436
- }
437
- return true;
438
- }
439
-
440
- function isFieldDiscrepancyCompatible(discrepancy: FieldDiscrepancy): boolean {
441
- switch (discrepancy.mismatch) {
442
- case "allowedTypes": {
443
- // Since we only track the symmetric difference between the allowed types in the view and
444
- // stored schemas, it's sufficient to check if any extra allowed types still exist in the
445
- // stored schema.
446
- return discrepancy.stored.length === 0;
447
- }
448
- case "fieldKind": {
449
- return posetLte(discrepancy.stored, discrepancy.view, fieldRealizer);
450
- }
451
- case "valueSchema": {
452
- return false;
453
- }
454
- // No default
455
- }
456
- return false;
457
- }
458
-
459
- /**
460
- * A linear extension of a partially-ordered set of `T`s. See:
461
- * https://en.wikipedia.org/wiki/Linear_extension
462
- *
463
- * The linear extension is represented as a lookup from each poset element to its index in the linear extension.
464
- */
465
- export type LinearExtension<T> = Map<T, number>;
466
-
467
- /**
468
- * A realizer for a partially-ordered set. See:
469
- * https://en.wikipedia.org/wiki/Order_dimension
470
- */
471
- export type Realizer<T> = LinearExtension<T>[];
472
-
473
- /**
474
- * @privateRemarks
475
- * TODO: Knowledge of specific field kinds is not appropriate for modular schema.
476
- * This bit of field comparison should be dependency injected by default-schema if this comparison logic remains in modular-schema
477
- * (this is analogous to what is done in comparison.ts).
478
- */
479
- const FieldKindIdentifiers = {
480
- forbidden: brand<FieldKindIdentifier>("Forbidden"),
481
- required: brand<FieldKindIdentifier>("Value"),
482
- identifier: brand<FieldKindIdentifier>("Identifier"),
483
- optional: brand<FieldKindIdentifier>("Optional"),
484
- sequence: brand<FieldKindIdentifier>("Sequence"),
485
- };
486
-
487
- /**
488
- * A realizer for the partial order of field kind relaxability.
489
- *
490
- * It seems extremely likely that this partial order will remain dimension 2 over time (i.e. the set of allowed relaxations can be visualized
491
- * with a [dominance drawing](https://en.wikipedia.org/wiki/Dominance_drawing)), so this strategy allows efficient comarison between field kinds
492
- * without excessive casework.
493
- *
494
- * Hasse diagram for the partial order is shown below (lower fields can be relaxed to higher fields):
495
- * ```
496
- * sequence
497
- * |
498
- * optional
499
- * | \
500
- * required forbidden
501
- * |
502
- * identifier
503
- * ```
504
- */
505
- export const fieldRealizer: Realizer<FieldKindIdentifier> = [
506
- [
507
- FieldKindIdentifiers.forbidden,
508
- FieldKindIdentifiers.identifier,
509
- FieldKindIdentifiers.required,
510
- FieldKindIdentifiers.optional,
511
- FieldKindIdentifiers.sequence,
512
- ],
513
- [
514
- FieldKindIdentifiers.identifier,
515
- FieldKindIdentifiers.required,
516
- FieldKindIdentifiers.forbidden,
517
- FieldKindIdentifiers.optional,
518
- FieldKindIdentifiers.sequence,
519
- ],
520
- ].map((extension) => new Map(extension.map((identifier, index) => [identifier, index])));
521
-
522
- export const PosetComparisonResult = {
523
- Less: "<",
524
- Greater: ">",
525
- Equal: "=",
526
- Incomparable: "||",
527
- } as const;
528
- type PosetComparisonResult =
529
- (typeof PosetComparisonResult)[keyof typeof PosetComparisonResult];
530
-
531
- export function comparePosetElements<T>(
532
- a: T,
533
- b: T,
534
- realizer: Realizer<T>,
535
- ): PosetComparisonResult {
536
- let hasLessThanResult = false;
537
- let hasGreaterThanResult = false;
538
- for (const extension of realizer) {
539
- const aIndex = extension.get(a);
540
- const bIndex = extension.get(b);
541
- assert(aIndex !== undefined && bIndex !== undefined, 0xa72 /* Invalid realizer */);
542
- if (aIndex < bIndex) {
543
- hasLessThanResult = true;
544
- } else if (aIndex > bIndex) {
545
- hasGreaterThanResult = true;
546
- }
547
- }
548
-
549
- return hasLessThanResult
550
- ? hasGreaterThanResult
551
- ? PosetComparisonResult.Incomparable
552
- : PosetComparisonResult.Less
553
- : hasGreaterThanResult
554
- ? PosetComparisonResult.Greater
555
- : PosetComparisonResult.Equal;
556
- }
557
-
558
- export function posetLte<T>(a: T, b: T, realizer: Realizer<T>): boolean {
559
- const comparison = comparePosetElements(a, b, realizer);
560
- return (
561
- comparison === PosetComparisonResult.Less || comparison === PosetComparisonResult.Equal
562
- );
563
- }
564
-
565
- function throwUnsupportedNodeType(type: string): never {
566
- throw new TypeError(`Unsupported node stored schema type: ${type}`);
567
- }
@@ -1,100 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- import { assert } from "@fluidframework/core-utils/internal";
7
-
8
- import {
9
- Context,
10
- type FlexTreeField,
11
- type NodeIdentifierManager,
12
- type FlexTreeHydratedContext,
13
- type FullSchemaPolicy,
14
- } from "../feature-libraries/index.js";
15
- import { tryDisposeTreeNode } from "../simple-tree/index.js";
16
- import { disposeSymbol } from "../util/index.js";
17
-
18
- import type { ITreeCheckout, ITreeCheckoutFork } from "./treeCheckout.js";
19
-
20
- /**
21
- * An editable view of a (version control style) branch of a shared tree.
22
- * @remarks
23
- * Does not depend on stored schema, and thus can live across schema changes.
24
- * @privateRemarks
25
- * This has no state beyond the context, so it likely should be replaced with just the context.
26
- */
27
- export class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeCheckout> {
28
- /**
29
- * Context for controlling the FlexTree nodes produced from {@link FlexTreeView.flexTree}.
30
- *
31
- * @remarks
32
- * This is an owning reference: disposing of this view disposes its context.
33
- */
34
- public readonly context: Context;
35
-
36
- /**
37
- * Get a view of the tree content using the flex-tree API.
38
- */
39
- public get flexTree(): FlexTreeField {
40
- return this.context.root;
41
- }
42
-
43
- private disposed = false;
44
-
45
- public constructor(
46
- /**
47
- * Access non-view schema specific aspects of this branch.
48
- *
49
- * @remarks
50
- * This is a non-owning reference: disposing of this view does not impact the branch.
51
- */
52
- public readonly checkout: TCheckout,
53
- public readonly schema: FullSchemaPolicy,
54
- public readonly nodeKeyManager: NodeIdentifierManager,
55
- private readonly onDispose?: () => void,
56
- ) {
57
- this.context = new Context(schema, this.checkout, nodeKeyManager);
58
- contextToTreeViewMap.set(this.context, this);
59
- }
60
-
61
- public [disposeSymbol](): void {
62
- assert(!this.disposed, 0xb80 /* Double disposed */);
63
- this.disposed = true;
64
-
65
- for (const anchorNode of this.checkout.forest.anchors) {
66
- tryDisposeTreeNode(anchorNode);
67
- }
68
-
69
- this.context[disposeSymbol]();
70
- this.onDispose?.();
71
- }
72
-
73
- /**
74
- * Spawn a new view which is based off of the current state of this view.
75
- * Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
76
- */
77
- public fork(): CheckoutFlexTreeView<ITreeCheckout & ITreeCheckoutFork> {
78
- assert(!this.disposed, 0xb81 /* disposed */);
79
- const branch = this.checkout.branch();
80
- return new CheckoutFlexTreeView(branch, this.schema, this.nodeKeyManager);
81
- }
82
- }
83
-
84
- /**
85
- * Maps the context of every {@link CheckoutFlexTreeView} to the view.
86
- * In practice, this allows the view or checkout to be obtained from a flex node by first getting the context from the flex node and then using this map.
87
- */
88
- const contextToTreeViewMap = new WeakMap<FlexTreeHydratedContext, CheckoutFlexTreeView>();
89
-
90
- /**
91
- * Retrieve the {@link CheckoutFlexTreeView | view} for the given {@link FlexTreeHydratedContext | context}.
92
- * @remarks Every {@link CheckoutFlexTreeView} is associated with its context upon creation.
93
- */
94
- export function getCheckoutFlexTreeView(
95
- context: FlexTreeHydratedContext,
96
- ): CheckoutFlexTreeView {
97
- const view = contextToTreeViewMap.get(context);
98
- assert(view !== undefined, 0xa41 /* Expected view to be registered for context */);
99
- return view;
100
- }