@fluidframework/tree 2.42.0 → 2.43.0-343119

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 (431) hide show
  1. package/api-report/tree.alpha.api.md +59 -21
  2. package/api-report/tree.beta.api.md +33 -0
  3. package/dist/alpha.d.ts +11 -6
  4. package/dist/beta.d.ts +6 -1
  5. package/dist/core/index.d.ts +1 -1
  6. package/dist/core/index.d.ts.map +1 -1
  7. package/dist/core/index.js +5 -2
  8. package/dist/core/index.js.map +1 -1
  9. package/dist/core/schema-stored/formatV2.d.ts +80 -0
  10. package/dist/core/schema-stored/formatV2.d.ts.map +1 -0
  11. package/dist/core/schema-stored/formatV2.js +55 -0
  12. package/dist/core/schema-stored/formatV2.js.map +1 -0
  13. package/dist/core/schema-stored/index.d.ts +3 -1
  14. package/dist/core/schema-stored/index.d.ts.map +1 -1
  15. package/dist/core/schema-stored/index.js +5 -2
  16. package/dist/core/schema-stored/index.js.map +1 -1
  17. package/dist/core/schema-stored/schema.d.ts +49 -17
  18. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  19. package/dist/core/schema-stored/schema.js +65 -22
  20. package/dist/core/schema-stored/schema.js.map +1 -1
  21. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  22. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  23. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +13 -9
  24. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  26. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +6 -6
  28. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  30. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  32. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  33. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  34. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  35. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  36. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  37. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +23 -24
  38. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  39. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  40. package/dist/feature-libraries/flex-tree/index.d.ts +0 -1
  41. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  42. package/dist/feature-libraries/flex-tree/index.js +1 -7
  43. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  45. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  46. package/dist/feature-libraries/flex-tree/lazyEntity.js +3 -0
  47. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  48. package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -2
  49. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyField.js +2 -5
  51. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
  53. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyNode.js +15 -7
  55. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  56. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
  57. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  58. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -5
  59. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  60. package/dist/feature-libraries/index.d.ts +2 -2
  61. package/dist/feature-libraries/index.d.ts.map +1 -1
  62. package/dist/feature-libraries/index.js +1 -2
  63. package/dist/feature-libraries/index.js.map +1 -1
  64. package/dist/feature-libraries/mapTreeCursor.d.ts +16 -2
  65. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  66. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  67. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  68. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  69. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  70. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  71. package/dist/feature-libraries/object-forest/objectForest.js +2 -0
  72. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  73. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  74. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  75. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  76. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  77. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  78. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  79. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  80. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  81. package/dist/feature-libraries/schema-index/codec.js +59 -9
  82. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  83. package/dist/feature-libraries/schema-index/formatV1.d.ts +1 -1
  84. package/dist/feature-libraries/schema-index/formatV2.d.ts +42 -0
  85. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  86. package/dist/feature-libraries/schema-index/formatV2.js +26 -0
  87. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -0
  88. package/dist/feature-libraries/schema-index/index.d.ts +2 -1
  89. package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
  90. package/dist/feature-libraries/schema-index/index.js +4 -2
  91. package/dist/feature-libraries/schema-index/index.js.map +1 -1
  92. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  93. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  94. package/dist/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  95. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  96. package/dist/index.d.ts +2 -2
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/packageVersion.d.ts +1 -1
  100. package/dist/packageVersion.d.ts.map +1 -1
  101. package/dist/packageVersion.js +1 -1
  102. package/dist/packageVersion.js.map +1 -1
  103. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  104. package/dist/shared-tree/schematizeTree.js +1 -0
  105. package/dist/shared-tree/schematizeTree.js.map +1 -1
  106. package/dist/shared-tree/sharedTree.d.ts +5 -1
  107. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  108. package/dist/shared-tree/sharedTree.js +34 -5
  109. package/dist/shared-tree/sharedTree.js.map +1 -1
  110. package/dist/shared-tree/treeAlpha.d.ts +1 -1
  111. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  112. package/dist/shared-tree/treeAlpha.js +12 -11
  113. package/dist/shared-tree/treeAlpha.js.map +1 -1
  114. package/dist/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  115. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  116. package/dist/shared-tree-core/editManagerSummarizer.js +2 -5
  117. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  118. package/dist/shared-tree-core/sharedTreeCore.d.ts +18 -7
  119. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  120. package/dist/shared-tree-core/sharedTreeCore.js +15 -2
  121. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  122. package/dist/simple-tree/api/schemaCompatibilityTester.js +1 -1
  123. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  124. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  125. package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
  126. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  127. package/dist/simple-tree/api/schemaFactory.d.ts +15 -11
  128. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  129. package/dist/simple-tree/api/schemaFactory.js +4 -0
  130. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  131. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  132. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  133. package/dist/simple-tree/api/schemaFactoryAlpha.js +31 -4
  134. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  135. package/dist/simple-tree/api/storedSchema.js +2 -2
  136. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  137. package/dist/simple-tree/api/treeChangeEvents.d.ts +8 -3
  138. package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  139. package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
  140. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  141. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  142. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  143. package/dist/simple-tree/core/treeNodeKernel.js +1 -1
  144. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  145. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +5 -9
  146. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  147. package/dist/simple-tree/core/unhydratedFlexTree.js +12 -31
  148. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  149. package/dist/simple-tree/index.d.ts +2 -2
  150. package/dist/simple-tree/index.d.ts.map +1 -1
  151. package/dist/simple-tree/index.js.map +1 -1
  152. package/dist/simple-tree/leafNodeSchema.d.ts +2 -0
  153. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  154. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  155. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  156. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  157. package/dist/simple-tree/node-kinds/array/arrayNode.js +3 -1
  158. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  159. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  160. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  161. package/dist/simple-tree/node-kinds/map/mapNode.js +4 -2
  162. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  163. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
  164. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  165. package/dist/simple-tree/node-kinds/object/objectNode.js +3 -1
  166. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  167. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  168. package/dist/simple-tree/prepareForInsertion.js +5 -1
  169. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  170. package/dist/simple-tree/schemaTypes.d.ts +50 -3
  171. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  172. package/dist/simple-tree/schemaTypes.js +28 -1
  173. package/dist/simple-tree/schemaTypes.js.map +1 -1
  174. package/dist/simple-tree/simpleSchema.d.ts +22 -4
  175. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  176. package/dist/simple-tree/simpleSchema.js.map +1 -1
  177. package/dist/simple-tree/toStoredSchema.d.ts +2 -0
  178. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  179. package/dist/simple-tree/toStoredSchema.js +13 -4
  180. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  181. package/dist/tableSchema.d.ts +1 -1
  182. package/dist/util/typeUtils.d.ts +2 -2
  183. package/dist/util/typeUtils.js.map +1 -1
  184. package/dist/util/utils.d.ts +2 -0
  185. package/dist/util/utils.d.ts.map +1 -1
  186. package/dist/util/utils.js.map +1 -1
  187. package/lib/alpha.d.ts +11 -6
  188. package/lib/beta.d.ts +6 -1
  189. package/lib/core/index.d.ts +1 -1
  190. package/lib/core/index.d.ts.map +1 -1
  191. package/lib/core/index.js +1 -1
  192. package/lib/core/index.js.map +1 -1
  193. package/lib/core/schema-stored/formatV2.d.ts +80 -0
  194. package/lib/core/schema-stored/formatV2.d.ts.map +1 -0
  195. package/lib/core/schema-stored/formatV2.js +52 -0
  196. package/lib/core/schema-stored/formatV2.js.map +1 -0
  197. package/lib/core/schema-stored/index.d.ts +3 -1
  198. package/lib/core/schema-stored/index.d.ts.map +1 -1
  199. package/lib/core/schema-stored/index.js +3 -1
  200. package/lib/core/schema-stored/index.js.map +1 -1
  201. package/lib/core/schema-stored/schema.d.ts +49 -17
  202. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  203. package/lib/core/schema-stored/schema.js +63 -21
  204. package/lib/core/schema-stored/schema.js.map +1 -1
  205. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
  206. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  207. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +11 -7
  208. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  209. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  210. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  211. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +7 -7
  212. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  213. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
  214. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  215. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  216. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  217. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
  218. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  219. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
  220. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  221. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +23 -24
  222. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  223. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  224. package/lib/feature-libraries/flex-tree/index.d.ts +0 -1
  225. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  226. package/lib/feature-libraries/flex-tree/index.js +0 -1
  227. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  228. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
  229. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  230. package/lib/feature-libraries/flex-tree/lazyEntity.js +3 -0
  231. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  232. package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -2
  233. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  234. package/lib/feature-libraries/flex-tree/lazyField.js +3 -6
  235. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  236. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
  237. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  238. package/lib/feature-libraries/flex-tree/lazyNode.js +15 -7
  239. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  240. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
  241. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  242. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -5
  243. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  244. package/lib/feature-libraries/index.d.ts +2 -2
  245. package/lib/feature-libraries/index.d.ts.map +1 -1
  246. package/lib/feature-libraries/index.js +1 -1
  247. package/lib/feature-libraries/index.js.map +1 -1
  248. package/lib/feature-libraries/mapTreeCursor.d.ts +16 -2
  249. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  250. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  251. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  252. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
  253. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  254. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  255. package/lib/feature-libraries/object-forest/objectForest.js +2 -0
  256. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  257. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  258. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
  259. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  260. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
  261. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  262. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
  263. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  264. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  265. package/lib/feature-libraries/schema-index/codec.js +60 -10
  266. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  267. package/lib/feature-libraries/schema-index/formatV1.d.ts +1 -1
  268. package/lib/feature-libraries/schema-index/formatV2.d.ts +42 -0
  269. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
  270. package/lib/feature-libraries/schema-index/formatV2.js +23 -0
  271. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -0
  272. package/lib/feature-libraries/schema-index/index.d.ts +2 -1
  273. package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
  274. package/lib/feature-libraries/schema-index/index.js +2 -1
  275. package/lib/feature-libraries/schema-index/index.js.map +1 -1
  276. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
  277. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  278. package/lib/feature-libraries/schema-index/schemaSummarizer.js +6 -6
  279. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  280. package/lib/index.d.ts +2 -2
  281. package/lib/index.d.ts.map +1 -1
  282. package/lib/index.js.map +1 -1
  283. package/lib/packageVersion.d.ts +1 -1
  284. package/lib/packageVersion.d.ts.map +1 -1
  285. package/lib/packageVersion.js +1 -1
  286. package/lib/packageVersion.js.map +1 -1
  287. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  288. package/lib/shared-tree/schematizeTree.js +1 -0
  289. package/lib/shared-tree/schematizeTree.js.map +1 -1
  290. package/lib/shared-tree/sharedTree.d.ts +5 -1
  291. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  292. package/lib/shared-tree/sharedTree.js +34 -5
  293. package/lib/shared-tree/sharedTree.js.map +1 -1
  294. package/lib/shared-tree/treeAlpha.d.ts +1 -1
  295. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  296. package/lib/shared-tree/treeAlpha.js +3 -2
  297. package/lib/shared-tree/treeAlpha.js.map +1 -1
  298. package/lib/shared-tree-core/editManagerSummarizer.d.ts +8 -3
  299. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  300. package/lib/shared-tree-core/editManagerSummarizer.js +2 -5
  301. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  302. package/lib/shared-tree-core/sharedTreeCore.d.ts +18 -7
  303. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  304. package/lib/shared-tree-core/sharedTreeCore.js +15 -2
  305. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  306. package/lib/simple-tree/api/schemaCompatibilityTester.js +1 -1
  307. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  308. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
  309. package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
  310. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  311. package/lib/simple-tree/api/schemaFactory.d.ts +15 -11
  312. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  313. package/lib/simple-tree/api/schemaFactory.js +4 -0
  314. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  315. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
  316. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  317. package/lib/simple-tree/api/schemaFactoryAlpha.js +31 -4
  318. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  319. package/lib/simple-tree/api/storedSchema.js +2 -2
  320. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  321. package/lib/simple-tree/api/treeChangeEvents.d.ts +8 -3
  322. package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
  323. package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
  324. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  325. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
  326. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  327. package/lib/simple-tree/core/treeNodeKernel.js +1 -1
  328. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  329. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +5 -9
  330. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  331. package/lib/simple-tree/core/unhydratedFlexTree.js +15 -34
  332. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  333. package/lib/simple-tree/index.d.ts +2 -2
  334. package/lib/simple-tree/index.d.ts.map +1 -1
  335. package/lib/simple-tree/index.js.map +1 -1
  336. package/lib/simple-tree/leafNodeSchema.d.ts +2 -0
  337. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  338. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  339. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
  340. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  341. package/lib/simple-tree/node-kinds/array/arrayNode.js +3 -1
  342. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  343. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
  344. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  345. package/lib/simple-tree/node-kinds/map/mapNode.js +5 -3
  346. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  347. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
  348. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  349. package/lib/simple-tree/node-kinds/object/objectNode.js +3 -1
  350. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  351. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  352. package/lib/simple-tree/prepareForInsertion.js +5 -1
  353. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  354. package/lib/simple-tree/schemaTypes.d.ts +50 -3
  355. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  356. package/lib/simple-tree/schemaTypes.js +28 -1
  357. package/lib/simple-tree/schemaTypes.js.map +1 -1
  358. package/lib/simple-tree/simpleSchema.d.ts +22 -4
  359. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  360. package/lib/simple-tree/simpleSchema.js.map +1 -1
  361. package/lib/simple-tree/toStoredSchema.d.ts +2 -0
  362. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  363. package/lib/simple-tree/toStoredSchema.js +13 -4
  364. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  365. package/lib/tableSchema.d.ts +1 -1
  366. package/lib/util/typeUtils.d.ts +2 -2
  367. package/lib/util/typeUtils.js.map +1 -1
  368. package/lib/util/utils.d.ts +2 -0
  369. package/lib/util/utils.d.ts.map +1 -1
  370. package/lib/util/utils.js.map +1 -1
  371. package/package.json +21 -21
  372. package/src/core/index.ts +3 -1
  373. package/src/core/schema-stored/formatV2.ts +78 -0
  374. package/src/core/schema-stored/index.ts +4 -1
  375. package/src/core/schema-stored/schema.ts +123 -33
  376. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +16 -11
  377. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -7
  378. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +4 -4
  379. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +9 -16
  380. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +32 -29
  381. package/src/feature-libraries/flex-tree/index.ts +0 -8
  382. package/src/feature-libraries/flex-tree/lazyEntity.ts +5 -1
  383. package/src/feature-libraries/flex-tree/lazyField.ts +5 -8
  384. package/src/feature-libraries/flex-tree/lazyNode.ts +17 -8
  385. package/src/feature-libraries/forest-summary/forestSummarizer.ts +9 -16
  386. package/src/feature-libraries/index.ts +1 -1
  387. package/src/feature-libraries/mapTreeCursor.ts +17 -8
  388. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +2 -0
  389. package/src/feature-libraries/object-forest/objectForest.ts +3 -0
  390. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +11 -6
  391. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +3 -3
  392. package/src/feature-libraries/schema-index/codec.ts +73 -14
  393. package/src/feature-libraries/schema-index/formatV2.ts +30 -0
  394. package/src/feature-libraries/schema-index/index.ts +2 -1
  395. package/src/feature-libraries/schema-index/schemaSummarizer.ts +11 -18
  396. package/src/index.ts +5 -0
  397. package/src/packageVersion.ts +1 -1
  398. package/src/shared-tree/schematizeTree.ts +1 -0
  399. package/src/shared-tree/sharedTree.ts +42 -12
  400. package/src/shared-tree/treeAlpha.ts +8 -3
  401. package/src/shared-tree-core/editManagerSummarizer.ts +9 -16
  402. package/src/shared-tree-core/sharedTreeCore.ts +33 -24
  403. package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
  404. package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
  405. package/src/simple-tree/api/schemaFactory.ts +16 -11
  406. package/src/simple-tree/api/schemaFactoryAlpha.ts +53 -8
  407. package/src/simple-tree/api/storedSchema.ts +4 -4
  408. package/src/simple-tree/api/treeChangeEvents.ts +8 -3
  409. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +5 -0
  410. package/src/simple-tree/core/treeNodeKernel.ts +1 -1
  411. package/src/simple-tree/core/unhydratedFlexTree.ts +22 -44
  412. package/src/simple-tree/index.ts +3 -0
  413. package/src/simple-tree/leafNodeSchema.ts +2 -0
  414. package/src/simple-tree/node-kinds/array/arrayNode.ts +5 -0
  415. package/src/simple-tree/node-kinds/map/mapNode.ts +11 -2
  416. package/src/simple-tree/node-kinds/object/objectNode.ts +9 -1
  417. package/src/simple-tree/prepareForInsertion.ts +5 -1
  418. package/src/simple-tree/schemaTypes.ts +96 -7
  419. package/src/simple-tree/simpleSchema.ts +27 -5
  420. package/src/simple-tree/toStoredSchema.ts +15 -4
  421. package/src/util/typeUtils.ts +2 -2
  422. package/src/util/utils.ts +2 -0
  423. package/dist/feature-libraries/flex-tree/navigation.d.ts +0 -46
  424. package/dist/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  425. package/dist/feature-libraries/flex-tree/navigation.js +0 -104
  426. package/dist/feature-libraries/flex-tree/navigation.js.map +0 -1
  427. package/lib/feature-libraries/flex-tree/navigation.d.ts +0 -46
  428. package/lib/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
  429. package/lib/feature-libraries/flex-tree/navigation.js +0 -97
  430. package/lib/feature-libraries/flex-tree/navigation.js.map +0 -1
  431. package/src/feature-libraries/flex-tree/navigation.ts +0 -121
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { type ArrayNodeCustomizableSchema, type MapNodeCustomizableSchema, type ObjectNodeSchema } from "../node-kinds/index.js";
6
6
  import { SchemaFactory, type SchemaFactoryObjectOptions, type ScopedSchemaName } from "./schemaFactory.js";
