@fluidframework/tree 2.70.0 → 2.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/CHANGELOG.md +84 -40
  2. package/api-report/tree.alpha.api.md +52 -22
  3. package/api-report/tree.beta.api.md +45 -0
  4. package/api-report/tree.legacy.beta.api.md +45 -0
  5. package/dist/alpha.d.ts +12 -7
  6. package/dist/api.js +1 -1
  7. package/dist/api.js.map +1 -1
  8. package/dist/beta.d.ts +8 -0
  9. package/dist/codec/codec.d.ts +16 -1
  10. package/dist/codec/codec.d.ts.map +1 -1
  11. package/dist/codec/codec.js +16 -3
  12. package/dist/codec/codec.js.map +1 -1
  13. package/dist/codec/discriminatedUnions.d.ts +1 -1
  14. package/dist/codec/discriminatedUnions.js +1 -1
  15. package/dist/codec/discriminatedUnions.js.map +1 -1
  16. package/dist/core/index.d.ts +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +2 -2
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/schema-stored/index.d.ts +1 -1
  21. package/dist/core/schema-stored/index.d.ts.map +1 -1
  22. package/dist/core/schema-stored/index.js +2 -2
  23. package/dist/core/schema-stored/index.js.map +1 -1
  24. package/dist/core/schema-stored/schema.d.ts +6 -6
  25. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  26. package/dist/core/schema-stored/schema.js +6 -7
  27. package/dist/core/schema-stored/schema.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  29. package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  30. package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  32. package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  33. package/dist/core/tree/detachedFieldIndexCodecV1.js +3 -2
  34. package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  35. package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  36. package/dist/core/tree/detachedFieldIndexCodecV2.js +3 -1
  37. package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  38. package/dist/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  39. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  40. package/dist/core/tree/detachedFieldIndexCodecs.js +29 -8
  41. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  42. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  43. package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  44. package/dist/core/tree/detachedFieldIndexFormatCommon.js +8 -1
  45. package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  46. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  47. package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  48. package/dist/core/tree/detachedFieldIndexFormatV1.js +3 -3
  49. package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  50. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  51. package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  52. package/dist/core/tree/detachedFieldIndexFormatV2.js +3 -3
  53. package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  54. package/dist/core/tree/index.d.ts +2 -1
  55. package/dist/core/tree/index.d.ts.map +1 -1
  56. package/dist/core/tree/index.js.map +1 -1
  57. package/dist/external-utilities/typeboxValidator.js +1 -1
  58. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  60. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -8
  62. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  66. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/format.js +9 -4
  68. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  70. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/index.js +1 -2
  72. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  74. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +1 -1
  75. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  76. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  77. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  78. package/dist/feature-libraries/chunked-forest/index.js +1 -2
  79. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  80. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  81. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  82. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +3 -21
  83. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  84. package/dist/feature-libraries/forest-summary/codec.d.ts +4 -5
  85. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  86. package/dist/feature-libraries/forest-summary/codec.js +15 -4
  87. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  88. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  89. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  90. package/dist/feature-libraries/forest-summary/format.d.ts +8 -1
  91. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  92. package/dist/feature-libraries/forest-summary/format.js +8 -3
  93. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  94. package/dist/feature-libraries/forest-summary/index.d.ts +2 -1
  95. package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
  96. package/dist/feature-libraries/forest-summary/index.js +3 -1
  97. package/dist/feature-libraries/forest-summary/index.js.map +1 -1
  98. package/dist/feature-libraries/index.d.ts +3 -3
  99. package/dist/feature-libraries/index.d.ts.map +1 -1
  100. package/dist/feature-libraries/index.js +2 -2
  101. package/dist/feature-libraries/index.js.map +1 -1
  102. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  103. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  104. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  105. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  106. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  107. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +5 -4
  108. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  109. package/dist/feature-libraries/schema-index/codec.d.ts +10 -10
  110. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  111. package/dist/feature-libraries/schema-index/codec.js +22 -18
  112. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  113. package/dist/feature-libraries/schema-index/formatV1.d.ts +2 -2
  114. package/dist/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  115. package/dist/feature-libraries/schema-index/formatV1.js +1 -1
  116. package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
  117. package/dist/feature-libraries/schema-index/formatV2.d.ts +1 -2
  118. package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  119. package/dist/feature-libraries/schema-index/formatV2.js +1 -1
  120. package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
  121. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  122. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  123. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  124. package/dist/index.d.ts +2 -2
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +6 -2
  127. package/dist/index.js.map +1 -1
  128. package/dist/legacy.d.ts +8 -0
  129. package/dist/packageVersion.d.ts +1 -1
  130. package/dist/packageVersion.js +1 -1
  131. package/dist/packageVersion.js.map +1 -1
  132. package/dist/shared-tree/independentView.d.ts +75 -6
  133. package/dist/shared-tree/independentView.d.ts.map +1 -1
  134. package/dist/shared-tree/independentView.js +116 -43
  135. package/dist/shared-tree/independentView.js.map +1 -1
  136. package/dist/shared-tree/index.d.ts +2 -1
  137. package/dist/shared-tree/index.d.ts.map +1 -1
  138. package/dist/shared-tree/index.js +6 -1
  139. package/dist/shared-tree/index.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +12 -16
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +105 -130
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  145. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeCodecs.js +12 -11
  147. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  148. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  149. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  150. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  151. package/dist/shared-tree/treeAlpha.d.ts +1 -1
  152. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  153. package/dist/shared-tree/treeAlpha.js +4 -2
  154. package/dist/shared-tree/treeAlpha.js.map +1 -1
  155. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  156. package/dist/shared-tree/treeCheckout.js +1 -3
  157. package/dist/shared-tree/treeCheckout.js.map +1 -1
  158. package/dist/shared-tree-core/editManagerCodecs.d.ts +19 -6
  159. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  160. package/dist/shared-tree-core/editManagerCodecs.js +35 -17
  161. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  162. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  163. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  164. package/dist/shared-tree-core/editManagerFormatCommons.js +43 -1
  165. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  166. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  167. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  168. package/dist/shared-tree-core/editManagerFormatV1toV4.js +4 -4
  169. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  170. package/dist/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  171. package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  172. package/dist/shared-tree-core/editManagerFormatV5.js +1 -1
  173. package/dist/shared-tree-core/editManagerFormatV5.js.map +1 -1
  174. package/dist/shared-tree-core/index.d.ts +5 -3
  175. package/dist/shared-tree-core/index.d.ts.map +1 -1
  176. package/dist/shared-tree-core/index.js +11 -3
  177. package/dist/shared-tree-core/index.js.map +1 -1
  178. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  179. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  180. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  181. package/dist/shared-tree-core/messageCodecV5.d.ts +2 -1
  182. package/dist/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  183. package/dist/shared-tree-core/messageCodecV5.js.map +1 -1
  184. package/dist/shared-tree-core/messageCodecs.d.ts +19 -6
  185. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  186. package/dist/shared-tree-core/messageCodecs.js +38 -21
  187. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  188. package/dist/shared-tree-core/messageFormat.d.ts +50 -0
  189. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -0
  190. package/dist/shared-tree-core/messageFormat.js +51 -0
  191. package/dist/shared-tree-core/messageFormat.js.map +1 -0
  192. package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -8
  193. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  194. package/dist/shared-tree-core/sharedTreeCore.js +3 -3
  195. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  196. package/dist/simple-tree/api/discrepancies.d.ts +2 -2
  197. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  198. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  199. package/dist/simple-tree/api/incrementalAllowedTypes.js +1 -1
  200. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  201. package/dist/simple-tree/api/index.d.ts +3 -2
  202. package/dist/simple-tree/api/index.d.ts.map +1 -1
  203. package/dist/simple-tree/api/index.js +4 -1
  204. package/dist/simple-tree/api/index.js.map +1 -1
  205. package/dist/simple-tree/api/schemaFactory.d.ts +2 -2
  206. package/dist/simple-tree/api/schemaFactory.js +2 -2
  207. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  208. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  209. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  210. package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -52
  211. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  212. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  213. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  214. package/dist/simple-tree/api/schemaFactoryBeta.js +61 -7
  215. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  216. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  217. package/dist/simple-tree/api/schemaFactoryRecursive.js +1 -0
  218. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  219. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  220. package/dist/simple-tree/api/schemaFromSimple.js +15 -8
  221. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  222. package/dist/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  223. package/dist/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  224. package/dist/simple-tree/api/simpleSchemaCodec.js +292 -0
  225. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  226. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  227. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
  228. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  229. package/dist/simple-tree/api/storedSchema.d.ts +2 -2
  230. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  231. package/dist/simple-tree/api/storedSchema.js +8 -6
  232. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  233. package/dist/simple-tree/api/tree.d.ts +2 -2
  234. package/dist/simple-tree/api/tree.js.map +1 -1
  235. package/dist/simple-tree/api/typesUnsafe.d.ts +6 -6
  236. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  237. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
  238. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +71 -7
  240. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  241. package/dist/simple-tree/core/allowedTypes.d.ts +12 -7
  242. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  243. package/dist/simple-tree/core/allowedTypes.js +18 -5
  244. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  245. package/dist/simple-tree/core/treeNode.js +1 -1
  246. package/dist/simple-tree/core/treeNode.js.map +1 -1
  247. package/dist/simple-tree/fieldSchema.d.ts +2 -1
  248. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  249. package/dist/simple-tree/fieldSchema.js +10 -0
  250. package/dist/simple-tree/fieldSchema.js.map +1 -1
  251. package/dist/simple-tree/index.d.ts +3 -2
  252. package/dist/simple-tree/index.d.ts.map +1 -1
  253. package/dist/simple-tree/index.js +4 -0
  254. package/dist/simple-tree/index.js.map +1 -1
  255. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  256. package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -1
  257. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  258. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  259. package/dist/simple-tree/node-kinds/map/mapNode.js +7 -1
  260. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  261. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
  262. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  263. package/dist/simple-tree/node-kinds/object/objectNode.js +21 -8
  264. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  265. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  266. package/dist/simple-tree/node-kinds/record/recordNode.js +8 -2
  267. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  268. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
  269. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  270. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  271. package/dist/simple-tree/simpleSchema.d.ts +30 -6
  272. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  273. package/dist/simple-tree/simpleSchema.js.map +1 -1
  274. package/dist/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  275. package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  276. package/dist/simple-tree/simpleSchemaFormatV1.js +115 -0
  277. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  278. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  279. package/dist/simple-tree/toStoredSchema.js +6 -3
  280. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  281. package/dist/tableSchema.d.ts.map +1 -1
  282. package/dist/tableSchema.js +1 -1
  283. package/dist/tableSchema.js.map +1 -1
  284. package/dist/treeFactory.d.ts +3 -1
  285. package/dist/treeFactory.d.ts.map +1 -1
  286. package/dist/treeFactory.js +26 -2
  287. package/dist/treeFactory.js.map +1 -1
  288. package/dist/util/brand.d.ts +31 -2
  289. package/dist/util/brand.d.ts.map +1 -1
  290. package/dist/util/brand.js +28 -2
  291. package/dist/util/brand.js.map +1 -1
  292. package/dist/util/brandedMap.d.ts +3 -1
  293. package/dist/util/brandedMap.d.ts.map +1 -1
  294. package/dist/util/brandedMap.js.map +1 -1
  295. package/dist/util/index.d.ts +1 -1
  296. package/dist/util/index.d.ts.map +1 -1
  297. package/dist/util/index.js +3 -2
  298. package/dist/util/index.js.map +1 -1
  299. package/dist/util/referenceCounting.d.ts.map +1 -1
  300. package/dist/util/referenceCounting.js +1 -0
  301. package/dist/util/referenceCounting.js.map +1 -1
  302. package/lib/alpha.d.ts +12 -7
  303. package/lib/api.js +2 -2
  304. package/lib/api.js.map +1 -1
  305. package/lib/beta.d.ts +8 -0
  306. package/lib/codec/codec.d.ts +16 -1
  307. package/lib/codec/codec.d.ts.map +1 -1
  308. package/lib/codec/codec.js +16 -3
  309. package/lib/codec/codec.js.map +1 -1
  310. package/lib/codec/discriminatedUnions.d.ts +1 -1
  311. package/lib/codec/discriminatedUnions.js +1 -1
  312. package/lib/codec/discriminatedUnions.js.map +1 -1
  313. package/lib/core/index.d.ts +1 -1
  314. package/lib/core/index.d.ts.map +1 -1
  315. package/lib/core/index.js +1 -1
  316. package/lib/core/index.js.map +1 -1
  317. package/lib/core/schema-stored/index.d.ts +1 -1
  318. package/lib/core/schema-stored/index.d.ts.map +1 -1
  319. package/lib/core/schema-stored/index.js +1 -1
  320. package/lib/core/schema-stored/index.js.map +1 -1
  321. package/lib/core/schema-stored/schema.d.ts +6 -6
  322. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  323. package/lib/core/schema-stored/schema.js +6 -7
  324. package/lib/core/schema-stored/schema.js.map +1 -1
  325. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
  326. package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
  327. package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
  328. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
  329. package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
  330. package/lib/core/tree/detachedFieldIndexCodecV1.js +3 -2
  331. package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
  332. package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
  333. package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -2
  334. package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
  335. package/lib/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
  336. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  337. package/lib/core/tree/detachedFieldIndexCodecs.js +29 -8
  338. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  339. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
  340. package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
  341. package/lib/core/tree/detachedFieldIndexFormatCommon.js +7 -0
  342. package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
  343. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
  344. package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
  345. package/lib/core/tree/detachedFieldIndexFormatV1.js +3 -3
  346. package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
  347. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
  348. package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
  349. package/lib/core/tree/detachedFieldIndexFormatV2.js +3 -3
  350. package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
  351. package/lib/core/tree/index.d.ts +2 -1
  352. package/lib/core/tree/index.d.ts.map +1 -1
  353. package/lib/core/tree/index.js +1 -1
  354. package/lib/core/tree/index.js.map +1 -1
  355. package/lib/external-utilities/typeboxValidator.js +1 -1
  356. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  357. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
  358. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  359. package/lib/feature-libraries/chunked-forest/codec/codecs.js +13 -8
  360. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  361. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
  362. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  363. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
  364. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  365. package/lib/feature-libraries/chunked-forest/codec/format.js +8 -3
  366. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  367. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  368. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  369. package/lib/feature-libraries/chunked-forest/codec/index.js +2 -2
  370. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  371. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  372. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
  373. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  374. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  375. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  376. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  377. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  378. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
  379. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  380. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +2 -20
  381. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  382. package/lib/feature-libraries/forest-summary/codec.d.ts +4 -5
  383. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  384. package/lib/feature-libraries/forest-summary/codec.js +16 -5
  385. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  386. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  387. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  388. package/lib/feature-libraries/forest-summary/format.d.ts +8 -1
  389. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  390. package/lib/feature-libraries/forest-summary/format.js +7 -2
  391. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  392. package/lib/feature-libraries/forest-summary/index.d.ts +2 -1
  393. package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
  394. package/lib/feature-libraries/forest-summary/index.js +1 -0
  395. package/lib/feature-libraries/forest-summary/index.js.map +1 -1
  396. package/lib/feature-libraries/index.d.ts +3 -3
  397. package/lib/feature-libraries/index.d.ts.map +1 -1
  398. package/lib/feature-libraries/index.js +2 -2
  399. package/lib/feature-libraries/index.js.map +1 -1
  400. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  401. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  402. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  403. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
  404. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  405. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +6 -5
  406. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  407. package/lib/feature-libraries/schema-index/codec.d.ts +10 -10
  408. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  409. package/lib/feature-libraries/schema-index/codec.js +24 -20
  410. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  411. package/lib/feature-libraries/schema-index/formatV1.d.ts +2 -2
  412. package/lib/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
  413. package/lib/feature-libraries/schema-index/formatV1.js +2 -2
  414. package/lib/feature-libraries/schema-index/formatV1.js.map +1 -1
  415. package/lib/feature-libraries/schema-index/formatV2.d.ts +1 -2
  416. package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
  417. package/lib/feature-libraries/schema-index/formatV2.js +2 -2
  418. package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
  419. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  420. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  421. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  422. package/lib/index.d.ts +2 -2
  423. package/lib/index.d.ts.map +1 -1
  424. package/lib/index.js +2 -2
  425. package/lib/index.js.map +1 -1
  426. package/lib/legacy.d.ts +8 -0
  427. package/lib/packageVersion.d.ts +1 -1
  428. package/lib/packageVersion.js +1 -1
  429. package/lib/packageVersion.js.map +1 -1
  430. package/lib/shared-tree/independentView.d.ts +75 -6
  431. package/lib/shared-tree/independentView.d.ts.map +1 -1
  432. package/lib/shared-tree/independentView.js +111 -39
  433. package/lib/shared-tree/independentView.js.map +1 -1
  434. package/lib/shared-tree/index.d.ts +2 -1
  435. package/lib/shared-tree/index.d.ts.map +1 -1
  436. package/lib/shared-tree/index.js +2 -1
  437. package/lib/shared-tree/index.js.map +1 -1
  438. package/lib/shared-tree/sharedTree.d.ts +12 -16
  439. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  440. package/lib/shared-tree/sharedTree.js +108 -133
  441. package/lib/shared-tree/sharedTree.js.map +1 -1
  442. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
  443. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  444. package/lib/shared-tree/sharedTreeChangeCodecs.js +7 -6
  445. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  446. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  447. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  448. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  449. package/lib/shared-tree/treeAlpha.d.ts +1 -1
  450. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  451. package/lib/shared-tree/treeAlpha.js +5 -3
  452. package/lib/shared-tree/treeAlpha.js.map +1 -1
  453. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  454. package/lib/shared-tree/treeCheckout.js +1 -3
  455. package/lib/shared-tree/treeCheckout.js.map +1 -1
  456. package/lib/shared-tree-core/editManagerCodecs.d.ts +19 -6
  457. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  458. package/lib/shared-tree-core/editManagerCodecs.js +32 -16
  459. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  460. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
  461. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  462. package/lib/shared-tree-core/editManagerFormatCommons.js +42 -0
  463. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  464. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  465. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  466. package/lib/shared-tree-core/editManagerFormatV1toV4.js +5 -5
  467. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  468. package/lib/shared-tree-core/editManagerFormatV5.d.ts +2 -2
  469. package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
  470. package/lib/shared-tree-core/editManagerFormatV5.js +2 -2
  471. package/lib/shared-tree-core/editManagerFormatV5.js.map +1 -1
  472. package/lib/shared-tree-core/index.d.ts +5 -3
  473. package/lib/shared-tree-core/index.d.ts.map +1 -1
  474. package/lib/shared-tree-core/index.js +4 -2
  475. package/lib/shared-tree-core/index.js.map +1 -1
  476. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
  477. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  478. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  479. package/lib/shared-tree-core/messageCodecV5.d.ts +2 -1
  480. package/lib/shared-tree-core/messageCodecV5.d.ts.map +1 -1
  481. package/lib/shared-tree-core/messageCodecV5.js.map +1 -1
  482. package/lib/shared-tree-core/messageCodecs.d.ts +19 -6
  483. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  484. package/lib/shared-tree-core/messageCodecs.js +35 -20
  485. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  486. package/lib/shared-tree-core/messageFormat.d.ts +50 -0
  487. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -0
  488. package/lib/shared-tree-core/messageFormat.js +48 -0
  489. package/lib/shared-tree-core/messageFormat.js.map +1 -0
  490. package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -8
  491. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  492. package/lib/shared-tree-core/sharedTreeCore.js +3 -3
  493. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  494. package/lib/simple-tree/api/discrepancies.d.ts +2 -2
  495. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  496. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
  497. package/lib/simple-tree/api/incrementalAllowedTypes.js +1 -1
  498. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  499. package/lib/simple-tree/api/index.d.ts +3 -2
  500. package/lib/simple-tree/api/index.d.ts.map +1 -1
  501. package/lib/simple-tree/api/index.js +1 -0
  502. package/lib/simple-tree/api/index.js.map +1 -1
  503. package/lib/simple-tree/api/schemaFactory.d.ts +2 -2
  504. package/lib/simple-tree/api/schemaFactory.js +2 -2
  505. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  506. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
  507. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  508. package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -52
  509. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  510. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
  511. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  512. package/lib/simple-tree/api/schemaFactoryBeta.js +58 -4
  513. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  514. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  515. package/lib/simple-tree/api/schemaFactoryRecursive.js +1 -0
  516. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  517. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  518. package/lib/simple-tree/api/schemaFromSimple.js +15 -8
  519. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  520. package/lib/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
  521. package/lib/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
  522. package/lib/simple-tree/api/simpleSchemaCodec.js +264 -0
  523. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -0
  524. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  525. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
  526. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  527. package/lib/simple-tree/api/storedSchema.d.ts +2 -2
  528. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  529. package/lib/simple-tree/api/storedSchema.js +5 -3
  530. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  531. package/lib/simple-tree/api/tree.d.ts +2 -2
  532. package/lib/simple-tree/api/tree.js.map +1 -1
  533. package/lib/simple-tree/api/typesUnsafe.d.ts +6 -6
  534. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  535. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
  536. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  537. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +69 -7
  538. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  539. package/lib/simple-tree/core/allowedTypes.d.ts +12 -7
  540. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  541. package/lib/simple-tree/core/allowedTypes.js +19 -6
  542. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  543. package/lib/simple-tree/core/treeNode.js +1 -1
  544. package/lib/simple-tree/core/treeNode.js.map +1 -1
  545. package/lib/simple-tree/fieldSchema.d.ts +2 -1
  546. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  547. package/lib/simple-tree/fieldSchema.js +10 -0
  548. package/lib/simple-tree/fieldSchema.js.map +1 -1
  549. package/lib/simple-tree/index.d.ts +3 -2
  550. package/lib/simple-tree/index.d.ts.map +1 -1
  551. package/lib/simple-tree/index.js +1 -0
  552. package/lib/simple-tree/index.js.map +1 -1
  553. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  554. package/lib/simple-tree/node-kinds/array/arrayNode.js +9 -3
  555. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  556. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  557. package/lib/simple-tree/node-kinds/map/mapNode.js +9 -3
  558. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  559. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
  560. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  561. package/lib/simple-tree/node-kinds/object/objectNode.js +22 -9
  562. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  563. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  564. package/lib/simple-tree/node-kinds/record/recordNode.js +10 -4
  565. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  566. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
  567. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  568. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  569. package/lib/simple-tree/simpleSchema.d.ts +30 -6
  570. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  571. package/lib/simple-tree/simpleSchema.js.map +1 -1
  572. package/lib/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
  573. package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
  574. package/lib/simple-tree/simpleSchemaFormatV1.js +112 -0
  575. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -0
  576. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  577. package/lib/simple-tree/toStoredSchema.js +6 -3
  578. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  579. package/lib/tableSchema.d.ts.map +1 -1
  580. package/lib/tableSchema.js +1 -1
  581. package/lib/tableSchema.js.map +1 -1
  582. package/lib/treeFactory.d.ts +3 -1
  583. package/lib/treeFactory.d.ts.map +1 -1
  584. package/lib/treeFactory.js +23 -1
  585. package/lib/treeFactory.js.map +1 -1
  586. package/lib/util/brand.d.ts +31 -2
  587. package/lib/util/brand.d.ts.map +1 -1
  588. package/lib/util/brand.js +26 -1
  589. package/lib/util/brand.js.map +1 -1
  590. package/lib/util/brandedMap.d.ts +3 -1
  591. package/lib/util/brandedMap.d.ts.map +1 -1
  592. package/lib/util/brandedMap.js.map +1 -1
  593. package/lib/util/index.d.ts +1 -1
  594. package/lib/util/index.d.ts.map +1 -1
  595. package/lib/util/index.js +1 -1
  596. package/lib/util/index.js.map +1 -1
  597. package/lib/util/referenceCounting.d.ts.map +1 -1
  598. package/lib/util/referenceCounting.js +1 -0
  599. package/lib/util/referenceCounting.js.map +1 -1
  600. package/package.json +26 -26
  601. package/src/api.ts +2 -2
  602. package/src/codec/codec.ts +17 -3
  603. package/src/codec/discriminatedUnions.ts +1 -1
  604. package/src/core/index.ts +1 -2
  605. package/src/core/schema-stored/index.ts +1 -2
  606. package/src/core/schema-stored/schema.ts +10 -7
  607. package/src/core/tree/detachedFieldIndexCodecCommon.ts +2 -1
  608. package/src/core/tree/detachedFieldIndexCodecV1.ts +4 -2
  609. package/src/core/tree/detachedFieldIndexCodecV2.ts +4 -6
  610. package/src/core/tree/detachedFieldIndexCodecs.ts +33 -11
  611. package/src/core/tree/detachedFieldIndexFormatCommon.ts +17 -2
  612. package/src/core/tree/detachedFieldIndexFormatV1.ts +6 -4
  613. package/src/core/tree/detachedFieldIndexFormatV2.ts +6 -4
  614. package/src/core/tree/index.ts +2 -4
  615. package/src/external-utilities/typeboxValidator.ts +1 -1
  616. package/src/feature-libraries/chunked-forest/codec/codecs.ts +18 -13
  617. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +2 -2
  618. package/src/feature-libraries/chunked-forest/codec/format.ts +15 -4
  619. package/src/feature-libraries/chunked-forest/codec/index.ts +4 -2
  620. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -2
  621. package/src/feature-libraries/chunked-forest/index.ts +0 -1
  622. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -29
  623. package/src/feature-libraries/forest-summary/codec.ts +24 -9
  624. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -1
  625. package/src/feature-libraries/forest-summary/format.ts +12 -2
  626. package/src/feature-libraries/forest-summary/index.ts +2 -1
  627. package/src/feature-libraries/index.ts +1 -2
  628. package/src/feature-libraries/schema-edits/index.ts +0 -1
  629. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +16 -16
  630. package/src/feature-libraries/schema-index/codec.ts +34 -22
  631. package/src/feature-libraries/schema-index/formatV1.ts +2 -2
  632. package/src/feature-libraries/schema-index/formatV2.ts +2 -2
  633. package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -1
  634. package/src/index.ts +6 -1
  635. package/src/packageVersion.ts +1 -1
  636. package/src/shared-tree/independentView.ts +161 -75
  637. package/src/shared-tree/index.ts +4 -0
  638. package/src/shared-tree/sharedTree.ts +137 -175
  639. package/src/shared-tree/sharedTreeChangeCodecs.ts +15 -9
  640. package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
  641. package/src/shared-tree/treeAlpha.ts +6 -5
  642. package/src/shared-tree/treeCheckout.ts +1 -3
  643. package/src/shared-tree-core/editManagerCodecs.ts +56 -19
  644. package/src/shared-tree-core/editManagerFormatCommons.ts +47 -0
  645. package/src/shared-tree-core/editManagerFormatV1toV4.ts +10 -5
  646. package/src/shared-tree-core/editManagerFormatV5.ts +3 -3
  647. package/src/shared-tree-core/index.ts +11 -5
  648. package/src/shared-tree-core/messageCodecV1ToV4.ts +6 -1
  649. package/src/shared-tree-core/messageCodecV5.ts +2 -1
  650. package/src/shared-tree-core/messageCodecs.ts +60 -26
  651. package/src/shared-tree-core/messageFormat.ts +56 -0
  652. package/src/shared-tree-core/sharedTreeCore.ts +11 -13
  653. package/src/simple-tree/api/discrepancies.ts +2 -2
  654. package/src/simple-tree/api/incrementalAllowedTypes.ts +1 -1
  655. package/src/simple-tree/api/index.ts +6 -2
  656. package/src/simple-tree/api/schemaFactory.ts +2 -2
  657. package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -168
  658. package/src/simple-tree/api/schemaFactoryBeta.ts +180 -14
  659. package/src/simple-tree/api/schemaFactoryRecursive.ts +2 -0
  660. package/src/simple-tree/api/schemaFromSimple.ts +23 -17
  661. package/src/simple-tree/api/simpleSchemaCodec.ts +360 -0
  662. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +8 -2
  663. package/src/simple-tree/api/storedSchema.ts +8 -5
  664. package/src/simple-tree/api/tree.ts +2 -2
  665. package/src/simple-tree/api/typesUnsafe.ts +6 -6
  666. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +76 -7
  667. package/src/simple-tree/core/allowedTypes.ts +29 -16
  668. package/src/simple-tree/core/treeNode.ts +2 -2
  669. package/src/simple-tree/fieldSchema.ts +14 -1
  670. package/src/simple-tree/index.ts +6 -1
  671. package/src/simple-tree/node-kinds/array/arrayNode.ts +11 -2
  672. package/src/simple-tree/node-kinds/map/mapNode.ts +11 -2
  673. package/src/simple-tree/node-kinds/object/objectNode.ts +57 -21
  674. package/src/simple-tree/node-kinds/record/recordNode.ts +12 -3
  675. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +16 -0
  676. package/src/simple-tree/simpleSchema.ts +32 -6
  677. package/src/simple-tree/simpleSchemaFormatV1.ts +179 -0
  678. package/src/simple-tree/toStoredSchema.ts +12 -3
  679. package/src/tableSchema.ts +5 -2
  680. package/src/treeFactory.ts +33 -1
  681. package/src/util/brand.ts +40 -2
  682. package/src/util/brandedMap.ts +3 -1
  683. package/src/util/index.ts +1 -0
  684. package/src/util/referenceCounting.ts +1 -0
