@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
@@ -4,75 +4,23 @@
4
4
  */
5
5
 
6
6
  import type { IFluidHandle } from "@fluidframework/core-interfaces";
7
- import { assert, fail, unreachableCase } from "@fluidframework/core-utils/internal";
8
7
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
9
- import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
8
+ import { assert } from "@fluidframework/core-utils/internal";
10
9
 
11
- import {
12
- EmptyKey,
13
- type FieldKey,
14
- type NodeData,
15
- type TreeValue,
16
- type ValueSchema,
17
- } from "../core/index.js";
18
- import { FieldKinds, isTreeValue, valueSchemaAllows } from "../feature-libraries/index.js";
19
- import { brand, isReadonlyArray, hasSingle } from "../util/index.js";
10
+ import { hasSingle } from "../util/index.js";
20
11
 
21
- import { nullSchema } from "./leafNodeSchema.js";
22
- import {
23
- type ImplicitAllowedTypes,
24
- normalizeAllowedTypes,
25
- isConstant,
26
- type ImplicitFieldSchema,
27
- normalizeFieldSchema,
28
- FieldKind,
29
- type TreeLeafValue,
30
- extractFieldProvider,
31
- type ContextualFieldProvider,
32
- unannotateImplicitAllowedTypes,
33
- } from "./schemaTypes.js";
12
+ import { type ImplicitFieldSchema, normalizeFieldSchema, FieldKind } from "./fieldSchema.js";
34
13
  import {
35
- createField,
14
+ CompatibilityLevel,
36
15
  getKernel,
16
+ getTreeNodeSchemaPrivateData,
37
17
  isTreeNode,
38
- NodeKind,
39
18
  type TreeNode,
40
19
  type TreeNodeSchema,
41
20
  type Unhydrated,
42
- type UnhydratedFlexTreeField,
43
21
  UnhydratedFlexTreeNode,
44
- UnhydratedSequenceField,
45
22
  } from "./core/index.js";
46
23
  import { getUnhydratedContext } from "./createContext.js";
47
- import { convertFieldKind } from "./toStoredSchema.js";
48
-
49
- // Required to prevent the introduction of new circular dependencies
50
- // TODO: Having the schema provide their own policy functions for compatibility which
51
- // `unhydratedFlexTreeFromInsertable` invokes instead of manually handling each kind would remove this bad
52
- // dependency, and reduce coupling.
53
- /* eslint-disable import/no-internal-modules */
54
- import { isArrayNodeSchema, type ArrayNodeSchema } from "./node-kinds/array/arrayNodeTypes.js";
55
- import { isMapNodeSchema, type MapNodeSchema } from "./node-kinds/map/mapNodeTypes.js";
56
- import {
57
- isObjectNodeSchema,
58
- type ObjectNodeSchemaPrivate,
59
- } from "./node-kinds/object/objectNodeTypes.js";
60
- import {
61
- isRecordNodeSchema,
62
- type RecordNodeSchema,
63
- } from "./node-kinds/record/recordNodeTypes.js";
64
- /* eslint-enable import/no-internal-modules */
65
-
66
- /**
67
- * Module notes:
68
- *
69
- * The flow of the below code is in terms of the structure of the input data. We then verify that the associated
70
- * schema is appropriate for that kind of data. This is fine while we have a 1:1 mapping of kind of input data to
71
- * the kind of schema we expect for it (e.g. an input that is an array always need to be associated with a sequence in
72
- * the schema). If/when we begin accepting kinds of input data that are ambiguous (e.g. accepting an input that is an
73
- * array of key/value tuples to instantiate a map) we may need to rethink the structure here to be based more on the
74
- * schema than on the input data.
75
- */
76
24
 
77
25
  /**
78
26
  * Transforms an input {@link TypedNode} tree to an {@link UnhydratedFlexTreeNode}.
@@ -125,7 +73,7 @@ export function unhydratedFlexTreeFromInsertable<TIn extends InsertableContent |
125
73
  /**
126
74
  * Copy content from `data` into a UnhydratedFlexTreeNode.
127
75
  */