7
- import type { ImplicitAllowedTypes, ImplicitAnnotatedAllowedTypes, ImplicitAnnotatedFieldSchema, NodeSchemaOptions } from "../schemaTypes.js";
7
+ import type { ImplicitAllowedTypes, ImplicitAnnotatedAllowedTypes, ImplicitAnnotatedFieldSchema, NodeSchemaOptionsAlpha } from "../schemaTypes.js";
8
8
  import type { RestrictiveStringRecord } from "../../util/index.js";
9
9
  import type { NodeKind, TreeNodeSchemaClass } from "../core/index.js";
10
10
  import type { ArrayNodeCustomizableSchemaUnsafe, MapNodeCustomizableSchemaUnsafe, System_Unsafe } from "./typesUnsafe.js";
@@ -45,31 +45,61 @@ export declare class SchemaFactoryAlpha<out TScope extends string | undefined =
45
45
  */
46
46
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T, never, TCustomMetadata> & SimpleObjectNodeSchema<TCustomMetadata> & Pick<ObjectNodeSchema, "fields">;
47
47
  /**
48
- * {@inheritDoc SchemaStatics.optional}
48
+ * {@inheritDoc SchemaStatics.leaves}
49
49
  */
50
50
  static readonly leaves: readonly [import("../leafNodeSchema.js").LeafSchema<"string", string> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"number", number> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"boolean", boolean> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"null", null> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"handle", import("@fluidframework/core-interfaces").IFluidHandle<unknown>> & import("../simpleSchema.js").SimpleLeafNodeSchema];
51
51
  /**
52
52
  * {@inheritDoc SchemaStatics.optional}
53
53
  */
54
54
  static readonly optional: {
55
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
56
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
55
+ <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
56
+ <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
57
57
  };
58
58
  /**
59
59
  * {@inheritDoc SchemaStatics.required}
60
60
  */
61
61
  static readonly required: {
62
- <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, T, TCustomMetadata>;
63
- <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
62
+ <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, T, TCustomMetadata>;
63
+ <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
64
64
  };
65
65
  /**
66
66
  * {@inheritDoc SchemaStatics.optionalRecursive}
67
67
  */
68
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => import("./typesUnsafe.js").FieldSchemaAlphaUnsafe<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
68
+ static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => import("./typesUnsafe.js").FieldSchemaAlphaUnsafe<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
69
+ /**
70
+ * {@inheritDoc SchemaStatics.requiredRecursive}
71
+ */
72
+ static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => import("./typesUnsafe.js").FieldSchemaAlphaUnsafe<import("../schemaTypes.js").FieldKind.Required, T, TCustomMetadata>;
69
73
  /**
70
74
  * Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.
71
75
  */
72
76
  static readonly identifier: <const TCustomMetadata = unknown>(props?: Omit<import("../schemaTypes.js").FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Identifier, import("../leafNodeSchema.js").LeafSchema<"string", string> & import("../simpleSchema.js").SimpleLeafNodeSchema, TCustomMetadata>;
77
+ /**
78
+ * {@inheritDoc SchemaStatics.leaves}
79
+ */
80
+ readonly leaves: readonly [import("../leafNodeSchema.js").LeafSchema<"string", string> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"number", number> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"boolean", boolean> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"null", null> & import("../simpleSchema.js").SimpleLeafNodeSchema, import("../leafNodeSchema.js").LeafSchema<"handle", import("@fluidframework/core-interfaces").IFluidHandle<unknown>> & import("../simpleSchema.js").SimpleLeafNodeSchema];
81
+ /**
82
+ * {@inheritDoc SchemaStatics.optional}
83
+ */
84
+ readonly optional: {
85
+ <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
86
+ <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Optional, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
87
+ };
88
+ /**
89
+ * {@inheritDoc SchemaStatics.required}
90
+ */
91
+ readonly required: {
92
+ <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, T, TCustomMetadata>;
93
+ <const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata_1>, "defaultProvider"> | undefined): import("../schemaTypes.js").FieldSchemaAlpha<import("../schemaTypes.js").FieldKind.Required, import("../schemaTypes.js").UnannotateImplicitAllowedTypes<T_1>, TCustomMetadata_1>;
94
+ };
95
+ /**
96
+ * {@inheritDoc SchemaStatics.optionalRecursive}
97
+ */
98
+ readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => import("./typesUnsafe.js").FieldSchemaAlphaUnsafe<import("../schemaTypes.js").FieldKind.Optional, T, TCustomMetadata>;
99
+ /**
100
+ * {@inheritDoc SchemaStatics.requiredRecursive}
101
+ */
102
+ readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<import("../schemaTypes.js").FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => import("./typesUnsafe.js").FieldSchemaAlphaUnsafe<import("../schemaTypes.js").FieldKind.Required, T, TCustomMetadata>;
73
103
  /**
74
104
  * Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.
75
105
  *
@@ -84,11 +114,11 @@ export declare class SchemaFactoryAlpha<out TScope extends string | undefined =
84
114
  * }) {}
85
115
  * ```
86
116
  */
87
- mapAlpha<Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
117
+ mapAlpha<Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
88
118
  /**
89
119
  * {@inheritDoc SchemaFactory.objectRecursive}
90
120
  */