@@ -0,0 +1,360 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { objectToMap, type JsonCompatibleReadOnly } from "../../util/index.js";
7
+ import { unreachableCase, transformMapValues } from "@fluidframework/core-utils/internal";
8
+ import type {
9
+ SimpleAllowedTypeAttributes,
10
+ SimpleArrayNodeSchema,
11
+ SimpleFieldSchema,
12
+ SimpleLeafNodeSchema,
13
+ SimpleMapNodeSchema,
14
+ SimpleNodeSchema,
15
+ SimpleObjectFieldSchema,
16
+ SimpleObjectNodeSchema,
17
+ SimpleRecordNodeSchema,
18
+ SimpleTreeSchema,
19
+ } from "../simpleSchema.js";
20
+ import { NodeKind } from "../core/index.js";
21
+ import type { FieldKind } from "../fieldSchema.js";
22
+ import type { ValueSchema } from "../../core/index.js";
23
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
24
+ import * as Format from "../simpleSchemaFormatV1.js";
25
+ import {
26
+ DiscriminatedUnionDispatcher,
27
+ extractJsonValidator,
28
+ FormatValidatorNoOp,
29
+ type FormatValidator,
30
+ } from "../../codec/index.js";
31
+
32
+ /**
33
+ * Encodes a simple schema (view or stored) into a serializable format.
34
+ * @remarks The JSON-compatible schema returned from this method is only intended for use in snapshots/comparisons of schemas.
35
+ * It is not possible to reconstruct a full schema (including metadata and persistedMetadata) from the encoded format.
36
+ * @param treeSchema - The tree schema to convert.
37
+ * @returns A serializable representation of the schema.
38
+ *
39
+ * @alpha
40
+ */
41
+ export function encodeSimpleSchema(simpleSchema: SimpleTreeSchema): JsonCompatibleReadOnly {
42
+ // Convert types to serializable forms
43
+ const encodedDefinitions: Format.SimpleSchemaDefinitionsFormat = {};
44
+
45
+ for (const [identifier, schema] of simpleSchema.definitions) {
46
+ const encodedDefinition = encodeNodeSchema(schema);
47
+ encodedDefinitions[identifier] = encodedDefinition;
48
+ }
49
+
50
+ const encodedSchema: Format.SimpleTreeSchemaFormat = {
51
+ version: Format.SimpleSchemaFormatVersion.v1,
52
+ root: encodeField(simpleSchema.root),
53
+ definitions: encodedDefinitions,
54
+ };
55
+
56
+ return encodedSchema;
57
+ }
58
+
59
+ /**
60
+ * Decodes a JSON-compatible schema into a simple schema.
61
+ * @param encodedSchema - The encoded schema to decode.
62
+ * @param validator - The format validator to use to validate the encoded schema.
63
+ * @returns A decoded simple schema.
64
+ * @throws Will throw a usage error if the encoded schema is not in the expected format.
65
+ *
66
+ * @alpha
67
+ */
68
+ export function decodeSimpleSchema(
69
+ encodedSchema: JsonCompatibleReadOnly,
70
+ validator?: FormatValidator,
71
+ ): SimpleTreeSchema {
72
+ const effectiveValidator = validator ?? FormatValidatorNoOp;
73
+ const compiledValidator = extractJsonValidator(effectiveValidator).compile(
74
+ Format.SimpleTreeSchemaFormat,
75
+ );
76
+ if (!compiledValidator.check(encodedSchema)) {
77
+ throw new UsageError(
78
+ "The provided simple schema is not valid according to the schema format.",
79
+ );
80
+ }
81
+
82
+ return {
83
+ root: decodeSimpleFieldSchema(encodedSchema.root),
84
+ definitions: new Map(
85
+ transformMapValues(objectToMap(encodedSchema.definitions), (value, key) => {
86
+ return decodeNodeSchema(value);
87
+ }),
88
+ ),
89
+ };
90
+ }
91
+
92
+ /**
93
+ * Encodes a node schema to a serializable object.
94
+ * @param schema - The node schema to convert.
95
+ * @returns A serializable representation of the node schema.
96
+ */
97
+ function encodeNodeSchema(schema: SimpleNodeSchema): Format.SimpleNodeSchemaUnionFormat {
98
+ const kind = schema.kind;
99
+ switch (kind) {
100
+ case NodeKind.Leaf:
101
+ return { leaf: encodeLeafNode(schema) };
102
+ case NodeKind.Array:
103
+ return { array: encodeContainerNode(schema) };
104
+ case NodeKind.Map:
105
+ return { map: encodeContainerNode(schema) };
106
+ case NodeKind.Record:
107
+ return { record: encodeContainerNode(schema) };
108
+ case NodeKind.Object:
109
+ return { object: encodeObjectNode(schema) };
110
+ default: {
111
+ unreachableCase(kind);
112
+ }
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Encodes a leaf node schema to a serializable object.
118
+ * @param schema - The leaf node schema to convert.
119
+ * @returns A serializable representation of the leaf node schema.
120
+ */
121
+ function encodeLeafNode(schema: SimpleLeafNodeSchema): Format.SimpleLeafNodeSchemaFormat {
122
+ return {
123
+ kind: schema.kind,
124
+ leafKind: schema.leafKind,
125
+ };
126
+ }
127
+
128
+ /**
129
+ * Encodes a container node schema (a simple schema that is a Map, Array, or Record) to a serializable object.
130
+ * @param schema - The container node schema to convert.
131
+ * @returns A serializable representation of the container node schema. Includes the `kind` for disambiguation between different
132
+ * container kinds.
133
+ */
134
+ function encodeContainerNode(
135
+ schema: SimpleArrayNodeSchema | SimpleMapNodeSchema | SimpleRecordNodeSchema,
136
+ ):
137
+ | Format.SimpleArrayNodeSchemaFormat
138
+ | Format.SimpleMapNodeSchemaFormat
139
+ | Format.SimpleRecordNodeSchemaFormat {
140
+ return {
141
+ kind: schema.kind,
142
+ simpleAllowedTypes: encodeSimpleAllowedTypes(schema.simpleAllowedTypes),
143
+ };
144
+ }
145
+
146
+ /**
147
+ * Encodes a simple allowed types map to a serializable object. Needed because JSON serialization does not support Maps.
148
+ * @param simpleAllowedTypes - The simple allowed types map to convert.
149
+ * @returns A serializable representation of the simple allowed types.
150
+ */
151
+ function encodeSimpleAllowedTypes(
152
+ simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>,
153
+ ): Format.SimpleAllowedTypesFormat {
154
+ const encodedAllowedTypes: Format.SimpleAllowedTypesFormat = {};
155
+ for (const [identifier, attributes] of simpleAllowedTypes) {
156
+ encodedAllowedTypes[identifier] = {
157
+ isStaged: attributes.isStaged,
158
+ };
159
+ }
160
+ return encodedAllowedTypes;
161
+ }
162
+
163
+ /**
164
+ * Encodes an object node schema to a serializable object.
165
+ * @param schema - The object node schema to convert.
166
+ * @returns A serializable representation of the object node schema.
167
+ */
168
+ function encodeObjectNode(
169
+ schema: SimpleObjectNodeSchema,
170
+ ): Format.SimpleObjectNodeSchemaFormat {
171
+ const encodedFields: Format.SimpleObjectFieldSchemasFormat = {};
172
+ for (const [fieldKey, fieldSchema] of schema.fields) {
173
+ encodedFields[fieldKey] = encodeObjectField(fieldSchema);
174
+ }
175
+
176
+ return {
177
+ kind: schema.kind,
178
+ fields: encodedFields,
179
+ allowUnknownOptionalFields: schema.allowUnknownOptionalFields,
180
+ };
181
+ }
182
+
183
+ /**
184
+ * Encodes an object field schema to a serializable object.
185
+ * @param fieldSchema - The object field schema to convert.
186
+ * @returns A serializable representation of the object field schema.
187
+ */
188
+ function encodeObjectField(
189
+ fieldSchema: SimpleObjectFieldSchema,
190
+ ): Format.SimpleObjectFieldSchemaFormat {
191
+ const encodedField = encodeField(fieldSchema);
192
+ return { ...encodedField, storedKey: fieldSchema.storedKey };
193
+ }
194
+
195
+ /**
196
+ * Encodes a field schema to a serializable object.
197
+ * @param fieldSchema - The field schema to convert.
198
+ * @returns A serializable representation of the field schema.
199
+ */
200
+ function encodeField(fieldSchema: SimpleFieldSchema): Format.SimpleFieldSchemaFormat {
201
+ return {
202
+ kind: fieldSchema.kind,
203
+ simpleAllowedTypes: encodeSimpleAllowedTypes(fieldSchema.simpleAllowedTypes),
204
+ };
205
+ }
206
+
207
+ const decodeNodeSchemaDispatcher: DiscriminatedUnionDispatcher<
208
+ Format.SimpleNodeSchemaUnionFormat,
209
+ [],
210
+ | SimpleLeafNodeSchema
211
+ | SimpleArrayNodeSchema
212
+ | SimpleMapNodeSchema
213
+ | SimpleRecordNodeSchema
214
+ | SimpleObjectNodeSchema
215
+ > = new DiscriminatedUnionDispatcher({
216
+ leaf: decodeLeafNode,
217
+ array: decodeContainerNode,
218
+ map: decodeContainerNode,
219
+ record: decodeContainerNode,
220
+ object: decodeObjectNode,
221
+ });
222
+
223
+ /**
224
+ * Decodes a node schema from a JSON-compatible object.
225
+ * @param encodedNodeSchema - The encoded node schema to decode.
226
+ * @returns The decoded node schema.
227
+ */
228
+ function decodeNodeSchema(
229
+ encodedNodeSchema: Format.SimpleNodeSchemaUnionFormat,
230
+ ):
231
+ | SimpleLeafNodeSchema
232
+ | SimpleArrayNodeSchema
233
+ | SimpleMapNodeSchema
234
+ | SimpleRecordNodeSchema
235
+ | SimpleObjectNodeSchema {
236
+ return decodeNodeSchemaDispatcher.dispatch(encodedNodeSchema);
237
+ }
238
+
239
+ /**
240
+ * Decodes a container node schema (array, map, record) from a JSON-compatible object.
241
+ * @param encodedContainerSchema - The encoded schema to decode.
242
+ * @returns The decoded container node schema.
243
+ */
244
+ function decodeContainerNode(
245
+ encodedContainerSchema:
246
+ | Format.SimpleArrayNodeSchemaFormat
247
+ | Format.SimpleMapNodeSchemaFormat
248
+ | Format.SimpleRecordNodeSchemaFormat,
249
+ ): SimpleArrayNodeSchema | SimpleMapNodeSchema | SimpleRecordNodeSchema {
250
+ return {
251
+ kind: encodedContainerSchema.kind as NodeKind.Array | NodeKind.Map | NodeKind.Record,
252
+ simpleAllowedTypes: decodeSimpleAllowedTypes(encodedContainerSchema.simpleAllowedTypes),
253
+ // We cannot encode persistedMetadata or metadata, so we explicitly set them to empty values.
254
+ persistedMetadata: undefined,
255
+ metadata: {},
256
+ };
257
+ }
258
+
259
+ /**
260
+ * Decodes a leaf node schema from a JSON-compatible object.
261
+ * @param encodedLeafSchema - The encoded leaf node schema.
262
+ * @returns The decoded leaf node schema.
263
+ */
264
+ function decodeLeafNode(
265
+ encodedLeafSchema: Format.SimpleLeafNodeSchemaFormat,
266
+ ): SimpleLeafNodeSchema {
267
+ return {
268
+ kind: NodeKind.Leaf,
269
+ leafKind: encodedLeafSchema.leafKind as ValueSchema,
270
+ // We cannot encode persistedMetadata or metadata, so we explicitly set them to empty values.
271
+ persistedMetadata: undefined,
272
+ metadata: {},
273
+ };
274
+ }
275
+
276
+ /**
277
+ * Decodes a object node schema from a JSON-compatible object.
278
+ * @param encodedObjectSchema - The encoded object node schema.
279
+ * @returns The decoded object node schema.
280
+ */
281
+ function decodeObjectNode(
282
+ encodedObjectSchema: Format.SimpleObjectNodeSchemaFormat,
283
+ ): SimpleObjectNodeSchema {
284
+ return {
285
+ kind: NodeKind.Object,
286
+ fields: decodeObjectFields(encodedObjectSchema.fields),
287
+ // It is possible for allowUnknownOptionalFields to be undefined. This happens when serializing a Simple Schema derived
288
+ // from a stored schema.
289
+ allowUnknownOptionalFields: encodedObjectSchema.allowUnknownOptionalFields,
290
+ // We cannot encode persistedMetadata or metadata, so we explicitly set them to empty values when decoding.
291
+ persistedMetadata: undefined,
292
+ metadata: {},
293
+ };
294
+ }
295
+
296
+ /**
297
+ * Decodes a map of object fields from a JSON-compatible object.
298
+ * @param encodedFields - The encoded fields.
299
+ * @returns A map of the decoded object fields.
300
+ */
301
+ function decodeObjectFields(
302
+ encodedFields: Format.SimpleObjectFieldSchemasFormat,
303
+ ): ReadonlyMap<string, SimpleObjectFieldSchema> {
304
+ const fields = new Map<string, SimpleObjectFieldSchema>();
305
+ for (const [fieldKey, fieldSchema] of Object.entries(encodedFields)) {
306
+ fields.set(fieldKey, decodeObjectField(fieldSchema));
307
+ }
308
+ return fields;
309
+ }
310
+
311
+ /**
312
+ * Decodes a {@link SimpleObjectFieldSchema} from a JSON-compatible object.
313
+ * @param encodedField - The encoded field schema.
314
+ * @returns The decoded simple object field schema.
315
+ */
316
+ function decodeObjectField(
317
+ encodedField: Format.SimpleObjectFieldSchemaFormat,
318
+ ): SimpleObjectFieldSchema {
319
+ const baseField = decodeSimpleFieldSchema(encodedField);
320
+ return {
321
+ ...baseField,
322
+ storedKey: encodedField.storedKey,
323
+ };
324
+ }
325
+
326
+ /**
327
+ * Decodes a {@link SimpleFieldSchema} from a JSON-compatible object.
328
+ * @param encodedField - The encoded field schema.
329
+ * @returns The decoded simple field schema.
330
+ */
331
+ function decodeSimpleFieldSchema(
332
+ encodedField: Format.SimpleFieldSchemaFormat,
333
+ ): SimpleFieldSchema {
334
+ return {
335
+ kind: encodedField.kind as FieldKind,
336
+ simpleAllowedTypes: decodeSimpleAllowedTypes(encodedField.simpleAllowedTypes),
337
+ // We cannot encode persistedMetadata or metadata, so we explicitly set them to empty values when decoding.
338
+ persistedMetadata: undefined,
339
+ metadata: {},
340
+ };
341
+ }
342
+
343
+ /**
344
+ * Decodes a simple allowed types map from a JSON-compatible object.
345
+ * @param encodedAllowedTypes - The encoded simple allowed types.
346
+ * @returns A map of the decoded simple allowed types.
347
+ */
348
+ function decodeSimpleAllowedTypes(
349
+ encodedAllowedTypes: Format.SimpleAllowedTypesFormat,
350
+ ): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
351
+ const untypedMap = objectToMap(encodedAllowedTypes);
352
+
353
+ const simpleAllowedTypes = transformMapValues(untypedMap, (value) => {
354
+ return {
355
+ isStaged: value.isStaged,
356
+ } satisfies SimpleAllowedTypeAttributes;
357
+ });
358
+
359
+ return simpleAllowedTypes;
360
+ }
@@ -107,7 +107,10 @@ function convertNodeSchema(
107
107
 
108
108
  function convertArrayNodeSchema(schema: SimpleArrayNodeSchema): JsonArrayNodeSchema {
109
109
  const allowedTypes: JsonSchemaRef[] = [];
110
- schema.allowedTypesIdentifiers.forEach((type) => {
110
+ const allowedTypesIdentifiers: ReadonlySet<string> = new Set(
111
+ schema.simpleAllowedTypes.keys(),
112
+ );
113
+ allowedTypesIdentifiers.forEach((type) => {
111
114
  allowedTypes.push(createSchemaRef(type));
112
115
  });
113
116
 
@@ -206,7 +209,10 @@ function convertRecordLikeNodeSchema(
206
209
  schema: SimpleRecordNodeSchema | SimpleMapNodeSchema,
207
210
  ): JsonMapNodeSchema | JsonRecordNodeSchema {
208
211
  const allowedTypes: JsonSchemaRef[] = [];
209
- schema.allowedTypesIdentifiers.forEach((type) => {
212
+ const allowedTypesIdentifiers: ReadonlySet<string> = new Set(
213
+ schema.simpleAllowedTypes.keys(),
214
+ );
215
+ allowedTypesIdentifiers.forEach((type) => {
210
216
  allowedTypes.push(createSchemaRef(type));
211
217
  });
212
218
 
@@ -4,15 +4,15 @@
4
4
  */
5
5
 
6
6
  import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
7
- import type { ICodecOptions } from "../../codec/index.js";
8
- import { SchemaVersion } from "../../core/index.js";
7
+ import { FluidClientVersion, type ICodecOptions } from "../../codec/index.js";
8
+ import { SchemaFormatVersion } from "../../core/index.js";
9
9
  import { encodeTreeSchema, makeSchemaCodec } from "../../feature-libraries/index.js";
10
10
  import {
11
11
  clientVersionToSchemaVersion,
12
12
  type FormatV1,
13
- // eslint-disable-next-line import/no-internal-modules
13
+ // eslint-disable-next-line import-x/no-internal-modules
14
14
  } from "../../feature-libraries/schema-index/index.js";
15
- import type { JsonCompatible } from "../../util/index.js";
15
+ import { brand, type JsonCompatible } from "../../util/index.js";
16
16
  import type { SchemaUpgrade } from "../core/index.js";
17
17
  import { normalizeFieldSchema, type ImplicitFieldSchema } from "../fieldSchema.js";
18
18
  import { toStoredSchema } from "../toStoredSchema.js";
@@ -100,7 +100,10 @@ export function comparePersistedSchema(
100
100
  ): Omit<SchemaCompatibilityStatus, "canInitialize"> {
101
101
  // Any version can be passed down to makeSchemaCodec here.
102
102
  // 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`.
103
- const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
103
+ const schemaCodec = makeSchemaCodec(
104
+ { ...options, minVersionForCollab: FluidClientVersion.v2_0 },
105
+ brand(SchemaFormatVersion.v1),
106
+ );
104
107
  const stored = schemaCodec.decode(persisted as FormatV1);
105
108
  const config = new TreeViewConfigurationAlpha({
106
109
  schema: normalizeFieldSchema(view),
@@ -431,7 +431,7 @@ export interface SchemaCompatibilityStatus {
431
431
  *
432
432
  * Note that other content in the stored schema that does not impact document compatibility, like {@link NodeSchemaOptionsAlpha.persistedMetadata}, does not affect this field.
433
433
  *
434
- * For the computation of this equivalence, {@link SchemaStaticsAlpha.staged | staged} schemas are not included.
434
+ * For the computation of this equivalence, {@link SchemaStaticsBeta.staged | staged} schemas are not included.
435
435
  * If there are any unknown optional fields, even if allowed by {@link ObjectSchemaOptions.allowUnknownOptionalFields}, `isEquivalent` will be false.
436
436
  */
437
437
  readonly isEquivalent: boolean;
@@ -445,7 +445,7 @@ export interface SchemaCompatibilityStatus {
445
445
  *
446
446
  * - An object node with {@link ObjectSchemaOptions.allowUnknownOptionalFields} to set to true that has additional optional fields in the stored schema beyond those mentioned in its view schema.
447
447
  *
448
- * - An additional type allowed at a location in the stored schema where it is {@link SchemaStaticsAlpha.staged | staged} in the view schema.
448
+ * - An additional type allowed at a location in the stored schema where it is {@link SchemaStaticsBeta.staged | staged} in the view schema.
449
449
  *
450
450
  * In these cases `canUpgrade` and `isEquivalent` will be false.
451
451
  *
@@ -551,7 +551,7 @@ export interface TreeRecordNodeUnsafe<
551
551
  * @remarks
552
552
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
553
553
  * @sealed
554
- * @alpha
554
+ * @beta
555
555
  * @system
556
556
  */
557
557
  export type UnannotateAllowedTypeUnsafe<
@@ -564,7 +564,7 @@ export type UnannotateAllowedTypeUnsafe<
564
564
  * {@link Unenforced} version of {@link AnnotatedAllowedType}.
565
565
  * @remarks
566
566
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
567
- * @system @sealed @alpha
567
+ * @system @sealed @beta
568
568
  */
569
569
  export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>>
570
570
  extends AnnotatedAllowedType<T> {}
@@ -573,7 +573,7 @@ export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSche
573
573
  * {@link Unenforced} version of {@link AnnotatedAllowedTypes}.
574
574
  * @remarks
575
575
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
576
- * @system @sealed @alpha
576
+ * @system @sealed @beta
577
577
  */
578
578
  export interface AnnotatedAllowedTypesUnsafe
579
579
  extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {}
@@ -592,7 +592,7 @@ export type AllowedTypesFullUnsafe<
592
592
  * {@link Unenforced} version of {@link AllowedTypesFullFromMixed}.
593
593
  * @remarks
594
594
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
595
- * @system @sealed @alpha
595
+ * @system @sealed @beta
596
596
  */
597
597
  export type AllowedTypesFullFromMixedUnsafe<
598
598
  T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
@@ -603,7 +603,7 @@ export type AllowedTypesFullFromMixedUnsafe<
603
603
  * {@link Unenforced} version of {@link UnannotateAllowedTypesList}.
604
604
  * @remarks
605
605
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
606
- * @system @sealed @alpha
606
+ * @system @sealed @beta
607
607
  */
608
608
  export type UnannotateAllowedTypesListUnsafe<
609
609
  T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
@@ -615,7 +615,7 @@ export type UnannotateAllowedTypesListUnsafe<
615
615
  * {@link Unenforced} version of {@link AnnotateAllowedTypesList}.
616
616
  * @remarks
617
617
  * Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
618
- * @system @sealed @alpha
618
+ * @system @sealed @beta
619
619
  */
620
620
  export type AnnotateAllowedTypesListUnsafe<
621
621
  T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
@@ -67,7 +67,7 @@ export function toSimpleTreeSchema(
67
67
  return {
68
68
  root: copySchemaObjects
69
69
  ? ({
70
- allowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,
70
+ simpleAllowedTypes: normalizedSchema.simpleAllowedTypes,
71
71
  kind: normalizedSchema.kind,
72
72
  metadata: normalizedSchema.metadata,
73
73
  persistedMetadata: normalizedSchema.persistedMetadata,
@@ -82,7 +82,7 @@ export function toSimpleTreeSchema(
82
82
  *
83
83
  * @remarks Caches the result on the input schema for future calls.
84
84
  */
85
- function copySimpleNodeSchema(schema: SimpleNodeSchema): SimpleNodeSchema {
85
+ export function copySimpleNodeSchema(schema: SimpleNodeSchema): SimpleNodeSchema {
86
86
  const kind = schema.kind;
87
87
  switch (kind) {
88
88
  case NodeKind.Leaf:
@@ -112,7 +112,7 @@ function copySimpleSchemaWithAllowedTypes(
112
112
  ): SimpleMapNodeSchema | SimpleArrayNodeSchema | SimpleRecordNodeSchema {
113
113
  return {
114
114
  kind: schema.kind,
115
- allowedTypesIdentifiers: schema.allowedTypesIdentifiers,
115
+ simpleAllowedTypes: schema.simpleAllowedTypes,
116
116
  metadata: schema.metadata,
117
117
  persistedMetadata: schema.persistedMetadata,
118
118
  };
@@ -122,19 +122,88 @@ function copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNod
122
122
  const fields: Map<string, SimpleObjectFieldSchema> = new Map();
123
123
  for (const [propertyKey, field] of schema.fields) {
124
124
  // field already is a SimpleObjectFieldSchema, but copy the subset of the properties needed by this interface to get a clean simple object.
125
- fields.set(propertyKey, {
125
+ const simpleField = {
126
126
  kind: field.kind,
127
- allowedTypesIdentifiers: field.allowedTypesIdentifiers,
127
+ simpleAllowedTypes: field.simpleAllowedTypes,
128
128
  metadata: field.metadata,
129
129
  persistedMetadata: field.persistedMetadata,
130
130
  storedKey: field.storedKey,
131
- });
131
+ };
132
+
133
+ fields.set(propertyKey, simpleField);
132
134
  }
133
135
 
134
- return {
136
+ const simpleObject = {
135
137
  kind: NodeKind.Object,
136
138
  fields,
137
139
  metadata: schema.metadata,
138
140
  persistedMetadata: schema.persistedMetadata,
141
+ allowUnknownOptionalFields: schema.allowUnknownOptionalFields,
142
+ } satisfies SimpleObjectNodeSchema;
143
+
144
+ return simpleObject;
145
+ }
146
+
147
+ /**
148
+ * Creates a copy of a SimpleTreeSchema without metadata fields. This is useful for comparing deserialized view schemas with in-memory schemas.
149
+ * metadata and persistedMetadata are not relevant for schema compatibility checks and are not serialized by the Simple Schema serializer.
150
+ * @see {@link simpleSchemaSerializer.ts} for the serialization logic.
151
+ *
152
+ * @param schema - The SimpleTreeSchema to remove fields from.
153
+ * @param fieldsToRemove - An object specifying which fields to remove.
154
+ * @returns A new SimpleTreeSchema without the specified fields.
155
+ */
156
+ export function copySimpleTreeSchemaWithoutMetadata(
157
+ schema: SimpleTreeSchema,
158
+ ): SimpleTreeSchema {
159
+ const definitions = new Map<string, SimpleNodeSchema>();
160
+
161
+ for (const [identifier, nodeSchema] of schema.definitions.entries()) {
162
+ const kind = nodeSchema.kind;
163
+ switch (kind) {
164
+ case NodeKind.Array:
165
+ case NodeKind.Map:
166
+ case NodeKind.Record:
167
+ case NodeKind.Leaf: {
168
+ const outputNodeSchema = {
169
+ ...nodeSchema,
170
+ metadata: {},
171
+ persistedMetadata: undefined,
172
+ };
173
+ definitions.set(identifier, outputNodeSchema);
174
+ break;
175
+ }
176
+ case NodeKind.Object: {
177
+ const outputFields = new Map<string, SimpleObjectFieldSchema>();
178
+ for (const [propertyKey, fieldSchema] of nodeSchema.fields.entries()) {
179
+ const outputField: SimpleObjectFieldSchema = {
180
+ ...fieldSchema,
181
+ metadata: {},
182
+ persistedMetadata: undefined,
183
+ };
184
+ outputFields.set(propertyKey, outputField);
185
+ }
186
+ const outputNodeSchema = {
187
+ ...nodeSchema,
188
+ metadata: {},
189
+ persistedMetadata: undefined,
190
+ fields: outputFields,
191
+ };
192
+ definitions.set(identifier, outputNodeSchema);
193
+ break;
194
+ }
195
+ default:
196
+ unreachableCase(kind);
197
+ }
198
+ }
199
+
200
+ return {
201
+ root: {
202
+ kind: schema.root.kind,
203
+ simpleAllowedTypes: schema.root.simpleAllowedTypes,
204
+ metadata: {},
205
+ persistedMetadata: undefined,
206
+ },
207
+ definitions,
139
208
  };
140
209
  }