128
- function unhydratedFlexTreeFromInsertableNode(
76
+ export function unhydratedFlexTreeFromInsertableNode(
129
77
  data: InsertableContent,
130
78
  allowedTypes: ReadonlySet<TreeNodeSchema>,
131
79
  ): UnhydratedFlexTreeNode {
@@ -144,322 +92,12 @@ function unhydratedFlexTreeFromInsertableNode(
144
92
  }
145
93
 
146
94
  const schema = getType(data, allowedTypes);
147
-
148
- let result: FlexContent;
149
- switch (schema.kind) {
150
- case NodeKind.Leaf:
151
- result = leafToFlexContent(data, schema, allowedTypes);
152
- break;
153
- case NodeKind.Array:
154
- assert(isArrayNodeSchema(schema), 0x922 /* Expected an array schema. */);
155
- result = arrayToFlexContent(data, schema);
156
- break;
157
- case NodeKind.Map:
158
- assert(isMapNodeSchema(schema), 0x923 /* Expected a Map schema. */);
159
- result = mapToFlexContent(data, schema);
160
- break;
161
- case NodeKind.Object:
162
- assert(isObjectNodeSchema(schema), 0x924 /* Expected an Object schema. */);
163
- result = objectToFlexContent(data, schema);
164
- break;
165
- case NodeKind.Record:
166
- assert(isRecordNodeSchema(schema), 0xbdd /* Expected a Record schema. */);
167
- result = recordToFlexContent(data, schema);
168
- break;
169
- default:
170
- unreachableCase(schema.kind);
171
- }
95
+ const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
96
+ const result = handler.toFlexContent(data, allowedTypes);
172
97
 
173
98
  return new UnhydratedFlexTreeNode(...result, getUnhydratedContext(schema));
174
99
  }
175
100
 
176
- type FlexContent = [NodeData, Map<FieldKey, UnhydratedFlexTreeField>];
177
-
178
- /**
179
- * Transforms data under a Leaf schema.
180
- * @param data - The tree data to be transformed. Must be a {@link TreeValue}.
181
- * @param schema - The schema associated with the value.
182
- * @param allowedTypes - The allowed types specified by the parent.
183
- * Used to determine which fallback values may be appropriate.
184
- */
185
- function leafToFlexContent(
186
- data: FactoryContent,
187
- schema: TreeNodeSchema,
188
- allowedTypes: ReadonlySet<TreeNodeSchema>,
189
- ): FlexContent {
190
- assert(schema.kind === NodeKind.Leaf, 0x921 /* Expected a leaf schema. */);
191
- if (!isTreeValue(data)) {
192
- // This rule exists to protect against useless `toString` output like `[object Object]`.
193
- // In this case, that's actually reasonable behavior, since object input is not compatible with Leaf schemas.
194
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
195
- throw new UsageError(`Input data is incompatible with leaf schema: ${data}`);
196
- }
197
-
198
- const mappedValue = mapValueWithFallbacks(data, allowedTypes);
199
- const mappedSchema = getType(mappedValue, allowedTypes);
200
-
201
- assert(
202
- allowsValue(mappedSchema, mappedValue),
203
- 0x84a /* Unsupported schema for provided primitive. */,
204
- );
205
-
206
- return [
207
- {
208
- value: mappedValue,
209
- type: brand(mappedSchema.identifier),
210
- },
211
- new Map<FieldKey, UnhydratedFlexTreeField>(),
212
- ];
213
- }
214
-
215
- /**
216
- * Checks an incoming {@link TreeLeafValue} to ensure it is compatible with its requirements.
217
- * For unsupported values with a schema-compatible replacement, return the replacement value.
218
- * For unsupported values without a schema-compatible replacement, throw.
219
- * For supported values, return the input.
220
- */
221
- function mapValueWithFallbacks(
222
- value: TreeLeafValue,
223
- allowedTypes: ReadonlySet<TreeNodeSchema>,
224
- ): TreeValue {
225
- switch (typeof value) {
226
- case "number": {
227
- if (Object.is(value, -0)) {
228
- // Our serialized data format does not support -0.
229
- // Map such input to +0.
230
- return 0;
231
- } else if (!Number.isFinite(value)) {
232
- // Our serialized data format does not support NaN nor +/-∞.
233
- // If the schema supports `null`, fall back to that. Otherwise, throw.
234
- // This is intended to match JSON's behavior for such values.
235
- if (allowedTypes.has(nullSchema)) {
236
- return null;
237
- } else {
238
- throw new UsageError(`Received unsupported numeric value: ${value}.`);
239
- }
240
- } else {
241
- return value;
242
- }
243
- }
244
- case "string":
245
- // TODO:
246
- // This should detect invalid strings. Something like @stdlib/regexp-utf16-unpaired-surrogate could be used to do this.
247
- // See SchemaFactory.string for details.
248
- case "boolean":
249
- return value;
250
- case "object": {
251
- if (value === null || isFluidHandle(value)) {
252
- return value;
253
- }
254
- }
255
- default:
256
- throw new UsageError(`Received unsupported leaf value: ${value}.`);
257
- }
258
- }
259
-
260
- /**
261
- * Transforms data under an Array schema.
262
- * @param data - The tree data to be transformed.
263
- * @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.
264
- */
265
- function arrayChildToFlexTree(
266
- child: InsertableContent,
267
- allowedTypes: ReadonlySet<TreeNodeSchema>,
268
- ): UnhydratedFlexTreeNode {
269
- // We do not support undefined sequence entries.
270
- // If we encounter an undefined entry, use null instead if supported by the schema, otherwise throw.
271
- let childWithFallback = child;
272
- if (child === undefined) {
273
- if (allowedTypes.has(nullSchema)) {
274
- childWithFallback = null;
275
- } else {
276
- throw new TypeError(`Received unsupported array entry value: ${child}.`);
277
- }
278
- }
279
- return unhydratedFlexTreeFromInsertableNode(childWithFallback, allowedTypes);
280
- }
281
-
282
- /**
283
- * Transforms data under an Array schema.
284
- * @param data - The tree data to be transformed. Must be an iterable.
285
- * @param schema - The schema associated with the value.
286
- */
287
- function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): FlexContent {
288
- if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
289
- throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
290
- }
291
-
292
- const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
293
-
294
- const mappedData = Array.from(data, (child) =>
295
- arrayChildToFlexTree(child, allowedChildTypes),
296
- );
297
-
298
- const context = getUnhydratedContext(schema).flexContext;
299
-
300
- // Array nodes have a single `EmptyKey` field:
301
- const fieldsEntries =
302
- mappedData.length === 0
303
- ? []
304
- : ([
305
- [
306
- EmptyKey,
307
- new UnhydratedSequenceField(
308
- context,
309
- FieldKinds.sequence.identifier,
310
- EmptyKey,
311
- mappedData,
312
- ),
313
- ],
314
- ] as const);
315
-
316
- return [
317
- {
318
- type: brand(schema.identifier),
319
- },
320
- new Map(fieldsEntries),
321
- ];
322
- }
323
-
324
- /**
325
- * Transforms data under a Map schema.
326
- * @param data - The tree data to be transformed. Must be an iterable.
327
- * @param schema - The schema associated with the value.
328
- */
329
- function mapToFlexContent(data: FactoryContent, schema: MapNodeSchema): FlexContent {
330
- if (!(typeof data === "object" && data !== null)) {
331
- throw new UsageError(`Input data is incompatible with Map schema: ${data}`);
332
- }
333
-
334
- const fieldsIterator = (
335
- Symbol.iterator in data
336
- ? // Support iterables of key value pairs (including Map objects)
337
- data
338
- : // Support record objects for JSON style Map data
339
- Object.entries(data)
340
- ) as Iterable<readonly [string, InsertableContent]>;
341
-
342
- return recordLikeDataToFlexContent(fieldsIterator, schema);
343
- }
344
-
345
- /**
346
- * Transforms data under an Object schema.
347
- * @param data - The tree data to be transformed. Must be a Record-like object.
348
- * @param schema - The schema associated with the value.
349
- */
350
- function objectToFlexContent(
351
- data: FactoryContent,
352
- schema: ObjectNodeSchemaPrivate,
353
- ): FlexContent {
354
- if (
355
- typeof data !== "object" ||
356
- data === null ||
357
- Symbol.iterator in data ||
358
- isFluidHandle(data)
359
- ) {
360
- throw new UsageError(`Input data is incompatible with Object schema: ${data}`);
361
- }
362
-
363
- const fields = new Map<FieldKey, UnhydratedFlexTreeField>();
364
- const context = getUnhydratedContext(schema).flexContext;
365
-
366
- for (const [key, fieldInfo] of schema.flexKeyMap) {
367
- const value = getFieldProperty(data, key);
368
-
369
- let children: UnhydratedFlexTreeNode[] | ContextualFieldProvider;
370
- if (value === undefined) {
371
- const defaultProvider =
372
- fieldInfo.schema.props?.defaultProvider ??
373
- fail(0xbb1 /* missing field has no default provider */);
374
- const fieldProvider = extractFieldProvider(defaultProvider);
375
- children = isConstant(fieldProvider) ? fieldProvider() : fieldProvider;
376
- } else {
377
- children = [
378
- unhydratedFlexTreeFromInsertableNode(value, fieldInfo.schema.allowedTypeSet),
379
- ];
380
- }
381
-
382
- const kind =
383
- convertFieldKind.get(fieldInfo.schema.kind) ?? fail(0xbb2 /* Invalid field kind */);
384
- fields.set(
385
- fieldInfo.storedKey,
386
- createField(context, kind.identifier, fieldInfo.storedKey, children),
387
- );
388
- }
389
-
390
- return [{ type: brand(schema.identifier) }, fields];
391
- }
392
-
393
- /**
394
- * Transforms data under an Object schema.
395
- * @param data - The tree data to be transformed. Must be a Record-like object.
396
- * @param schema - The schema associated with the value.
397
- */
398
- function recordToFlexContent(data: FactoryContent, schema: RecordNodeSchema): FlexContent {
399
- if (!(typeof data === "object" && data !== null)) {
400
- throw new UsageError(`Input data is incompatible with Record schema: ${data}`);
401
- }
402
-
403
- const fieldsIterator: Iterable<readonly [string, InsertableContent]> = Object.entries(data);
404
- return recordLikeDataToFlexContent(fieldsIterator, schema);
405
- }
406
-
407
- /**
408
- * Converts record-like data to a FlexContent representation for map/record schema.
409
- */
410
- function recordLikeDataToFlexContent(
411
- fieldsIterator: Iterable<readonly [string, InsertableContent]>,
412
- schema: MapNodeSchema | RecordNodeSchema,
413
- ): FlexContent {
414
- const allowedChildTypes = normalizeAllowedTypes(unannotateImplicitAllowedTypes(schema.info));
415
- const context = getUnhydratedContext(schema).flexContext;
416
-
417
- const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
418
- for (const item of fieldsIterator) {
419
- const [key, value] = item;
420
- assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);
421
-
422
- // Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
423
- if (value !== undefined) {
424
- const child = unhydratedFlexTreeFromInsertableNode(value, allowedChildTypes);
425
- const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
426
- transformedFields.set(brand(key), field);
427
- }
428
- }
429
-
430
- return [
431
- {
432
- type: brand(schema.identifier),
433
- },
434
- transformedFields,
435
- ];
436
- }
437
-
438
- /**
439
- * Check {@link FactoryContentObject} for a property which could be store a field.
440
- *
441
- * @returns If the property exists, return its value. Otherwise, returns undefined.
442
- * @remarks
443
- * The currently policy is to only consider own properties.
444
- * See {@link InsertableObjectFromSchemaRecord} for where this policy is documented in the public API.
445
- *
446
- * Explicit undefined values are treated the same as missing properties to allow explicit use of undefined with defaulted identifiers.
447
- *
448
- * @privateRemarks
449
- * If we ever want to have an optional field which defaults to something other than undefined, this will need changes.
450
- * It would need to adjusting the handling of explicit undefined in contexts where undefined is allowed, and a default provider also exists.
451
- */
452
- function getFieldProperty(
453
- data: FactoryContentObject,
454
- key: string | symbol,
455
- ): InsertableContent | undefined {
456
- // This policy only allows own properties.
457
- if (Object.hasOwnProperty.call(data, key)) {
458
- return (data as Record<string, InsertableContent>)[key as string];
459
- }
460
- return undefined;
461
- }
462
-
463
101
  function getType(
464
102
  data: FactoryContent,
465
103
  allowedTypes: ReadonlySet<TreeNodeSchema>,
@@ -492,10 +130,13 @@ export function getPossibleTypes(
492
130
  allowedTypes: ReadonlySet<TreeNodeSchema>,
493
131
  data: FactoryContent,
494
132
  ): TreeNodeSchema[] {
133
+ assert(data !== undefined, 0x889 /* undefined cannot be used as FactoryContent. */);
134
+
495
135
  let best = CompatibilityLevel.None;
496
136
  const possibleTypes: TreeNodeSchema[] = [];
497
137
  for (const schema of allowedTypes) {
498
- const level = shallowCompatibilityTest(schema, data);
138
+ const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
139
+ const level = handler.shallowCompatibilityTest(data);
499
140
  if (level > best) {
500
141
  possibleTypes.length = 0;
501
142
  best = level;
@@ -507,129 +148,6 @@ export function getPossibleTypes(
507
148
  return best === CompatibilityLevel.None ? [] : possibleTypes;
508
149
  }
509
150
 
510
- /**
511
- * Indicates a compatibility level for inferring a schema to apply to insertable data.
512
- * @remarks
513
- * Only the highest compatibility options are used.
514
- * This approach allows adding new possible matching at a new lower compatibility level as a non breaking change,
515
- * since that way they can't make a case that was compatible before ambiguous now.
516
- */
517
- enum CompatibilityLevel {
518
- /**
519
- * Not compatible. Constructor typing indicates incompatibility.
520
- */
521
- None = 0,
522
- /**
523
- * Additional compatibility cases added in Fluid Framework 2.2.
524
- */
525
- Low = 1,
526
- /**
527
- * Compatible in Fluid Framework 2.0.
528
- */
529
- Normal = 2,
530
- }
531
-
532
- /**
533
- * Checks if data might be schema-compatible.
534
- *
535
- * @returns false if `data` is incompatible with `type` based on a cheap/shallow check.
536
- *
537
- * Note that this may return true for cases where data is incompatible, but it must not return false in cases where the data is compatible.
538
- */
539
- function shallowCompatibilityTest(
540
- schema: TreeNodeSchema,
541
- data: FactoryContent,
542
- ): CompatibilityLevel {
543
- assert(data !== undefined, 0x889 /* undefined cannot be used as FactoryContent. */);
544
-
545
- if (isTreeValue(data)) {
546
- return allowsValue(schema, data) ? CompatibilityLevel.Normal : CompatibilityLevel.None;
547
- }
548
- if (schema.kind === NodeKind.Leaf) {
549
- return CompatibilityLevel.None;
550
- }
551
-
552
- // Typing (of schema based constructors and thus implicit node construction)
553
- // allows iterables for constructing maps and arrays.
554
- // Some users of this API may have unions of maps and arrays,
555
- // and rely on Arrays ending up as array nodes and maps as Map nodes,
556
- // despite both being iterable and thus compatible with both.
557
- // This uses a priority based system where an array would be parsed as an array when unioned with a map,
558
- // but if in a map only context, could still be used as a map.
559
-
560
- if (data instanceof Map) {
561
- switch (schema.kind) {
562
- case NodeKind.Map:
563
- return CompatibilityLevel.Normal;
564
- case NodeKind.Array:
565
- // Maps are iterable, so type checking does allow constructing an ArrayNode from a map if the array's type is an array that includes the key and value types of the map.
566
- return CompatibilityLevel.Low;
567
- default:
568
- return CompatibilityLevel.None;
569
- }
570
- }
571
-
572
- if (isReadonlyArray(data)) {
573
- switch (schema.kind) {
574
- case NodeKind.Array:
575
- return CompatibilityLevel.Normal;
576
- case NodeKind.Map:
577
- // Arrays are iterable, so type checking does allow constructing an array from a MapNode from an if the array's type is key values pairs for the map.
578
- return CompatibilityLevel.Low;
579
- default:
580
- return CompatibilityLevel.None;
581
- }
582
- }
583
-
584
- const mapOrArray = schema.kind === NodeKind.Array || schema.kind === NodeKind.Map;
585
-
586
- if (Symbol.iterator in data) {
587
- return mapOrArray ? CompatibilityLevel.Normal : CompatibilityLevel.None;
588
- }
589
-
590
- // At this point, it is assumed data is a record-like object since all the other cases have been eliminated.
591
-
592
- if (schema.kind === NodeKind.Record) {
593
- return CompatibilityLevel.Normal;
594
- }
595
-
596
- if (schema.kind === NodeKind.Array) {
597
- return CompatibilityLevel.None;
598
- }
599
-
600
- if (schema.kind === NodeKind.Map) {
601
- // When not unioned with an ObjectNode, allow objects to be used to create maps.
602
- return CompatibilityLevel.Low;
603
- }
604
-
605
- assert(isObjectNodeSchema(schema), 0x9e6 /* unexpected schema kind */);
606
-
607
- // TODO: Improve type inference by making this logic more thorough. Handle at least:
608
- // * Types which are strict subsets of other types in the same polymorphic union
609
- // * Types which have the same keys but different types for those keys in the polymorphic union
610
- // * Types which have the same required fields but different optional fields and enough of those optional fields are populated to disambiguate
611
-
612
- // TODO#7441: Consider allowing data to be inserted which has keys that are extraneous/unknown to the schema (those keys are ignored)
613
-
614
- // If the schema has a required key which is not present in the input object, reject it.
615
- for (const [fieldKey, fieldSchema] of schema.fields) {
616
- if (fieldSchema.requiresValue) {
617
- if (getFieldProperty(data, fieldKey) === undefined) {
618
- return CompatibilityLevel.None;
619
- }
620
- }
621
- }
622
-
623
- return CompatibilityLevel.Normal;
624
- }
625
-
626
- function allowsValue(schema: TreeNodeSchema, value: TreeValue): boolean {
627
- if (schema.kind === NodeKind.Leaf) {
628
- return valueSchemaAllows(schema.info as ValueSchema, value);
629
- }
630
- return false;
631
- }
632
-
633
151
  /**
634
152
  * Content which can be used to build a node.
635
153
  * @remarks
@@ -0,0 +1,70 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type {
7
+ ImplicitAllowedTypes,
8
+ InsertableTreeNodeFromImplicitAllowedTypes,
9
+ } from "./core/index.js";
10
+ import type {
11
+ ImplicitFieldSchema,
12
+ InsertableTreeFieldFromImplicitField,
13
+ } from "./fieldSchema.js";
14
+ import type { InsertableContent } from "./unhydratedFlexTreeFromInsertable.js";
15
+
16
+ /**
17
+ * {@inheritdoc (UnsafeUnknownSchema:type)}
18
+ * @alpha
19
+ */
20
+
21
+ export const UnsafeUnknownSchema: unique symbol = Symbol("UnsafeUnknownSchema");
22
+ /**
23
+ * A special type which can be provided to some APIs as the schema type parameter when schema cannot easily be provided at compile time and an unsafe (instead of disabled) editing API is desired.
24
+ * @remarks
25
+ * When used, this means the TypeScript typing should err on the side of completeness (allow all inputs that could be valid).
26
+ * This introduces the risk that out-of-schema data could be allowed at compile time, and only error at runtime.
27
+ *
28
+ * @privateRemarks
29
+ * This only applies to APIs which input data which is expected to be in schema, since APIs outputting have easy mechanisms to do so in a type safe way even when the schema is unknown.
30
+ * In most cases that amounts to returning `TreeNode | TreeLeafValue`.
31
+ *
32
+ * This can be contrasted with the default behavior of TypeScript, which is to require the intersection of the possible types for input APIs,
33
+ * which for unknown schema defining input trees results in the `never` type.
34
+ *
35
+ * Any APIs which use this must produce UsageErrors when out of schema data is encountered, and never produce unrecoverable errors,
36
+ * or silently accept invalid data.
37
+ * This is currently only type exported from the package: the symbol is just used as a way to get a named type.
38
+ * @alpha
39
+ */
40
+
41
+ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
42
+ /**
43
+ * Content which could be inserted into a tree.
44
+ *
45
+ * @see {@link Input}
46
+ * @remarks
47
+ * Extended version of {@link InsertableTreeNodeFromImplicitAllowedTypes} that also allows {@link (UnsafeUnknownSchema:type)}.
48
+ * @alpha
49
+ */
50
+
51
+ export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> =
52
+ TSchema extends ImplicitAllowedTypes
53
+ ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema>
54
+ : InsertableContent;
55
+
56
+ /**
57
+ * Content which could be inserted into a field within a tree.
58
+ *
59
+ * @see {@link Input}
60
+ * @remarks
61
+ * Extended version of {@link InsertableTreeFieldFromImplicitField} that also allows {@link (UnsafeUnknownSchema:type)}.
62
+ * @alpha
63
+ */
64
+ export type InsertableField<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema> = [
65
+ TSchema,
66
+ ] extends [ImplicitFieldSchema]
67
+ ? InsertableTreeFieldFromImplicitField<TSchema>
68
+ : [TSchema] extends [UnsafeUnknownSchema]
69
+ ? InsertableContent | undefined
70
+ : never;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { type TreeNodeSchema, walkAllowedTypes, type SchemaVisitor } from "./core/index.js";
7
- import { type ImplicitFieldSchema, normalizeFieldSchema } from "./schemaTypes.js";
7
+ import { type ImplicitFieldSchema, normalizeFieldSchema } from "./fieldSchema.js";
8
8
 
9
9
  /**
10
10
  * Traverses all {@link TreeNodeSchema} schema reachable from `schema`, applying the visitor pattern.
@@ -100,7 +100,6 @@ export const SharedTree = configuredSharedTree({});
100
100
  * TreeCompressionStrategy,
101
101
  * configuredSharedTree,
102
102
  * typeboxValidator,
103
- * // eslint-disable-next-line import/no-internal-modules
104
103
  * } from "@fluidframework/tree/internal";
105
104
  * const SharedTree = configuredSharedTree({
106
105
  * forest: ForestTypeReference,
@@ -1 +0,0 @@
1
- {"version":3,"file":"discrepancies.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/discrepancies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,mBAAmB,EAMxB,KAAK,wBAAwB,EAE7B,KAAK,gBAAgB,EAErB,KAAK,WAAW,EAChB,MAAM,qBAAqB,CAAC;AAO7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE7D,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC;;;;OAIG;IACH,UAAU,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACjD;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;IACvE,QAAQ,EAAE,cAAc,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,wBAAwB,EAAE,CAAC;IACjC;;OAEG;IACH,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IACrE,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACtC,UAAU,EAAE,wBAAwB,CAAC;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,wBAAwB,CAAC;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,wBAAwB,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,KAAK,qBAAqB,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAavD;;;;;;;;;;GAUG;AACH,wBAAiB,8BAA8B,CAC9C,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,gBAAgB,GACtB,QAAQ,CAAC,WAAW,CAAC,CAuCvB;AAyLD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAkCxF;AAqBD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAgB/C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,mBAAmB,CAegC,CAAC;AAEzF,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AACX,KAAK,qBAAqB,GACzB,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GACnB,qBAAqB,CAqBvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAKtE"}