91
- mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): MapNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
121
+ mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
92
122
  /**
93
123
  * Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeArrayNode:interface)}.
94
124
  *
@@ -101,11 +131,11 @@ export declare class SchemaFactoryAlpha<out TScope extends string | undefined =
101
131
  * class NamedArray extends factory.arrayAlpha("name", factory.number) {}
102
132
  * ```
103
133
  */
104
- arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
134
+ arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
105
135
  /**
106
136
  * {@inheritDoc SchemaFactory.objectRecursive}
107
137
  */
108
- arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>): ArrayNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
138
+ arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
109
139
  /**
110
140
  * Create a {@link SchemaFactory} with a {@link SchemaFactory.scope|scope} which is a combination of this factory's scope and the provided name.
111
141
  * @remarks
@@ -1 +1 @@
1
- {"version":3,"file":"schemaFactoryAlpha.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/schemaFactoryAlpha.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemaFactoryAlpha.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/schemaFactoryAlpha.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,29 @@ const schemaFactory_js_1 = require("./schemaFactory.js");
17
17
  * If we were to do so, they would be exposed on the public API surface of `SchemaFactory`.
18
18
  */
19
19
  class SchemaFactoryAlpha extends schemaFactory_js_1.SchemaFactory {
20
+ constructor() {
21
+ super(...arguments);
22
+ /**
23
+ * {@inheritDoc SchemaStatics.leaves}
24
+ */
25
+ this.leaves = schemaFactory_js_1.schemaStatics.leaves;
26
+ /**
27
+ * {@inheritDoc SchemaStatics.optional}
28
+ */
29
+ this.optional = schemaFactory_js_1.schemaStatics.optional;
30
+ /**
31
+ * {@inheritDoc SchemaStatics.required}
32
+ */
33
+ this.required = schemaFactory_js_1.schemaStatics.required;
34
+ /**
35
+ * {@inheritDoc SchemaStatics.optionalRecursive}
36
+ */
37
+ this.optionalRecursive = schemaFactory_js_1.schemaStatics.optionalRecursive;
38
+ /**
39
+ * {@inheritDoc SchemaStatics.requiredRecursive}
40
+ */
41
+ this.requiredRecursive = schemaFactory_js_1.schemaStatics.requiredRecursive;
42
+ }
20
43
  scoped2(name) {
21
44
  return (this.scope === undefined ? `${name}` : `${this.scope}.${name}`);
22
45
  }
@@ -29,7 +52,7 @@ class SchemaFactoryAlpha extends schemaFactory_js_1.SchemaFactory {
29
52
  */
30
53
  objectAlpha(name, fields, options) {
31
54
  return (0, index_js_1.objectSchema)(this.scoped2(name), fields, true, options?.allowUnknownOptionalFields ??
32
- schemaFactory_js_1.defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields, options?.metadata);
55
+ schemaFactory_js_1.defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields, options?.metadata, options?.persistedMetadata);
33
56
  }
34
57
  /**
35
58
  * {@inheritdoc SchemaFactory.objectRecursive}
@@ -52,7 +75,7 @@ class SchemaFactoryAlpha extends schemaFactory_js_1.SchemaFactory {
52
75
  * ```
53
76
  */
54
77
  mapAlpha(name, allowedTypes, options) {
55
- return (0, index_js_1.mapSchema)(this.scoped2(name), allowedTypes, true, true, options?.metadata);
78
+ return (0, index_js_1.mapSchema)(this.scoped2(name), allowedTypes, true, true, options?.metadata, options?.persistedMetadata);
56
79
  }
57
80
  /**
58
81
  * {@inheritDoc SchemaFactory.objectRecursive}
@@ -74,7 +97,7 @@ class SchemaFactoryAlpha extends schemaFactory_js_1.SchemaFactory {
74
97
  * ```
75
98
  */
76
99
  arrayAlpha(name, allowedTypes, options) {
77
- return (0, index_js_1.arraySchema)(this.scoped2(name), allowedTypes, true, true, options?.metadata);
100
+ return (0, index_js_1.arraySchema)(this.scoped2(name), allowedTypes, true, true, options?.metadata, options?.persistedMetadata);
78
101
  }
79
102
  /**
80
103
  * {@inheritDoc SchemaFactory.objectRecursive}
@@ -95,7 +118,7 @@ class SchemaFactoryAlpha extends schemaFactory_js_1.SchemaFactory {
95
118
  }
96
119
  exports.SchemaFactoryAlpha = SchemaFactoryAlpha;
97
120
  /**
98
- * {@inheritDoc SchemaStatics.optional}
121
+ * {@inheritDoc SchemaStatics.leaves}
99
122
  */
100
123
  SchemaFactoryAlpha.leaves = schemaFactory_js_1.schemaStatics.leaves;
101
124
  /**
@@ -110,6 +133,10 @@ SchemaFactoryAlpha.required = schemaFactory_js_1.schemaStatics.required;
110
133
  * {@inheritDoc SchemaStatics.optionalRecursive}
111
134
  */
112
135
  SchemaFactoryAlpha.optionalRecursive = schemaFactory_js_1.schemaStatics.optionalRecursive;
136
+ /**
137
+ * {@inheritDoc SchemaStatics.requiredRecursive}
138
+ */
139
+ SchemaFactoryAlpha.requiredRecursive = schemaFactory_js_1.schemaStatics.requiredRecursive;
113
140
  /**
114
141
  * Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.
115
142
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schemaFactoryAlpha.js","sourceRoot":"","sources":["../../../src/simple-tree/api/schemaFactoryAlpha.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qDAOgC;AAChC,yDAM4B;AAiB5B;;;;;;;;GAQG;AACH,MAAa,kBAGX,SAAQ,gCAA4B;IAC7B,OAAO,CAA8B,IAAU;QACtD,OAAO,CACN,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAC5B,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAKjB,IAAU,EACV,MAAS,EACT,OAAqD;QAcrD,OAAO,IAAA,uBAAY,EAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,MAAM,EACN,IAAI,EACJ,OAAO,EAAE,0BAA0B;YAClC,oDAAiC,CAAC,0BAA0B,EAC7D,OAAO,EAAE,QAAQ,CACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACa,eAAe,CAK9B,IAAU,EACV,CAAI,EACJ,OAAqD;QAwBrD,OAAO,IAAI,CAAC,WAAW,CACtB,IAAI,EACJ,CAAqD,EACrD,OAAO,CAgBN,CAAC;IACJ,CAAC;IA2BD;;;;;;;;;;;;;OAaG;IACI,QAAQ,CAKd,IAAU,EACV,YAAe,EACf,OAA4C;QAE5C,OAAO,IAAA,oBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,4EAA4E;IAC5D,YAAY,CAI1B,IAAU,EAAE,YAAe,EAAE,OAA4C;QAC1E,OAAO,IAAI,CAAC,QAAQ,CACnB,IAAI,EACJ,YAAwC,EACxC,OAAO,CAKP,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACI,UAAU,CAKhB,IAAU,EACV,YAAe,EACf,OAA4C;QAE5C,OAAO,IAAA,sBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,4EAA4E;IAC5D,cAAc,CAI5B,IAAU,EAAE,YAAe,EAAE,OAA4C;QAC1E,OAAO,IAAI,CAAC,UAAU,CACrB,IAAI,EACJ,YAAwC,EACxC,OAAO,CAKP,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,aAAa,CACnB,IAAO;QAEP,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;;AArOF,gDAsOC;AA9HA;;GAEG;AAC6B,yBAAM,GAAG,gCAAa,CAAC,MAAM,CAAC;AAE9D;;GAEG;AAC6B,2BAAQ,GAAG,gCAAa,CAAC,QAAQ,CAAC;AAElE;;GAEG;AAC6B,2BAAQ,GAAG,gCAAa,CAAC,QAAQ,CAAC;AAElE;;GAEG;AAC6B,oCAAiB,GAAG,gCAAa,CAAC,iBAAiB,CAAC;AAEpF;;GAEG;AACoB,6BAAU,GAAG,gCAAa,CAAC,UAAU,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype ArrayNodeCustomizableSchema,\n\tarraySchema,\n\ttype MapNodeCustomizableSchema,\n\tmapSchema,\n\ttype ObjectNodeSchema,\n\tobjectSchema,\n} from \"../node-kinds/index.js\";\nimport {\n\tdefaultSchemaFactoryObjectOptions,\n\tSchemaFactory,\n\tschemaStatics,\n\ttype SchemaFactoryObjectOptions,\n\ttype ScopedSchemaName,\n} from \"./schemaFactory.js\";\nimport type {\n\tImplicitAllowedTypes,\n\tImplicitAnnotatedAllowedTypes,\n\tImplicitAnnotatedFieldSchema,\n\tImplicitFieldSchema,\n\tNodeSchemaOptions,\n} from \"../schemaTypes.js\";\nimport type { RestrictiveStringRecord } from \"../../util/index.js\";\nimport type { NodeKind, TreeNodeSchemaClass } from \"../core/index.js\";\nimport type {\n\tArrayNodeCustomizableSchemaUnsafe,\n\tMapNodeCustomizableSchemaUnsafe,\n\tSystem_Unsafe,\n} from \"./typesUnsafe.js\";\nimport type { SimpleObjectNodeSchema } from \"../simpleSchema.js\";\n\n/**\n * {@link SchemaFactory} with additional alpha APIs.\n *\n * @alpha\n * @privateRemarks\n *\n * Some private methods on `SchemaFactory` are intentionally duplicated here to avoid increasing their exposure to `protected`.\n * If we were to do so, they would be exposed on the public API surface of `SchemaFactory`.\n */\nexport class SchemaFactoryAlpha<\n\tout TScope extends string | undefined = string | undefined,\n\tTName extends number | string = string,\n> extends SchemaFactory<TScope, TName> {\n\tprivate scoped2<Name extends TName | string>(name: Name): ScopedSchemaName<TScope, Name> {\n\t\treturn (\n\t\t\tthis.scope === undefined ? `${name}` : `${this.scope}.${name}`\n\t\t) as ScopedSchemaName<TScope, Name>;\n\t}\n\n\t/**\n\t * Define a {@link TreeNodeSchemaClass} for a {@link TreeObjectNode}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.\n\t * @param options - Additional options for the schema.\n\t */\n\tpublic objectAlpha<\n\t\tconst Name extends TName,\n\t\tconst T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tfields: T,\n\t\toptions?: SchemaFactoryObjectOptions<TCustomMetadata>,\n\t): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {\n\t\t/**\n\t\t * Typing checking workaround: not for for actual use.\n\t\t * @remarks\n\t\t * This API collides with {@link TreeNodeSchemaCore.createFromInsertable} to disable a type checking optimization which produces different and undesired results.\n\t\t * See {@link https://github.com/microsoft/TypeScript/issues/59049#issuecomment-2773459693} for more details.\n\t\t * @privateRemarks\n\t\t * The specific issue here is non-empty POJO mode object schema not being assignable to `ObjectNodeSchema`,\n\t\t * See the above link and the tests in objectNode.spec.ts which reference it.\n\t\t * @system\n\t\t */\n\t\treadonly createFromInsertable: unknown;\n\t} {\n\t\treturn objectSchema(\n\t\t\tthis.scoped2(name),\n\t\t\tfields,\n\t\t\ttrue,\n\t\t\toptions?.allowUnknownOptionalFields ??\n\t\t\t\tdefaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,\n\t\t\toptions?.metadata,\n\t\t);\n\t}\n\n\t/**\n\t * {@inheritdoc SchemaFactory.objectRecursive}\n\t */\n\tpublic override objectRecursive<\n\t\tconst Name extends TName,\n\t\tconst T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tt: T,\n\t\toptions?: SchemaFactoryObjectOptions<TCustomMetadata>,\n\t): TreeNodeSchemaClass<\n\t\tScopedSchemaName<TScope, Name>,\n\t\tNodeKind.Object,\n\t\tSystem_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>,\n\t\tobject & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,\n\t\tfalse,\n\t\tT,\n\t\tnever,\n\t\tTCustomMetadata\n\t> &\n\t\tSimpleObjectNodeSchema<TCustomMetadata> &\n\t\t// We can't just use non generic `ObjectNodeSchema` here since \"Base constructors must all have the same return type\".\n\t\t// We also can't just use generic `ObjectNodeSchema` here and not `TreeNodeSchemaClass` since that doesn't work with unsafe recursive types.\n\t\t// ObjectNodeSchema<\n\t\t// \tScopedSchemaName<TScope, Name>,\n\t\t// \t// T & RestrictiveStringRecord<ImplicitFieldSchema> would be nice to use here, but it breaks the recursive type self references.\n\t\t// \tRestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t// \tfalse,\n\t\t// \tTCustomMetadata\n\t\t// >\n\t\tPick<ObjectNodeSchema, \"fields\"> {\n\t\t// TODO: syntax highting is vs code is broken here. Don't trust it. Use the compiler instead.\n\t\ttype TScopedName = ScopedSchemaName<TScope, Name>;\n\t\treturn this.objectAlpha(\n\t\t\tname,\n\t\t\tt as T & RestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t\toptions,\n\t\t) as unknown as TreeNodeSchemaClass<\n\t\t\tTScopedName,\n\t\t\tNodeKind.Object,\n\t\t\tSystem_Unsafe.TreeObjectNodeUnsafe<T, TScopedName>,\n\t\t\tobject & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,\n\t\t\tfalse,\n\t\t\tT,\n\t\t\tnever,\n\t\t\tTCustomMetadata\n\t\t> &\n\t\t\tObjectNodeSchema<\n\t\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\t\tRestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t\t\tfalse,\n\t\t\t\tTCustomMetadata\n\t\t\t>;\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optional}\n\t */\n\tpublic static override readonly leaves = schemaStatics.leaves;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optional}\n\t */\n\tpublic static override readonly optional = schemaStatics.optional;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.required}\n\t */\n\tpublic static override readonly required = schemaStatics.required;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optionalRecursive}\n\t */\n\tpublic static override readonly optionalRecursive = schemaStatics.optionalRecursive;\n\n\t/**\n\t * Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.\n\t */\n\tpublic static readonly identifier = schemaStatics.identifier;\n\n\t/**\n\t * Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param allowedTypes - The types that may appear as values in the map.\n\t * @param options - Additional options for the schema.\n\t *\n\t * @example\n\t * ```typescript\n\t * class NamedMap extends factory.map(\"name\", factory.number, {\n\t * \tmetadata: { description: \"A map of numbers\" }\n\t * }) {}\n\t * ```\n\t */\n\tpublic mapAlpha<\n\t\tName extends TName,\n\t\tconst T extends ImplicitAnnotatedAllowedTypes,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tallowedTypes: T,\n\t\toptions?: NodeSchemaOptions<TCustomMetadata>,\n\t): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {\n\t\treturn mapSchema(this.scoped2(name), allowedTypes, true, true, options?.metadata);\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaFactory.objectRecursive}\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tpublic override mapRecursive<\n\t\tName extends TName,\n\t\tconst T extends System_Unsafe.ImplicitAllowedTypesUnsafe,\n\t\tconst TCustomMetadata = unknown,\n\t>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>) {\n\t\treturn this.mapAlpha(\n\t\t\tname,\n\t\t\tallowedTypes as T & ImplicitAllowedTypes,\n\t\t\toptions,\n\t\t) as unknown as MapNodeCustomizableSchemaUnsafe<\n\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\tT,\n\t\t\tTCustomMetadata\n\t\t>;\n\t}\n\n\t/**\n\t * Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeArrayNode:interface)}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param allowedTypes - The types that may appear in the array.\n\t * @param options - Additional options for the schema.\n\t *\n\t * @example\n\t * ```typescript\n\t * class NamedArray extends factory.arrayAlpha(\"name\", factory.number) {}\n\t * ```\n\t */\n\tpublic arrayAlpha<\n\t\tconst Name extends TName,\n\t\tconst T extends ImplicitAnnotatedAllowedTypes,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tallowedTypes: T,\n\t\toptions?: NodeSchemaOptions<TCustomMetadata>,\n\t): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {\n\t\treturn arraySchema(this.scoped2(name), allowedTypes, true, true, options?.metadata);\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaFactory.objectRecursive}\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tpublic override arrayRecursive<\n\t\tconst Name extends TName,\n\t\tconst T extends System_Unsafe.ImplicitAllowedTypesUnsafe,\n\t\tconst TCustomMetadata = unknown,\n\t>(name: Name, allowedTypes: T, options?: NodeSchemaOptions<TCustomMetadata>) {\n\t\treturn this.arrayAlpha(\n\t\t\tname,\n\t\t\tallowedTypes as T & ImplicitAllowedTypes,\n\t\t\toptions,\n\t\t) as unknown as ArrayNodeCustomizableSchemaUnsafe<\n\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\tT,\n\t\t\tTCustomMetadata\n\t\t>;\n\t}\n\n\t/**\n\t * Create a {@link SchemaFactory} with a {@link SchemaFactory.scope|scope} which is a combination of this factory's scope and the provided name.\n\t * @remarks\n\t * The main use-case for this is when creating a collection of related schema (for example using a function that creates multiple schema).\n\t * Creating such related schema using a sub-scope helps ensure they won't collide with other schema in the parent scope.\n\t */\n\tpublic scopedFactory<const T extends TName, TNameInner extends number | string = string>(\n\t\tname: T,\n\t): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner> {\n\t\treturn new SchemaFactoryAlpha(this.scoped2(name));\n\t}\n}\n"]}
1
+ {"version":3,"file":"schemaFactoryAlpha.js","sourceRoot":"","sources":["../../../src/simple-tree/api/schemaFactoryAlpha.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qDAOgC;AAChC,yDAM4B;AAiB5B;;;;;;;;GAQG;AACH,MAAa,kBAGX,SAAQ,gCAA4B;IAHtC;;QAuIC;;WAEG;QACsB,WAAM,GAAG,gCAAa,CAAC,MAAM,CAAC;QAEvD;;WAEG;QACsB,aAAQ,GAAG,gCAAa,CAAC,QAAQ,CAAC;QAE3D;;WAEG;QACsB,aAAQ,GAAG,gCAAa,CAAC,QAAQ,CAAC;QAE3D;;WAEG;QACsB,sBAAiB,GAAG,gCAAa,CAAC,iBAAiB,CAAC;QAE7E;;WAEG;QACsB,sBAAiB,GAAG,gCAAa,CAAC,iBAAiB,CAAC;IAqH9E,CAAC;IA/QQ,OAAO,CAA8B,IAAU;QACtD,OAAO,CACN,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAC5B,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAKjB,IAAU,EACV,MAAS,EACT,OAAqD;QAcrD,OAAO,IAAA,uBAAY,EAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,MAAM,EACN,IAAI,EACJ,OAAO,EAAE,0BAA0B;YAClC,oDAAiC,CAAC,0BAA0B,EAC7D,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,iBAAiB,CAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACa,eAAe,CAK9B,IAAU,EACV,CAAI,EACJ,OAAqD;QAwBrD,OAAO,IAAI,CAAC,WAAW,CACtB,IAAI,EACJ,CAAqD,EACrD,OAAO,CAgBN,CAAC;IACJ,CAAC;IAyDD;;;;;;;;;;;;;OAaG;IACI,QAAQ,CAKd,IAAU,EACV,YAAe,EACf,OAAiD;QAEjD,OAAO,IAAA,oBAAS,EACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,iBAAiB,CAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,4EAA4E;IAC5D,YAAY,CAI1B,IAAU,EAAE,YAAe,EAAE,OAAiD;QAC/E,OAAO,IAAI,CAAC,QAAQ,CACnB,IAAI,EACJ,YAAwC,EACxC,OAAO,CAKP,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACI,UAAU,CAKhB,IAAU,EACV,YAAe,EACf,OAAiD;QAEjD,OAAO,IAAA,sBAAW,EACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,iBAAiB,CAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,4EAA4E;IAC5D,cAAc,CAI5B,IAAU,EAAE,YAAe,EAAE,OAAiD;QAC/E,OAAO,IAAI,CAAC,UAAU,CACrB,IAAI,EACJ,YAAwC,EACxC,OAAO,CAKP,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,aAAa,CACnB,IAAO;QAEP,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;;AAlRF,gDAmRC;AA1KA;;GAEG;AAC6B,yBAAM,GAAG,gCAAa,CAAC,MAAM,AAAvB,CAAwB;AAE9D;;GAEG;AAC6B,2BAAQ,GAAG,gCAAa,CAAC,QAAQ,AAAzB,CAA0B;AAElE;;GAEG;AAC6B,2BAAQ,GAAG,gCAAa,CAAC,QAAQ,AAAzB,CAA0B;AAElE;;GAEG;AAC6B,oCAAiB,GAAG,gCAAa,CAAC,iBAAiB,AAAlC,CAAmC;AAEpF;;GAEG;AAC6B,oCAAiB,GAAG,gCAAa,CAAC,iBAAiB,AAAlC,CAAmC;AAEpF;;GAEG;AACoB,6BAAU,GAAG,gCAAa,CAAC,UAAU,AAA3B,CAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype ArrayNodeCustomizableSchema,\n\tarraySchema,\n\ttype MapNodeCustomizableSchema,\n\tmapSchema,\n\ttype ObjectNodeSchema,\n\tobjectSchema,\n} from \"../node-kinds/index.js\";\nimport {\n\tdefaultSchemaFactoryObjectOptions,\n\tSchemaFactory,\n\tschemaStatics,\n\ttype SchemaFactoryObjectOptions,\n\ttype ScopedSchemaName,\n} from \"./schemaFactory.js\";\nimport type {\n\tImplicitAllowedTypes,\n\tImplicitAnnotatedAllowedTypes,\n\tImplicitAnnotatedFieldSchema,\n\tImplicitFieldSchema,\n\tNodeSchemaOptionsAlpha,\n} from \"../schemaTypes.js\";\nimport type { RestrictiveStringRecord } from \"../../util/index.js\";\nimport type { NodeKind, TreeNodeSchemaClass } from \"../core/index.js\";\nimport type {\n\tArrayNodeCustomizableSchemaUnsafe,\n\tMapNodeCustomizableSchemaUnsafe,\n\tSystem_Unsafe,\n} from \"./typesUnsafe.js\";\nimport type { SimpleObjectNodeSchema } from \"../simpleSchema.js\";\n\n/**\n * {@link SchemaFactory} with additional alpha APIs.\n *\n * @alpha\n * @privateRemarks\n *\n * Some private methods on `SchemaFactory` are intentionally duplicated here to avoid increasing their exposure to `protected`.\n * If we were to do so, they would be exposed on the public API surface of `SchemaFactory`.\n */\nexport class SchemaFactoryAlpha<\n\tout TScope extends string | undefined = string | undefined,\n\tTName extends number | string = string,\n> extends SchemaFactory<TScope, TName> {\n\tprivate scoped2<Name extends TName | string>(name: Name): ScopedSchemaName<TScope, Name> {\n\t\treturn (\n\t\t\tthis.scope === undefined ? `${name}` : `${this.scope}.${name}`\n\t\t) as ScopedSchemaName<TScope, Name>;\n\t}\n\n\t/**\n\t * Define a {@link TreeNodeSchemaClass} for a {@link TreeObjectNode}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.\n\t * @param options - Additional options for the schema.\n\t */\n\tpublic objectAlpha<\n\t\tconst Name extends TName,\n\t\tconst T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tfields: T,\n\t\toptions?: SchemaFactoryObjectOptions<TCustomMetadata>,\n\t): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {\n\t\t/**\n\t\t * Typing checking workaround: not for for actual use.\n\t\t * @remarks\n\t\t * This API collides with {@link TreeNodeSchemaCore.createFromInsertable} to disable a type checking optimization which produces different and undesired results.\n\t\t * See {@link https://github.com/microsoft/TypeScript/issues/59049#issuecomment-2773459693} for more details.\n\t\t * @privateRemarks\n\t\t * The specific issue here is non-empty POJO mode object schema not being assignable to `ObjectNodeSchema`,\n\t\t * See the above link and the tests in objectNode.spec.ts which reference it.\n\t\t * @system\n\t\t */\n\t\treadonly createFromInsertable: unknown;\n\t} {\n\t\treturn objectSchema(\n\t\t\tthis.scoped2(name),\n\t\t\tfields,\n\t\t\ttrue,\n\t\t\toptions?.allowUnknownOptionalFields ??\n\t\t\t\tdefaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,\n\t\t\toptions?.metadata,\n\t\t\toptions?.persistedMetadata,\n\t\t);\n\t}\n\n\t/**\n\t * {@inheritdoc SchemaFactory.objectRecursive}\n\t */\n\tpublic override objectRecursive<\n\t\tconst Name extends TName,\n\t\tconst T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tt: T,\n\t\toptions?: SchemaFactoryObjectOptions<TCustomMetadata>,\n\t): TreeNodeSchemaClass<\n\t\tScopedSchemaName<TScope, Name>,\n\t\tNodeKind.Object,\n\t\tSystem_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>,\n\t\tobject & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,\n\t\tfalse,\n\t\tT,\n\t\tnever,\n\t\tTCustomMetadata\n\t> &\n\t\tSimpleObjectNodeSchema<TCustomMetadata> &\n\t\t// We can't just use non generic `ObjectNodeSchema` here since \"Base constructors must all have the same return type\".\n\t\t// We also can't just use generic `ObjectNodeSchema` here and not `TreeNodeSchemaClass` since that doesn't work with unsafe recursive types.\n\t\t// ObjectNodeSchema<\n\t\t// \tScopedSchemaName<TScope, Name>,\n\t\t// \t// T & RestrictiveStringRecord<ImplicitFieldSchema> would be nice to use here, but it breaks the recursive type self references.\n\t\t// \tRestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t// \tfalse,\n\t\t// \tTCustomMetadata\n\t\t// >\n\t\tPick<ObjectNodeSchema, \"fields\"> {\n\t\t// TODO: syntax highting is vs code is broken here. Don't trust it. Use the compiler instead.\n\t\ttype TScopedName = ScopedSchemaName<TScope, Name>;\n\t\treturn this.objectAlpha(\n\t\t\tname,\n\t\t\tt as T & RestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t\toptions,\n\t\t) as unknown as TreeNodeSchemaClass<\n\t\t\tTScopedName,\n\t\t\tNodeKind.Object,\n\t\t\tSystem_Unsafe.TreeObjectNodeUnsafe<T, TScopedName>,\n\t\t\tobject & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,\n\t\t\tfalse,\n\t\t\tT,\n\t\t\tnever,\n\t\t\tTCustomMetadata\n\t\t> &\n\t\t\tObjectNodeSchema<\n\t\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\t\tRestrictiveStringRecord<ImplicitFieldSchema>,\n\t\t\t\tfalse,\n\t\t\t\tTCustomMetadata\n\t\t\t>;\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaStatics.leaves}\n\t */\n\tpublic static override readonly leaves = schemaStatics.leaves;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optional}\n\t */\n\tpublic static override readonly optional = schemaStatics.optional;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.required}\n\t */\n\tpublic static override readonly required = schemaStatics.required;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optionalRecursive}\n\t */\n\tpublic static override readonly optionalRecursive = schemaStatics.optionalRecursive;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.requiredRecursive}\n\t */\n\tpublic static override readonly requiredRecursive = schemaStatics.requiredRecursive;\n\n\t/**\n\t * Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.\n\t */\n\tpublic static readonly identifier = schemaStatics.identifier;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.leaves}\n\t */\n\tpublic override readonly leaves = schemaStatics.leaves;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optional}\n\t */\n\tpublic override readonly optional = schemaStatics.optional;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.required}\n\t */\n\tpublic override readonly required = schemaStatics.required;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.optionalRecursive}\n\t */\n\tpublic override readonly optionalRecursive = schemaStatics.optionalRecursive;\n\n\t/**\n\t * {@inheritDoc SchemaStatics.requiredRecursive}\n\t */\n\tpublic override readonly requiredRecursive = schemaStatics.requiredRecursive;\n\n\t/**\n\t * Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param allowedTypes - The types that may appear as values in the map.\n\t * @param options - Additional options for the schema.\n\t *\n\t * @example\n\t * ```typescript\n\t * class NamedMap extends factory.map(\"name\", factory.number, {\n\t * \tmetadata: { description: \"A map of numbers\" }\n\t * }) {}\n\t * ```\n\t */\n\tpublic mapAlpha<\n\t\tName extends TName,\n\t\tconst T extends ImplicitAnnotatedAllowedTypes,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tallowedTypes: T,\n\t\toptions?: NodeSchemaOptionsAlpha<TCustomMetadata>,\n\t): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {\n\t\treturn mapSchema(\n\t\t\tthis.scoped2(name),\n\t\t\tallowedTypes,\n\t\t\ttrue,\n\t\t\ttrue,\n\t\t\toptions?.metadata,\n\t\t\toptions?.persistedMetadata,\n\t\t);\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaFactory.objectRecursive}\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tpublic override mapRecursive<\n\t\tName extends TName,\n\t\tconst T extends System_Unsafe.ImplicitAllowedTypesUnsafe,\n\t\tconst TCustomMetadata = unknown,\n\t>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {\n\t\treturn this.mapAlpha(\n\t\t\tname,\n\t\t\tallowedTypes as T & ImplicitAllowedTypes,\n\t\t\toptions,\n\t\t) as unknown as MapNodeCustomizableSchemaUnsafe<\n\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\tT,\n\t\t\tTCustomMetadata\n\t\t>;\n\t}\n\n\t/**\n\t * Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeArrayNode:interface)}.\n\t *\n\t * @param name - Unique identifier for this schema within this factory's scope.\n\t * @param allowedTypes - The types that may appear in the array.\n\t * @param options - Additional options for the schema.\n\t *\n\t * @example\n\t * ```typescript\n\t * class NamedArray extends factory.arrayAlpha(\"name\", factory.number) {}\n\t * ```\n\t */\n\tpublic arrayAlpha<\n\t\tconst Name extends TName,\n\t\tconst T extends ImplicitAnnotatedAllowedTypes,\n\t\tconst TCustomMetadata = unknown,\n\t>(\n\t\tname: Name,\n\t\tallowedTypes: T,\n\t\toptions?: NodeSchemaOptionsAlpha<TCustomMetadata>,\n\t): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {\n\t\treturn arraySchema(\n\t\t\tthis.scoped2(name),\n\t\t\tallowedTypes,\n\t\t\ttrue,\n\t\t\ttrue,\n\t\t\toptions?.metadata,\n\t\t\toptions?.persistedMetadata,\n\t\t);\n\t}\n\n\t/**\n\t * {@inheritDoc SchemaFactory.objectRecursive}\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tpublic override arrayRecursive<\n\t\tconst Name extends TName,\n\t\tconst T extends System_Unsafe.ImplicitAllowedTypesUnsafe,\n\t\tconst TCustomMetadata = unknown,\n\t>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {\n\t\treturn this.arrayAlpha(\n\t\t\tname,\n\t\t\tallowedTypes as T & ImplicitAllowedTypes,\n\t\t\toptions,\n\t\t) as unknown as ArrayNodeCustomizableSchemaUnsafe<\n\t\t\tScopedSchemaName<TScope, Name>,\n\t\t\tT,\n\t\t\tTCustomMetadata\n\t\t>;\n\t}\n\n\t/**\n\t * Create a {@link SchemaFactory} with a {@link SchemaFactory.scope|scope} which is a combination of this factory's scope and the provided name.\n\t * @remarks\n\t * The main use-case for this is when creating a collection of related schema (for example using a function that creates multiple schema).\n\t * Creating such related schema using a sub-scope helps ensure they won't collide with other schema in the parent scope.\n\t */\n\tpublic scopedFactory<const T extends TName, TNameInner extends number | string = string>(\n\t\tname: T,\n\t): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner> {\n\t\treturn new SchemaFactoryAlpha(this.scoped2(name));\n\t}\n}\n"]}
@@ -43,8 +43,8 @@ const schemaCompatibilityTester_js_1 = require("./schemaCompatibilityTester.js")
43
43
  */
44
44
  function extractPersistedSchema(schema, oldestCompatibleClient) {
45
45
  const stored = (0, toStoredSchema_js_1.simpleToStoredSchema)(schema);
46
- const writeVersion = (0, index_js_3.clientVersionToSchemaVersion)(oldestCompatibleClient);
47
- return (0, index_js_2.encodeTreeSchema)(stored, writeVersion);
46
+ const schemaWriteVersion = (0, index_js_3.clientVersionToSchemaVersion)(oldestCompatibleClient);
47
+ return (0, index_js_2.encodeTreeSchema)(stored, schemaWriteVersion);
48
48
  }
49
49
  exports.extractPersistedSchema = extractPersistedSchema;
50
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"storedSchema.js","sourceRoot":"","sources":["../../../src/simple-tree/api/storedSchema.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kDAAoD;AACpD,+DAI0C;AAC1C,4EAIuD;AAEvD,sDAAmF;AAEnF,4DAA4D;AAE5D,iFAA2E;AAG3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,sBAAsB,CACrC,MAAwB,EACxB,sBAA0C;IAE1C,MAAM,MAAM,GAAG,IAAA,wCAAoB,EAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAA,uCAA4B,EAAC,sBAAsB,CAAC,CAAC;IAC1E,OAAO,IAAA,2BAAgB,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAPD,wDAOC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,sBAAsB,CACrC,SAAyB,EACzB,IAAyB,EACzB,OAAsB;IAEtB,0DAA0D;IAC1D,2JAA2J;IAC3J,MAAM,WAAW,GAAG,IAAA,0BAAe,EAAC,OAAO,EAAE,wBAAa,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,wDAAyB,CAC/C,8BAAmB,EACnB,EAAE,EACF,IAAA,qCAAoB,EAAC,IAAI,CAAC,CAC1B,CAAC;IACF,OAAO,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAfD,wDAeC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { FluidClientVersion, ICodecOptions } from \"../../codec/index.js\";\nimport { SchemaVersion } from \"../../core/index.js\";\nimport {\n\tdefaultSchemaPolicy,\n\tencodeTreeSchema,\n\tmakeSchemaCodec,\n} from \"../../feature-libraries/index.js\";\nimport {\n\tclientVersionToSchemaVersion,\n\ttype Format,\n\t// eslint-disable-next-line import/no-internal-modules\n} from \"../../feature-libraries/schema-index/index.js\";\nimport type { JsonCompatible } from \"../../util/index.js\";\nimport { normalizeFieldSchema, type ImplicitFieldSchema } from \"../schemaTypes.js\";\nimport type { SimpleTreeSchema } from \"../simpleSchema.js\";\nimport { simpleToStoredSchema } from \"../toStoredSchema.js\";\n\nimport { SchemaCompatibilityTester } from \"./schemaCompatibilityTester.js\";\nimport type { SchemaCompatibilityStatus } from \"./tree.js\";\n\n/**\n * Dumps the \"persisted\" schema subset of the provided `schema` into a deterministic JSON-compatible, semi-human-readable format.\n *\n * @param schema - The schema to dump.\n *\n * @remarks\n * This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.\n * This format is also compatible with {@link ViewContent.schema}, {@link comparePersistedSchema} and {@link persistedToSimpleSchema}.\n *\n * This only includes the \"persisted\" subset of schema information, which means the portion which gets included in documents.\n * It thus uses \"persisted\" keys, see {@link FieldProps.key}.\n *\n * If two schema have identical \"persisted\" schema, then they are considered {@link SchemaCompatibilityStatus.isEquivalent|equivalent}.\n *\n * See also {@link comparePersistedSchema}.\n *\n * @example\n * An application could use this API to generate a `schema.json` file when it first releases,\n * then test that the schema is sill compatible with documents from that version with a test like :\n * ```typescript\n * assert.deepEqual(extractPersistedSchema(MySchema, FluidClientVersion.v2_0), require(\"./schema.json\"));\n * ```\n *\n * @privateRemarks\n * This currently uses the schema summary format, but that could be changed to something more human readable (particularly if the encoded format becomes less human readable).\n * This intentionally does not leak the format types in the API.\n *\n * Public API surface uses \"persisted\" terminology while internally we use \"stored\".\n * @alpha\n */\nexport function extractPersistedSchema(\n\tschema: SimpleTreeSchema,\n\toldestCompatibleClient: FluidClientVersion,\n): JsonCompatible {\n\tconst stored = simpleToStoredSchema(schema);\n\tconst writeVersion = clientVersionToSchemaVersion(oldestCompatibleClient);\n\treturn encodeTreeSchema(stored, writeVersion);\n}\n\n/**\n * Compares two schema extracted using {@link extractPersistedSchema}.\n * Reports the same compatibility that {@link TreeView.compatibility} would report if\n * opening a document that used the `persisted` schema and provided `view` to {@link ViewableTree.viewWith}.\n *\n * @param persisted - Schema persisted for a document. Typically persisted alongside the data and assumed to describe that data.\n * @param view - Schema which would be used to view persisted content.\n * @param options - {@link ICodecOptions} used when parsing the provided schema.\n * @param canInitialize - Passed through to the return value unchanged and otherwise unused.\n * @returns The {@link SchemaCompatibilityStatus} a {@link TreeView} would report for this combination of schema.\n *\n * @remarks\n * This uses the persisted formats for schema, meaning it only includes data which impacts compatibility.\n * It also uses the persisted format so that this API can be used in tests to compare against saved schema from previous versions of the application.\n *\n * @example\n * An application could use {@link extractPersistedSchema} to generate a `schema.json` file for various versions of the app,\n * then test that documents using those schema can be upgraded to work with the current schema using a test like:\n * ```typescript\n * assert(\n * \tcomparePersistedSchema(\n * \t\trequire(\"./schema.json\"),\n * \t\tMySchema,\n * \t\t{ jsonValidator: typeboxValidator },\n * \t\tfalse,\n * \t).canUpgrade,\n * );\n * ```\n * @alpha\n */\nexport function comparePersistedSchema(\n\tpersisted: JsonCompatible,\n\tview: ImplicitFieldSchema,\n\toptions: ICodecOptions,\n): Omit<SchemaCompatibilityStatus, \"canInitialize\"> {\n\t// Any version can be passed down to makeSchemaCodec here.\n\t// We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.\n\tconst schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);\n\tconst stored = schemaCodec.decode(persisted as Format);\n\tconst viewSchema = new SchemaCompatibilityTester(\n\t\tdefaultSchemaPolicy,\n\t\t{},\n\t\tnormalizeFieldSchema(view),\n\t);\n\treturn viewSchema.checkCompatibility(stored);\n}\n"]}
1
+ {"version":3,"file":"storedSchema.js","sourceRoot":"","sources":["../../../src/simple-tree/api/storedSchema.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kDAAoD;AACpD,+DAI0C;AAC1C,4EAIuD;AAEvD,sDAAmF;AAEnF,4DAA4D;AAE5D,iFAA2E;AAG3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,sBAAsB,CACrC,MAAwB,EACxB,sBAA0C;IAE1C,MAAM,MAAM,GAAG,IAAA,wCAAoB,EAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAA,uCAA4B,EAAC,sBAAsB,CAAC,CAAC;IAChF,OAAO,IAAA,2BAAgB,EAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAPD,wDAOC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,sBAAsB,CACrC,SAAyB,EACzB,IAAyB,EACzB,OAAsB;IAEtB,0DAA0D;IAC1D,2JAA2J;IAC3J,MAAM,WAAW,GAAG,IAAA,0BAAe,EAAC,OAAO,EAAE,wBAAa,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,SAAqB,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,wDAAyB,CAC/C,8BAAmB,EACnB,EAAE,EACF,IAAA,qCAAoB,EAAC,IAAI,CAAC,CAC1B,CAAC;IACF,OAAO,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAfD,wDAeC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { FluidClientVersion, ICodecOptions } from \"../../codec/index.js\";\nimport { SchemaVersion } from \"../../core/index.js\";\nimport {\n\tdefaultSchemaPolicy,\n\tencodeTreeSchema,\n\tmakeSchemaCodec,\n} from \"../../feature-libraries/index.js\";\nimport {\n\tclientVersionToSchemaVersion,\n\ttype FormatV1,\n\t// eslint-disable-next-line import/no-internal-modules\n} from \"../../feature-libraries/schema-index/index.js\";\nimport type { JsonCompatible } from \"../../util/index.js\";\nimport { normalizeFieldSchema, type ImplicitFieldSchema } from \"../schemaTypes.js\";\nimport type { SimpleTreeSchema } from \"../simpleSchema.js\";\nimport { simpleToStoredSchema } from \"../toStoredSchema.js\";\n\nimport { SchemaCompatibilityTester } from \"./schemaCompatibilityTester.js\";\nimport type { SchemaCompatibilityStatus } from \"./tree.js\";\n\n/**\n * Dumps the \"persisted\" schema subset of the provided `schema` into a deterministic JSON-compatible, semi-human-readable format.\n *\n * @param schema - The schema to dump.\n *\n * @remarks\n * This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.\n * This format is also compatible with {@link ViewContent.schema}, {@link comparePersistedSchema} and {@link persistedToSimpleSchema}.\n *\n * This only includes the \"persisted\" subset of schema information, which means the portion which gets included in documents.\n * It thus uses \"persisted\" keys, see {@link FieldProps.key}.\n *\n * If two schema have identical \"persisted\" schema, then they are considered {@link SchemaCompatibilityStatus.isEquivalent|equivalent}.\n *\n * See also {@link comparePersistedSchema}.\n *\n * @example\n * An application could use this API to generate a `schema.json` file when it first releases,\n * then test that the schema is sill compatible with documents from that version with a test like :\n * ```typescript\n * assert.deepEqual(extractPersistedSchema(MySchema, FluidClientVersion.v2_0), require(\"./schema.json\"));\n * ```\n *\n * @privateRemarks\n * This currently uses the schema summary format, but that could be changed to something more human readable (particularly if the encoded format becomes less human readable).\n * This intentionally does not leak the format types in the API.\n *\n * Public API surface uses \"persisted\" terminology while internally we use \"stored\".\n * @alpha\n */\nexport function extractPersistedSchema(\n\tschema: SimpleTreeSchema,\n\toldestCompatibleClient: FluidClientVersion,\n): JsonCompatible {\n\tconst stored = simpleToStoredSchema(schema);\n\tconst schemaWriteVersion = clientVersionToSchemaVersion(oldestCompatibleClient);\n\treturn encodeTreeSchema(stored, schemaWriteVersion);\n}\n\n/**\n * Compares two schema extracted using {@link extractPersistedSchema}.\n * Reports the same compatibility that {@link TreeView.compatibility} would report if\n * opening a document that used the `persisted` schema and provided `view` to {@link ViewableTree.viewWith}.\n *\n * @param persisted - Schema persisted for a document. Typically persisted alongside the data and assumed to describe that data.\n * @param view - Schema which would be used to view persisted content.\n * @param options - {@link ICodecOptions} used when parsing the provided schema.\n * @param canInitialize - Passed through to the return value unchanged and otherwise unused.\n * @returns The {@link SchemaCompatibilityStatus} a {@link TreeView} would report for this combination of schema.\n *\n * @remarks\n * This uses the persisted formats for schema, meaning it only includes data which impacts compatibility.\n * It also uses the persisted format so that this API can be used in tests to compare against saved schema from previous versions of the application.\n *\n * @example\n * An application could use {@link extractPersistedSchema} to generate a `schema.json` file for various versions of the app,\n * then test that documents using those schema can be upgraded to work with the current schema using a test like:\n * ```typescript\n * assert(\n * \tcomparePersistedSchema(\n * \t\trequire(\"./schema.json\"),\n * \t\tMySchema,\n * \t\t{ jsonValidator: typeboxValidator },\n * \t\tfalse,\n * \t).canUpgrade,\n * );\n * ```\n * @alpha\n */\nexport function comparePersistedSchema(\n\tpersisted: JsonCompatible,\n\tview: ImplicitFieldSchema,\n\toptions: ICodecOptions,\n): Omit<SchemaCompatibilityStatus, \"canInitialize\"> {\n\t// Any version can be passed down to makeSchemaCodec here.\n\t// We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.\n\tconst schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);\n\tconst stored = schemaCodec.decode(persisted as FormatV1);\n\tconst viewSchema = new SchemaCompatibilityTester(\n\t\tdefaultSchemaPolicy,\n\t\t{},\n\t\tnormalizeFieldSchema(view),\n\t);\n\treturn viewSchema.checkCompatibility(stored);\n}\n"]}
@@ -25,7 +25,10 @@
25
25
  */
26
26
  export interface TreeChangeEvents {
27
27
  /**
28
- * Emitted by a node after a batch of changes has been applied to the tree, if any of the changes affected the node.
28
+ * Emitted by a node if any changes affected the node.
29
+ *
30
+ * This event is emitted after all the changes in a batch have been applied to the whole tree.
31
+ * This means that a handler for this event will be able to read the updated state of the tree.
29
32
  *
30
33
  * - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).
31
34
  *
@@ -63,8 +66,10 @@ export interface TreeChangeEvents {
63
66
  */
64
67
  nodeChanged(unstable?: unknown): void;
65
68
  /**
66
- * Emitted by a node after a batch of changes has been applied to the tree, when something changed anywhere in the
67
- * subtree rooted at it.
69
+ * Emitted by a node if something changed anywhere in the subtree rooted at it.
70
+ *
71
+ * This event is emitted after all the changes in a batch have been applied to the whole tree.
72
+ * This means that a handler for this event will be able to read the updated state of the tree.
68
73
  *
69
74
  * @remarks
70
75
  * This event is not emitted when the node itself is moved to a different location in the tree or removed from the tree.
@@ -1 +1 @@
1
- {"version":3,"file":"treeChangeEvents.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/treeChangeEvents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;;;;;;;;OAeG;IACH,WAAW,IAAI,IAAI,CAAC;CACpB"}
1
+ {"version":3,"file":"treeChangeEvents.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/treeChangeEvents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,IAAI,IAAI,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"treeChangeEvents.js","sourceRoot":"","sources":["../../../src/simple-tree/api/treeChangeEvents.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * A collection of events that can be emitted by a {@link TreeNode}.\n *\n * @privateRemarks\n * TODO: add a way to subscribe to a specific field (for nodeChanged and treeChanged).\n * Probably have object node and map node specific APIs for this.\n *\n * TODO: ensure that subscription API for fields aligns with API for subscribing to the root.\n *\n * TODO: add more wider area (avoid needing tons of nodeChanged registration) events for use-cases other than treeChanged.\n * Some ideas:\n *\n * - treeChanged, but with some subtrees/fields/paths excluded\n * - helper to batch several nodeChanged calls to a treeChanged scope\n * - parent change (ex: registration on the parent field for a specific index: maybe allow it for a range. Ex: node event takes optional field and optional index range?)\n * - new content inserted into subtree. Either provide event for this and/or enough info to treeChanged to find and search the new sub-trees.\n * Add separate (non event related) API to efficiently scan tree for given set of types (using low level cursor and schema based filtering)\n * to allow efficiently searching for new content (and initial content) of a given type.\n *\n * @sealed @public\n */\nexport interface TreeChangeEvents {\n\t/**\n\t * Emitted by a node after a batch of changes has been applied to the tree, if any of the changes affected the node.\n\t *\n\t * - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).\n\t *\n\t * - Array nodes define a change as when an element is added, removed, moved or replaced.\n\t *\n\t * - Map nodes define a change as when an entry is added, updated, or removed.\n\t *\n\t * @param unstable - Future versions of this API (such as the one in beta on TreeBeta) may use this argument to provide additional data to the event.\n\t * users of this event should ensure that they do not provide a listener callback which has an optional parameter in this position, since unexpected data might get provided to it.\n\t * This parameter exists to capture this fact in the type system.\n\t * Using an inline lambda expression as the listener callback is a good pattern to avoid cases like this were arguments are added from breaking due to optional arguments.\n\t *\n\t * @remarks\n\t * This event is not emitted when:\n\t *\n\t * - Properties of a child node change. Notably, updates to an array node or a map node (like adding or removing\n\t * elements/entries) will emit this event on the array/map node itself, but not on the node that contains the\n\t * array/map node as one of its properties.\n\t *\n\t * - The node is moved to a different location in the tree or removed from the tree.\n\t * In this case the event is emitted on the _parent_ node, not the node itself.\n\t *\n\t * For remote edits, this event is not guaranteed to occur in the same order or quantity that it did in\n\t * the client that made the original edit.\n\t *\n\t * When the event is emitted, the tree is guaranteed to be in-schema.\n\t *\n\t * @privateRemarks\n\t * This event occurs whenever the apparent contents of the node instance change, regardless of what caused the change.\n\t * For example, it will fire when the local client reassigns a child, when part of a remote edit is applied to the\n\t * node, or when the node has to be updated due to resolution of a merge conflict\n\t * (for example a previously applied local change might be undone, then reapplied differently or not at all).\n\t *\n\t * TODO: define and document event ordering (ex: bottom up, with nodeChanged before treeChange on each level).\n\t */\n\tnodeChanged(unstable?: unknown): void;\n\n\t/**\n\t * Emitted by a node after a batch of changes has been applied to the tree, when something changed anywhere in the\n\t * subtree rooted at it.\n\t *\n\t * @remarks\n\t * This event is not emitted when the node itself is moved to a different location in the tree or removed from the tree.\n\t * In that case it is emitted on the _parent_ node, not the node itself.\n\t *\n\t * The node itself is part of the subtree, so this event will be emitted even if the only changes are to the properties\n\t * of the node itself.\n\t *\n\t * For remote edits, this event is not guaranteed to occur in the same order or quantity that it did in\n\t * the client that made the original edit.\n\t *\n\t * When it is emitted, the tree is guaranteed to be in-schema.\n\t */\n\ttreeChanged(): void;\n}\n"]}
1
+ {"version":3,"file":"treeChangeEvents.js","sourceRoot":"","sources":["../../../src/simple-tree/api/treeChangeEvents.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * A collection of events that can be emitted by a {@link TreeNode}.\n *\n * @privateRemarks\n * TODO: add a way to subscribe to a specific field (for nodeChanged and treeChanged).\n * Probably have object node and map node specific APIs for this.\n *\n * TODO: ensure that subscription API for fields aligns with API for subscribing to the root.\n *\n * TODO: add more wider area (avoid needing tons of nodeChanged registration) events for use-cases other than treeChanged.\n * Some ideas:\n *\n * - treeChanged, but with some subtrees/fields/paths excluded\n * - helper to batch several nodeChanged calls to a treeChanged scope\n * - parent change (ex: registration on the parent field for a specific index: maybe allow it for a range. Ex: node event takes optional field and optional index range?)\n * - new content inserted into subtree. Either provide event for this and/or enough info to treeChanged to find and search the new sub-trees.\n * Add separate (non event related) API to efficiently scan tree for given set of types (using low level cursor and schema based filtering)\n * to allow efficiently searching for new content (and initial content) of a given type.\n *\n * @sealed @public\n */\nexport interface TreeChangeEvents {\n\t/**\n\t * Emitted by a node if any changes affected the node.\n\t *\n\t * This event is emitted after all the changes in a batch have been applied to the whole tree.\n\t * This means that a handler for this event will be able to read the updated state of the tree.\n\t *\n\t * - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).\n\t *\n\t * - Array nodes define a change as when an element is added, removed, moved or replaced.\n\t *\n\t * - Map nodes define a change as when an entry is added, updated, or removed.\n\t *\n\t * @param unstable - Future versions of this API (such as the one in beta on TreeBeta) may use this argument to provide additional data to the event.\n\t * users of this event should ensure that they do not provide a listener callback which has an optional parameter in this position, since unexpected data might get provided to it.\n\t * This parameter exists to capture this fact in the type system.\n\t * Using an inline lambda expression as the listener callback is a good pattern to avoid cases like this were arguments are added from breaking due to optional arguments.\n\t *\n\t * @remarks\n\t * This event is not emitted when:\n\t *\n\t * - Properties of a child node change. Notably, updates to an array node or a map node (like adding or removing\n\t * elements/entries) will emit this event on the array/map node itself, but not on the node that contains the\n\t * array/map node as one of its properties.\n\t *\n\t * - The node is moved to a different location in the tree or removed from the tree.\n\t * In this case the event is emitted on the _parent_ node, not the node itself.\n\t *\n\t * For remote edits, this event is not guaranteed to occur in the same order or quantity that it did in\n\t * the client that made the original edit.\n\t *\n\t * When the event is emitted, the tree is guaranteed to be in-schema.\n\t *\n\t * @privateRemarks\n\t * This event occurs whenever the apparent contents of the node instance change, regardless of what caused the change.\n\t * For example, it will fire when the local client reassigns a child, when part of a remote edit is applied to the\n\t * node, or when the node has to be updated due to resolution of a merge conflict\n\t * (for example a previously applied local change might be undone, then reapplied differently or not at all).\n\t *\n\t * TODO: define and document event ordering (ex: bottom up, with nodeChanged before treeChange on each level).\n\t */\n\tnodeChanged(unstable?: unknown): void;\n\n\t/**\n\t * Emitted by a node if something changed anywhere in the subtree rooted at it.\n\t *\n\t * This event is emitted after all the changes in a batch have been applied to the whole tree.\n\t * This means that a handler for this event will be able to read the updated state of the tree.\n\t *\n\t * @remarks\n\t * This event is not emitted when the node itself is moved to a different location in the tree or removed from the tree.\n\t * In that case it is emitted on the _parent_ node, not the node itself.\n\t *\n\t * The node itself is part of the subtree, so this event will be emitted even if the only changes are to the properties\n\t * of the node itself.\n\t *\n\t * For remote edits, this event is not guaranteed to occur in the same order or quantity that it did in\n\t * the client that made the original edit.\n\t *\n\t * When it is emitted, the tree is guaranteed to be in-schema.\n\t */\n\ttreeChanged(): void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"viewSchemaToSimpleSchema.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/viewSchemaToSimpleSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAQX,gBAAgB,EAChB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,EAAE,OAAO,GACxB,gBAAgB,CA4BlB"}
1
+ {"version":3,"file":"viewSchemaToSimpleSchema.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/api/viewSchemaToSimpleSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAQX,gBAAgB,EAChB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,EAAE,OAAO,GACxB,gBAAgB,CA6BlB"}
@@ -47,6 +47,7 @@ function toSimpleTreeSchema(schema, copySchemaObjects) {
47
47
  allowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,
48
48
  kind: normalizedSchema.kind,
49
49
  metadata: normalizedSchema.metadata,
50
+ persistedMetadata: normalizedSchema.persistedMetadata,
50
51
  })
51
52
  : normalizedSchema,
52
53
  definitions,
@@ -77,6 +78,7 @@ function copySimpleLeafSchema(schema) {
77
78
  kind: index_js_1.NodeKind.Leaf,
78
79
  leafKind: schema.leafKind,
79
80
  metadata: schema.metadata,
81
+ persistedMetadata: schema.persistedMetadata,
80
82
  };
81
83
  }
82
84
  function copySimpleMapOrArraySchema(schema) {
@@ -84,6 +86,7 @@ function copySimpleMapOrArraySchema(schema) {
84
86
  kind: schema.kind,
85
87
  allowedTypesIdentifiers: schema.allowedTypesIdentifiers,
86
88
  metadata: schema.metadata,
89
+ persistedMetadata: schema.persistedMetadata,
87
90
  };
88
91
  }
89
92
  function copySimpleObjectSchema(schema) {
@@ -94,6 +97,7 @@ function copySimpleObjectSchema(schema) {
94
97
  kind: field.kind,
95
98
  allowedTypesIdentifiers: field.allowedTypesIdentifiers,
96
99
  metadata: field.metadata,
100
+ persistedMetadata: field.persistedMetadata,
97
101
  storedKey: field.storedKey,
98
102
  });
99
103
  }
@@ -101,6 +105,7 @@ function copySimpleObjectSchema(schema) {
101
105
  kind: index_js_1.NodeKind.Object,
102
106
  fields,
103
107
  metadata: schema.metadata,
108
+ persistedMetadata: schema.persistedMetadata,
104
109
  };
105
110
  }
106
111
  //# sourceMappingURL=viewSchemaToSimpleSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewSchemaToSimpleSchema.js","sourceRoot":"","sources":["../../../src/simple-tree/api/viewSchemaToSimpleSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { normalizeFieldSchema, type ImplicitFieldSchema } from \"../schemaTypes.js\";\nimport type {\n\tSimpleArrayNodeSchema,\n\tSimpleFieldSchema,\n\tSimpleLeafNodeSchema,\n\tSimpleMapNodeSchema,\n\tSimpleNodeSchema,\n\tSimpleObjectFieldSchema,\n\tSimpleObjectNodeSchema,\n\tSimpleTreeSchema,\n} from \"../simpleSchema.js\";\nimport { NodeKind } from \"../core/index.js\";\nimport { ArrayNodeSchema, MapNodeSchema, ObjectNodeSchema } from \"../node-kinds/index.js\";\nimport { walkFieldSchema } from \"../walkFieldSchema.js\";\nimport { LeafNodeSchema } from \"../leafNodeSchema.js\";\n\n/**\n * Converts an {@link ImplicitFieldSchema} to a \"simple\" schema representation.\n *\n * @param schema - The schema to convert\n * @param copySchemaObjects - If true, TreeNodeSchema and FieldSchema are copied into plain JavaScript objects. Either way, custom metadata is referenced and not copied.\n *\n * @remarks\n * Given that the Schema types used in {@link ImplicitFieldSchema} already implement the {@link SimpleNodeSchema} interfaces, there are limited use-cases for this function.\n * One possible use-case is converting schema to a more serialization friendly format.\n * This format however is not JSON compatible due to use of Maps and Sets,\n * but it it does not rely on cyclic object references for handling recursive schema and instead uses the `definitions` map.\n *\n * @privateRemarks\n * TODO: once SimpleTreeSchema is stable, {@link TreeViewConfiguration} could implement {@link SimpleTreeSchema} directly.\n * That would provide the non-copying alternative that could expose the value type of the definitions map as {@link TreeNodeSchema}.\n */\nexport function toSimpleTreeSchema(\n\tschema: ImplicitFieldSchema,\n\tcopySchemaObjects: boolean,\n): SimpleTreeSchema {\n\tconst normalizedSchema = normalizeFieldSchema(schema);\n\tconst definitions = new Map<string, SimpleNodeSchema>();\n\twalkFieldSchema(normalizedSchema, {\n\t\tnode: (nodeSchema) => {\n\t\t\t// The set of node kinds is extensible, but the typing of SimpleNodeSchema is not, so we need to check that the schema is one of the known kinds.\n\t\t\tassert(\n\t\t\t\tnodeSchema instanceof ArrayNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof MapNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof LeafNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof ObjectNodeSchema,\n\t\t\t\t0xb60 /* Invalid schema */,\n\t\t\t);\n\t\t\tconst outSchema = copySchemaObjects ? copySimpleNodeSchema(nodeSchema) : nodeSchema;\n\t\t\tdefinitions.set(nodeSchema.identifier, outSchema);\n\t\t},\n\t});\n\n\treturn {\n\t\troot: copySchemaObjects\n\t\t\t? ({\n\t\t\t\t\tallowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,\n\t\t\t\t\tkind: normalizedSchema.kind,\n\t\t\t\t\tmetadata: normalizedSchema.metadata,\n\t\t\t\t} satisfies SimpleFieldSchema)\n\t\t\t: normalizedSchema,\n\t\tdefinitions,\n\t};\n}\n\n/**\n * Copies a {@link SimpleNodeSchema} into a new plain JavaScript object.\n *\n * @remarks Caches the result on the input schema for future calls.\n */\nfunction copySimpleNodeSchema(schema: SimpleNodeSchema): SimpleNodeSchema {\n\tconst kind = schema.kind;\n\tswitch (kind) {\n\t\tcase NodeKind.Leaf:\n\t\t\treturn copySimpleLeafSchema(schema);\n\t\tcase NodeKind.Array:\n\t\tcase NodeKind.Map:\n\t\t\treturn copySimpleMapOrArraySchema(schema);\n\t\tcase NodeKind.Object:\n\t\t\treturn copySimpleObjectSchema(schema);\n\t\tdefault:\n\t\t\tunreachableCase(kind);\n\t}\n}\n\nfunction copySimpleLeafSchema(schema: SimpleLeafNodeSchema): SimpleLeafNodeSchema {\n\treturn {\n\t\tkind: NodeKind.Leaf,\n\t\tleafKind: schema.leafKind,\n\t\tmetadata: schema.metadata,\n\t};\n}\n\nfunction copySimpleMapOrArraySchema(\n\tschema: SimpleMapNodeSchema | SimpleArrayNodeSchema,\n): SimpleMapNodeSchema | SimpleArrayNodeSchema {\n\treturn {\n\t\tkind: schema.kind,\n\t\tallowedTypesIdentifiers: schema.allowedTypesIdentifiers,\n\t\tmetadata: schema.metadata,\n\t};\n}\n\nfunction copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNodeSchema {\n\tconst fields: Map<string, SimpleObjectFieldSchema> = new Map();\n\tfor (const [propertyKey, field] of schema.fields) {\n\t\t// field already is a SimpleObjectFieldSchema, but copy the subset of the properties needed by this interface to get a clean simple object.\n\t\tfields.set(propertyKey, {\n\t\t\tkind: field.kind,\n\t\t\tallowedTypesIdentifiers: field.allowedTypesIdentifiers,\n\t\t\tmetadata: field.metadata,\n\t\t\tstoredKey: field.storedKey,\n\t\t});\n\t}\n\n\treturn {\n\t\tkind: NodeKind.Object,\n\t\tfields,\n\t\tmetadata: schema.metadata,\n\t};\n}\n"]}
1
+ {"version":3,"file":"viewSchemaToSimpleSchema.js","sourceRoot":"","sources":["../../../src/simple-tree/api/viewSchemaToSimpleSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { normalizeFieldSchema, type ImplicitFieldSchema } from \"../schemaTypes.js\";\nimport type {\n\tSimpleArrayNodeSchema,\n\tSimpleFieldSchema,\n\tSimpleLeafNodeSchema,\n\tSimpleMapNodeSchema,\n\tSimpleNodeSchema,\n\tSimpleObjectFieldSchema,\n\tSimpleObjectNodeSchema,\n\tSimpleTreeSchema,\n} from \"../simpleSchema.js\";\nimport { NodeKind } from \"../core/index.js\";\nimport { ArrayNodeSchema, MapNodeSchema, ObjectNodeSchema } from \"../node-kinds/index.js\";\nimport { walkFieldSchema } from \"../walkFieldSchema.js\";\nimport { LeafNodeSchema } from \"../leafNodeSchema.js\";\n\n/**\n * Converts an {@link ImplicitFieldSchema} to a \"simple\" schema representation.\n *\n * @param schema - The schema to convert\n * @param copySchemaObjects - If true, TreeNodeSchema and FieldSchema are copied into plain JavaScript objects. Either way, custom metadata is referenced and not copied.\n *\n * @remarks\n * Given that the Schema types used in {@link ImplicitFieldSchema} already implement the {@link SimpleNodeSchema} interfaces, there are limited use-cases for this function.\n * One possible use-case is converting schema to a more serialization friendly format.\n * This format however is not JSON compatible due to use of Maps and Sets,\n * but it it does not rely on cyclic object references for handling recursive schema and instead uses the `definitions` map.\n *\n * @privateRemarks\n * TODO: once SimpleTreeSchema is stable, {@link TreeViewConfiguration} could implement {@link SimpleTreeSchema} directly.\n * That would provide the non-copying alternative that could expose the value type of the definitions map as {@link TreeNodeSchema}.\n */\nexport function toSimpleTreeSchema(\n\tschema: ImplicitFieldSchema,\n\tcopySchemaObjects: boolean,\n): SimpleTreeSchema {\n\tconst normalizedSchema = normalizeFieldSchema(schema);\n\tconst definitions = new Map<string, SimpleNodeSchema>();\n\twalkFieldSchema(normalizedSchema, {\n\t\tnode: (nodeSchema) => {\n\t\t\t// The set of node kinds is extensible, but the typing of SimpleNodeSchema is not, so we need to check that the schema is one of the known kinds.\n\t\t\tassert(\n\t\t\t\tnodeSchema instanceof ArrayNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof MapNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof LeafNodeSchema ||\n\t\t\t\t\tnodeSchema instanceof ObjectNodeSchema,\n\t\t\t\t0xb60 /* Invalid schema */,\n\t\t\t);\n\t\t\tconst outSchema = copySchemaObjects ? copySimpleNodeSchema(nodeSchema) : nodeSchema;\n\t\t\tdefinitions.set(nodeSchema.identifier, outSchema);\n\t\t},\n\t});\n\n\treturn {\n\t\troot: copySchemaObjects\n\t\t\t? ({\n\t\t\t\t\tallowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,\n\t\t\t\t\tkind: normalizedSchema.kind,\n\t\t\t\t\tmetadata: normalizedSchema.metadata,\n\t\t\t\t\tpersistedMetadata: normalizedSchema.persistedMetadata,\n\t\t\t\t} satisfies SimpleFieldSchema)\n\t\t\t: normalizedSchema,\n\t\tdefinitions,\n\t};\n}\n\n/**\n * Copies a {@link SimpleNodeSchema} into a new plain JavaScript object.\n *\n * @remarks Caches the result on the input schema for future calls.\n */\nfunction copySimpleNodeSchema(schema: SimpleNodeSchema): SimpleNodeSchema {\n\tconst kind = schema.kind;\n\tswitch (kind) {\n\t\tcase NodeKind.Leaf:\n\t\t\treturn copySimpleLeafSchema(schema);\n\t\tcase NodeKind.Array:\n\t\tcase NodeKind.Map:\n\t\t\treturn copySimpleMapOrArraySchema(schema);\n\t\tcase NodeKind.Object:\n\t\t\treturn copySimpleObjectSchema(schema);\n\t\tdefault:\n\t\t\tunreachableCase(kind);\n\t}\n}\n\nfunction copySimpleLeafSchema(schema: SimpleLeafNodeSchema): SimpleLeafNodeSchema {\n\treturn {\n\t\tkind: NodeKind.Leaf,\n\t\tleafKind: schema.leafKind,\n\t\tmetadata: schema.metadata,\n\t\tpersistedMetadata: schema.persistedMetadata,\n\t};\n}\n\nfunction copySimpleMapOrArraySchema(\n\tschema: SimpleMapNodeSchema | SimpleArrayNodeSchema,\n): SimpleMapNodeSchema | SimpleArrayNodeSchema {\n\treturn {\n\t\tkind: schema.kind,\n\t\tallowedTypesIdentifiers: schema.allowedTypesIdentifiers,\n\t\tmetadata: schema.metadata,\n\t\tpersistedMetadata: schema.persistedMetadata,\n\t};\n}\n\nfunction copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNodeSchema {\n\tconst fields: Map<string, SimpleObjectFieldSchema> = new Map();\n\tfor (const [propertyKey, field] of schema.fields) {\n\t\t// field already is a SimpleObjectFieldSchema, but copy the subset of the properties needed by this interface to get a clean simple object.\n\t\tfields.set(propertyKey, {\n\t\t\tkind: field.kind,\n\t\t\tallowedTypesIdentifiers: field.allowedTypesIdentifiers,\n\t\t\tmetadata: field.metadata,\n\t\t\tpersistedMetadata: field.persistedMetadata,\n\t\t\tstoredKey: field.storedKey,\n\t\t});\n\t}\n\n\treturn {\n\t\tkind: NodeKind.Object,\n\t\tfields,\n\t\tmetadata: schema.metadata,\n\t\tpersistedMetadata: schema.persistedMetadata,\n\t};\n}\n"]}
@@ -315,7 +315,7 @@ exports.tryDisposeTreeNode = tryDisposeTreeNode;
315
315
  */
316
316
  function getSimpleNodeSchemaFromInnerNode(innerNode) {
317
317
  const context = getSimpleContextFromInnerNode(innerNode);
318
- return context.schema.get(innerNode.schema) ?? (0, internal_1.fail)(0xb3f /* missing schema from context */);
318
+ return context.schema.get(innerNode.type) ?? (0, internal_1.fail)(0xb3f /* missing schema from context */);
319
319
  }
320
320
  exports.getSimpleNodeSchemaFromInnerNode = getSimpleNodeSchemaFromInnerNode;
321
321
  /**