@fluidframework/tree 2.72.0 → 2.73.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 (609) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/api-report/tree.alpha.api.md +17 -30
  3. package/dist/alpha.d.ts +3 -1
  4. package/dist/api.d.ts +6 -2
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js +2 -11
  7. package/dist/api.js.map +1 -1
  8. package/dist/codec/codec.d.ts +9 -2
  9. package/dist/codec/codec.d.ts.map +1 -1
  10. package/dist/codec/codec.js +9 -2
  11. package/dist/codec/codec.js.map +1 -1
  12. package/dist/codec/index.d.ts +1 -1
  13. package/dist/codec/index.d.ts.map +1 -1
  14. package/dist/codec/index.js +2 -1
  15. package/dist/codec/index.js.map +1 -1
  16. package/dist/codec/versioned/codec.d.ts +7 -2
  17. package/dist/codec/versioned/codec.d.ts.map +1 -1
  18. package/dist/codec/versioned/codec.js +24 -1
  19. package/dist/codec/versioned/codec.js.map +1 -1
  20. package/dist/codec/versioned/index.d.ts +1 -1
  21. package/dist/codec/versioned/index.d.ts.map +1 -1
  22. package/dist/codec/versioned/index.js +2 -1
  23. package/dist/codec/versioned/index.js.map +1 -1
  24. package/dist/core/schema-stored/schema.d.ts +12 -1
  25. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  26. package/dist/core/schema-stored/schema.js.map +1 -1
  27. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndexCodecs.js +5 -3
  29. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
  31. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  32. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +1 -0
  35. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  36. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
  37. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  39. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
  40. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/codec/codecs.js +31 -17
  42. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
  44. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
  46. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
  48. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/codec/format.js +7 -3
  50. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
  52. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
  54. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  56. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  58. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
  60. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +23 -6
  62. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
  64. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +20 -4
  66. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  68. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  70. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  71. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
  72. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  73. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +53 -55
  74. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  75. package/dist/feature-libraries/default-schema/index.d.ts +1 -3
  76. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  77. package/dist/feature-libraries/default-schema/index.js +2 -8
  78. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  79. package/dist/feature-libraries/forest-summary/format.d.ts +2 -2
  80. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  81. package/dist/feature-libraries/forest-summary/format.js +4 -2
  82. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  83. package/dist/feature-libraries/index.d.ts +4 -3
  84. package/dist/feature-libraries/index.d.ts.map +1 -1
  85. package/dist/feature-libraries/index.js +8 -7
  86. package/dist/feature-libraries/index.js.map +1 -1
  87. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  88. package/dist/feature-libraries/modular-schema/comparison.js +1 -2
  89. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  90. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
  91. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  92. package/dist/feature-libraries/modular-schema/fieldKind.js +29 -11
  93. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  94. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
  95. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
  96. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
  97. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
  98. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  99. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -2
  100. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  101. package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
  102. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  103. package/dist/feature-libraries/modular-schema/index.js +1 -3
  104. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  105. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
  106. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  107. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  108. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
  109. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  110. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
  111. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  112. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
  113. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  114. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  115. package/dist/feature-libraries/object-forest/objectForest.js +3 -2
  116. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  117. package/dist/feature-libraries/optional-field/index.d.ts +1 -1
  118. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  119. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  120. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  121. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
  122. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  123. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  124. package/dist/feature-libraries/schema-index/codec.js +5 -3
  125. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  126. package/dist/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
  127. package/dist/feature-libraries/schemaChecker.d.ts.map +1 -0
  128. package/dist/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
  129. package/dist/feature-libraries/schemaChecker.js.map +1 -0
  130. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  131. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
  132. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  133. package/dist/index.d.ts +2 -2
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +5 -3
  136. package/dist/index.js.map +1 -1
  137. package/dist/packageVersion.d.ts +1 -1
  138. package/dist/packageVersion.js +1 -1
  139. package/dist/packageVersion.js.map +1 -1
  140. package/dist/shared-tree/index.d.ts +1 -1
  141. package/dist/shared-tree/index.d.ts.map +1 -1
  142. package/dist/shared-tree/index.js +1 -2
  143. package/dist/shared-tree/index.js.map +1 -1
  144. package/dist/shared-tree/sharedTree.d.ts +0 -44
  145. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTree.js +1 -52
  147. package/dist/shared-tree/sharedTree.js.map +1 -1
  148. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  149. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  150. package/dist/shared-tree/sharedTreeChangeCodecs.js +0 -2
  151. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  152. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  153. package/dist/shared-tree-core/editManagerCodecs.js +12 -6
  154. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  155. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
  156. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  157. package/dist/shared-tree-core/editManagerFormatCommons.js +5 -8
  158. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  159. package/dist/shared-tree-core/index.d.ts +2 -2
  160. package/dist/shared-tree-core/index.d.ts.map +1 -1
  161. package/dist/shared-tree-core/index.js +3 -2
  162. package/dist/shared-tree-core/index.js.map +1 -1
  163. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  164. package/dist/shared-tree-core/messageCodecs.js +20 -9
  165. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  166. package/dist/shared-tree-core/messageFormat.d.ts +4 -6
  167. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  168. package/dist/shared-tree-core/messageFormat.js +9 -7
  169. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  170. package/dist/simple-tree/api/configuration.d.ts +2 -0
  171. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  172. package/dist/simple-tree/api/configuration.js +10 -0
  173. package/dist/simple-tree/api/configuration.js.map +1 -1
  174. package/dist/simple-tree/api/index.d.ts +1 -0
  175. package/dist/simple-tree/api/index.d.ts.map +1 -1
  176. package/dist/simple-tree/api/index.js +5 -1
  177. package/dist/simple-tree/api/index.js.map +1 -1
  178. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  179. package/dist/simple-tree/api/schemaFromSimple.js +7 -1
  180. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  181. package/dist/simple-tree/api/simpleSchemaCodec.js +4 -6
  182. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  183. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
  184. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
  185. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +128 -0
  186. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
  187. package/dist/simple-tree/api/tree.d.ts +1 -1
  188. package/dist/simple-tree/api/tree.js +1 -1
  189. package/dist/simple-tree/api/tree.js.map +1 -1
  190. package/dist/simple-tree/core/allowedTypes.js +1 -1
  191. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  192. package/dist/simple-tree/core/index.d.ts +3 -3
  193. package/dist/simple-tree/core/index.d.ts.map +1 -1
  194. package/dist/simple-tree/core/index.js +3 -1
  195. package/dist/simple-tree/core/index.js.map +1 -1
  196. package/dist/simple-tree/core/toStored.d.ts +12 -5
  197. package/dist/simple-tree/core/toStored.d.ts.map +1 -1
  198. package/dist/simple-tree/core/toStored.js +26 -10
  199. package/dist/simple-tree/core/toStored.js.map +1 -1
  200. package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -6
  201. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  202. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  203. package/dist/simple-tree/core/treeNodeValid.d.ts +1 -1
  204. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  205. package/dist/simple-tree/core/treeNodeValid.js +1 -2
  206. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  207. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  208. package/dist/simple-tree/fieldSchema.js +1 -8
  209. package/dist/simple-tree/fieldSchema.js.map +1 -1
  210. package/dist/simple-tree/index.d.ts +2 -2
  211. package/dist/simple-tree/index.d.ts.map +1 -1
  212. package/dist/simple-tree/index.js +9 -3
  213. package/dist/simple-tree/index.js.map +1 -1
  214. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  215. package/dist/simple-tree/leafNodeSchema.js +0 -1
  216. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  217. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  218. package/dist/simple-tree/node-kinds/array/arrayNode.js +13 -49
  219. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  220. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  221. package/dist/simple-tree/node-kinds/map/mapNode.js +1 -5
  222. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  223. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  224. package/dist/simple-tree/node-kinds/object/objectNode.js +2 -10
  225. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  226. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  227. package/dist/simple-tree/node-kinds/record/recordNode.js +1 -5
  228. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  229. package/dist/simple-tree/simpleSchema.d.ts +15 -3
  230. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  231. package/dist/simple-tree/simpleSchema.js.map +1 -1
  232. package/dist/simple-tree/toStoredSchema.d.ts +20 -8
  233. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  234. package/dist/simple-tree/toStoredSchema.js +27 -22
  235. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  236. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  237. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +18 -15
  238. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  239. package/dist/tableSchema.d.ts +22 -52
  240. package/dist/tableSchema.d.ts.map +1 -1
  241. package/dist/tableSchema.js +141 -277
  242. package/dist/tableSchema.js.map +1 -1
  243. package/dist/util/arrayUtilities.d.ts +45 -0
  244. package/dist/util/arrayUtilities.d.ts.map +1 -0
  245. package/dist/util/arrayUtilities.js +76 -0
  246. package/dist/util/arrayUtilities.js.map +1 -0
  247. package/dist/util/index.d.ts +1 -0
  248. package/dist/util/index.d.ts.map +1 -1
  249. package/dist/util/index.js +7 -2
  250. package/dist/util/index.js.map +1 -1
  251. package/lib/alpha.d.ts +3 -1
  252. package/lib/api.d.ts +6 -2
  253. package/lib/api.d.ts.map +1 -1
  254. package/lib/api.js +2 -13
  255. package/lib/api.js.map +1 -1
  256. package/lib/codec/codec.d.ts +9 -2
  257. package/lib/codec/codec.d.ts.map +1 -1
  258. package/lib/codec/codec.js +9 -2
  259. package/lib/codec/codec.js.map +1 -1
  260. package/lib/codec/index.d.ts +1 -1
  261. package/lib/codec/index.d.ts.map +1 -1
  262. package/lib/codec/index.js +1 -1
  263. package/lib/codec/index.js.map +1 -1
  264. package/lib/codec/versioned/codec.d.ts +7 -2
  265. package/lib/codec/versioned/codec.d.ts.map +1 -1
  266. package/lib/codec/versioned/codec.js +22 -0
  267. package/lib/codec/versioned/codec.js.map +1 -1
  268. package/lib/codec/versioned/index.d.ts +1 -1
  269. package/lib/codec/versioned/index.d.ts.map +1 -1
  270. package/lib/codec/versioned/index.js +1 -1
  271. package/lib/codec/versioned/index.js.map +1 -1
  272. package/lib/core/schema-stored/schema.d.ts +12 -1
  273. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  274. package/lib/core/schema-stored/schema.js.map +1 -1
  275. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  276. package/lib/core/tree/detachedFieldIndexCodecs.js +5 -3
  277. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  278. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
  279. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  280. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  281. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  282. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +2 -1
  283. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  284. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
  285. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  286. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  287. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
  288. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  289. package/lib/feature-libraries/chunked-forest/codec/codecs.js +34 -20
  290. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  291. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
  292. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  293. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
  294. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  295. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
  296. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  297. package/lib/feature-libraries/chunked-forest/codec/format.js +6 -2
  298. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  299. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
  300. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
  301. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
  302. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
  303. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  304. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  305. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  306. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  307. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
  308. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  309. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -6
  310. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  311. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
  312. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  313. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +17 -2
  314. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  315. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  316. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  317. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  318. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  319. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
  320. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  321. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -57
  322. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  323. package/lib/feature-libraries/default-schema/index.d.ts +1 -3
  324. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  325. package/lib/feature-libraries/default-schema/index.js +1 -3
  326. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  327. package/lib/feature-libraries/forest-summary/format.d.ts +2 -2
  328. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  329. package/lib/feature-libraries/forest-summary/format.js +4 -2
  330. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  331. package/lib/feature-libraries/index.d.ts +4 -3
  332. package/lib/feature-libraries/index.d.ts.map +1 -1
  333. package/lib/feature-libraries/index.js +4 -3
  334. package/lib/feature-libraries/index.js.map +1 -1
  335. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  336. package/lib/feature-libraries/modular-schema/comparison.js +1 -2
  337. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  338. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
  339. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  340. package/lib/feature-libraries/modular-schema/fieldKind.js +29 -11
  341. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  342. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
  343. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
  344. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
  345. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
  346. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  347. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -2
  348. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  349. package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
  350. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  351. package/lib/feature-libraries/modular-schema/index.js +0 -1
  352. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  353. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
  354. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  355. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  356. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
  357. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  358. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
  359. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  360. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
  361. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  362. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  363. package/lib/feature-libraries/object-forest/objectForest.js +2 -1
  364. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  365. package/lib/feature-libraries/optional-field/index.d.ts +1 -1
  366. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  367. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  368. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  369. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
  370. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  371. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  372. package/lib/feature-libraries/schema-index/codec.js +5 -3
  373. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  374. package/lib/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
  375. package/lib/feature-libraries/schemaChecker.d.ts.map +1 -0
  376. package/lib/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
  377. package/lib/feature-libraries/schemaChecker.js.map +1 -0
  378. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  379. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
  380. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  381. package/lib/index.d.ts +2 -2
  382. package/lib/index.d.ts.map +1 -1
  383. package/lib/index.js +2 -2
  384. package/lib/index.js.map +1 -1
  385. package/lib/packageVersion.d.ts +1 -1
  386. package/lib/packageVersion.js +1 -1
  387. package/lib/packageVersion.js.map +1 -1
  388. package/lib/shared-tree/index.d.ts +1 -1
  389. package/lib/shared-tree/index.d.ts.map +1 -1
  390. package/lib/shared-tree/index.js +1 -1
  391. package/lib/shared-tree/index.js.map +1 -1
  392. package/lib/shared-tree/sharedTree.d.ts +0 -44
  393. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  394. package/lib/shared-tree/sharedTree.js +0 -51
  395. package/lib/shared-tree/sharedTree.js.map +1 -1
  396. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  397. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  398. package/lib/shared-tree/sharedTreeChangeCodecs.js +0 -2
  399. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  400. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  401. package/lib/shared-tree-core/editManagerCodecs.js +13 -7
  402. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  403. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
  404. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  405. package/lib/shared-tree-core/editManagerFormatCommons.js +4 -7
  406. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  407. package/lib/shared-tree-core/index.d.ts +2 -2
  408. package/lib/shared-tree-core/index.d.ts.map +1 -1
  409. package/lib/shared-tree-core/index.js +2 -2
  410. package/lib/shared-tree-core/index.js.map +1 -1
  411. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  412. package/lib/shared-tree-core/messageCodecs.js +21 -10
  413. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  414. package/lib/shared-tree-core/messageFormat.d.ts +4 -6
  415. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  416. package/lib/shared-tree-core/messageFormat.js +8 -6
  417. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  418. package/lib/simple-tree/api/configuration.d.ts +2 -0
  419. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  420. package/lib/simple-tree/api/configuration.js +10 -0
  421. package/lib/simple-tree/api/configuration.js.map +1 -1
  422. package/lib/simple-tree/api/index.d.ts +1 -0
  423. package/lib/simple-tree/api/index.d.ts.map +1 -1
  424. package/lib/simple-tree/api/index.js +1 -0
  425. package/lib/simple-tree/api/index.js.map +1 -1
  426. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  427. package/lib/simple-tree/api/schemaFromSimple.js +8 -2
  428. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  429. package/lib/simple-tree/api/simpleSchemaCodec.js +5 -7
  430. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  431. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
  432. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
  433. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +122 -0
  434. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
  435. package/lib/simple-tree/api/tree.d.ts +1 -1
  436. package/lib/simple-tree/api/tree.js +1 -1
  437. package/lib/simple-tree/api/tree.js.map +1 -1
  438. package/lib/simple-tree/core/allowedTypes.js +1 -1
  439. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  440. package/lib/simple-tree/core/index.d.ts +3 -3
  441. package/lib/simple-tree/core/index.d.ts.map +1 -1
  442. package/lib/simple-tree/core/index.js +2 -2
  443. package/lib/simple-tree/core/index.js.map +1 -1
  444. package/lib/simple-tree/core/toStored.d.ts +12 -5
  445. package/lib/simple-tree/core/toStored.d.ts.map +1 -1
  446. package/lib/simple-tree/core/toStored.js +25 -9
  447. package/lib/simple-tree/core/toStored.js.map +1 -1
  448. package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -6
  449. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  450. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  451. package/lib/simple-tree/core/treeNodeValid.d.ts +1 -1
  452. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  453. package/lib/simple-tree/core/treeNodeValid.js +1 -2
  454. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  455. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  456. package/lib/simple-tree/fieldSchema.js +2 -9
  457. package/lib/simple-tree/fieldSchema.js.map +1 -1
  458. package/lib/simple-tree/index.d.ts +2 -2
  459. package/lib/simple-tree/index.d.ts.map +1 -1
  460. package/lib/simple-tree/index.js +2 -2
  461. package/lib/simple-tree/index.js.map +1 -1
  462. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  463. package/lib/simple-tree/leafNodeSchema.js +1 -2
  464. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  465. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  466. package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -51
  467. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  468. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  469. package/lib/simple-tree/node-kinds/map/mapNode.js +3 -7
  470. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  471. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  472. package/lib/simple-tree/node-kinds/object/objectNode.js +3 -11
  473. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  474. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  475. package/lib/simple-tree/node-kinds/record/recordNode.js +3 -7
  476. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  477. package/lib/simple-tree/simpleSchema.d.ts +15 -3
  478. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  479. package/lib/simple-tree/simpleSchema.js.map +1 -1
  480. package/lib/simple-tree/toStoredSchema.d.ts +20 -8
  481. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  482. package/lib/simple-tree/toStoredSchema.js +28 -24
  483. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  484. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  485. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +20 -17
  486. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  487. package/lib/tableSchema.d.ts +22 -52
  488. package/lib/tableSchema.d.ts.map +1 -1
  489. package/lib/tableSchema.js +143 -279
  490. package/lib/tableSchema.js.map +1 -1
  491. package/lib/util/arrayUtilities.d.ts +45 -0
  492. package/lib/util/arrayUtilities.d.ts.map +1 -0
  493. package/lib/util/arrayUtilities.js +69 -0
  494. package/lib/util/arrayUtilities.js.map +1 -0
  495. package/lib/util/index.d.ts +1 -0
  496. package/lib/util/index.d.ts.map +1 -1
  497. package/lib/util/index.js +1 -0
  498. package/lib/util/index.js.map +1 -1
  499. package/package.json +21 -21
  500. package/src/api.ts +22 -11
  501. package/src/codec/codec.ts +10 -2
  502. package/src/codec/index.ts +1 -0
  503. package/src/codec/versioned/codec.ts +40 -2
  504. package/src/codec/versioned/index.ts +1 -0
  505. package/src/core/schema-stored/schema.ts +12 -1
  506. package/src/core/tree/detachedFieldIndexCodecs.ts +10 -3
  507. package/src/feature-libraries/README.md +1 -1
  508. package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -3
  509. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -0
  510. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
  511. package/src/feature-libraries/chunked-forest/codec/codecs.ts +52 -19
  512. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +8 -3
  513. package/src/feature-libraries/chunked-forest/codec/format.ts +14 -4
  514. package/src/feature-libraries/chunked-forest/codec/formatGeneric.ts +7 -2
  515. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -4
  516. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +62 -9
  517. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +24 -2
  518. package/src/feature-libraries/chunked-forest/index.ts +1 -1
  519. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +86 -74
  520. package/src/feature-libraries/default-schema/index.ts +1 -9
  521. package/src/feature-libraries/forest-summary/format.ts +15 -9
  522. package/src/feature-libraries/index.ts +7 -5
  523. package/src/feature-libraries/modular-schema/comparison.ts +2 -3
  524. package/src/feature-libraries/modular-schema/fieldKind.ts +90 -13
  525. package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +2 -3
  526. package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -6
  527. package/src/feature-libraries/modular-schema/index.ts +0 -1
  528. package/src/feature-libraries/modular-schema/isNeverTree.ts +7 -8
  529. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +13 -13
  530. package/src/feature-libraries/object-forest/objectForest.ts +2 -6
  531. package/src/feature-libraries/optional-field/index.ts +1 -0
  532. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +1 -5
  533. package/src/feature-libraries/schema-index/codec.ts +10 -3
  534. package/src/feature-libraries/{default-schema/schemaChecker.ts → schemaChecker.ts} +4 -4
  535. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +0 -2
  536. package/src/index.ts +3 -1
  537. package/src/packageVersion.ts +1 -1
  538. package/src/shared-tree/index.ts +0 -1
  539. package/src/shared-tree/sharedTree.ts +0 -70
  540. package/src/shared-tree/sharedTreeChangeCodecs.ts +1 -6
  541. package/src/shared-tree-core/editManagerCodecs.ts +19 -7
  542. package/src/shared-tree-core/editManagerFormatCommons.ts +11 -12
  543. package/src/shared-tree-core/index.ts +6 -2
  544. package/src/shared-tree-core/messageCodecs.ts +32 -17
  545. package/src/shared-tree-core/messageFormat.ts +8 -6
  546. package/src/simple-tree/api/configuration.ts +17 -4
  547. package/src/simple-tree/api/index.ts +5 -0
  548. package/src/simple-tree/api/schemaFromSimple.ts +14 -6
  549. package/src/simple-tree/api/simpleSchemaCodec.ts +10 -9
  550. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +135 -0
  551. package/src/simple-tree/api/tree.ts +1 -1
  552. package/src/simple-tree/core/allowedTypes.ts +1 -1
  553. package/src/simple-tree/core/index.ts +3 -1
  554. package/src/simple-tree/core/toStored.ts +42 -18
  555. package/src/simple-tree/core/treeNodeSchema.ts +1 -7
  556. package/src/simple-tree/core/treeNodeValid.ts +0 -2
  557. package/src/simple-tree/fieldSchema.ts +2 -11
  558. package/src/simple-tree/index.ts +6 -1
  559. package/src/simple-tree/leafNodeSchema.ts +1 -2
  560. package/src/simple-tree/node-kinds/array/arrayNode.ts +26 -75
  561. package/src/simple-tree/node-kinds/map/mapNode.ts +1 -15
  562. package/src/simple-tree/node-kinds/object/objectNode.ts +2 -17
  563. package/src/simple-tree/node-kinds/record/recordNode.ts +1 -15
  564. package/src/simple-tree/simpleSchema.ts +16 -3
  565. package/src/simple-tree/toStoredSchema.ts +54 -38
  566. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +22 -17
  567. package/src/tableSchema.ts +110 -334
  568. package/src/util/arrayUtilities.ts +88 -0
  569. package/src/util/index.ts +6 -0
  570. package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
  571. package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
  572. package/dist/feature-libraries/default-schema/defaultSchema.js +0 -15
  573. package/dist/feature-libraries/default-schema/defaultSchema.js.map +0 -1
  574. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
  575. package/dist/feature-libraries/default-schema/schemaChecker.js.map +0 -1
  576. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
  577. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
  578. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -76
  579. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
  580. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
  581. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
  582. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -158
  583. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
  584. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
  585. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
  586. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -245
  587. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
  588. package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
  589. package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
  590. package/lib/feature-libraries/default-schema/defaultSchema.js +0 -12
  591. package/lib/feature-libraries/default-schema/defaultSchema.js.map +0 -1
  592. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
  593. package/lib/feature-libraries/default-schema/schemaChecker.js.map +0 -1
  594. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
  595. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
  596. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -71
  597. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
  598. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
  599. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
  600. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -154
  601. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
  602. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
  603. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
  604. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -241
  605. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
  606. package/src/feature-libraries/default-schema/defaultSchema.ts +0 -15
  607. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +0 -108
  608. package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +0 -208
  609. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +0 -344
@@ -8,7 +8,14 @@ import type {
8
8
  FieldKindData,
9
9
  Multiplicity,
10
10
  SchemaPolicy,
11
+ TreeFieldStoredSchema,
12
+ TreeStoredSchema,
13
+ TreeTypeSet,
11
14
  } from "../../core/index.js";
15
+ import type { MakeNominal } from "../../util/index.js";
16
+
17
+ import type { FieldChangeHandler, FieldEditor } from "./fieldChangeHandler.js";
18
+ import { isNeverField } from "./isNeverTree.js";
12
19
 
13
20
  /**
14
21
  * Functionality for FieldKinds that is stable,
@@ -22,26 +29,96 @@ import type {
22
29
  *
23
30
  * These policies include the data encoding, change encoding, change rebase and change application.
24
31
  *
25
- * @sealed * @privateRemarks
26
- * This being @sealed is for users of this package.
27
- * This package itself may provide implementations.
28
- * This pattern was picked instead of an interface since we do not have a convention for how to mark interfaces as only allowed to be implemented by the package declaring them,
29
- * and using a class also gets stronger (nominal) typing for objects which will be down cast.
32
+ * @privateRemarks
33
+ * Using a class gets stronger (nominal) typing for objects which will be down cast.
30
34
  */
31
- export abstract class FlexFieldKind<
32
- TName extends string = string,
35
+ export class FlexFieldKind<
36
+ // TODO: stronger typing
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ TEditor extends FieldEditor<any> = FieldEditor<any>,
39
+ TName extends FieldKindIdentifier = FieldKindIdentifier,
33
40
  TMultiplicity extends Multiplicity = Multiplicity,
34
41
  > implements FieldKindData
35
42
  {
43
+ protected _typeCheck!: MakeNominal;
44
+
36
45
  /**
37
- * @param identifier - Globally scoped identifier.
38
- * @param multiplicity - bound on the number of children that fields of this kind may have.
39
- * TODO: consider replacing with numeric upper and lower bounds.
46
+ * Change handling policy.
40
47
  */
41
- protected constructor(
42
- public readonly identifier: TName & FieldKindIdentifier,
48
+ // TODO: stronger typing
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ public readonly changeHandler: FieldChangeHandler<any, TEditor>;
51
+
52
+ public constructor(
53
+ public readonly identifier: TName,
43
54
  public readonly multiplicity: TMultiplicity,
44
- ) {}
55
+ // TODO: stronger typing
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ private readonly options: FieldKindOptions<FieldChangeHandler<any, TEditor>>,
58
+ ) {
59
+ this.changeHandler = options.changeHandler;
60
+ }
61
+
62
+ /**
63
+ * Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
64
+ * allowed by field made from `this` and `originalTypes`.
65
+ *
66
+ * TODO: clarify the relationship between this and FieldKindData, and issues with cyclic schema upgrades.
67
+ */
68
+ public allowsFieldSuperset(
69
+ policy: SchemaPolicy,
70
+ originalData: TreeStoredSchema,
71
+ originalTypes: TreeTypeSet,
72
+ superset: TreeFieldStoredSchema,
73
+ ): boolean {
74
+ if (
75
+ isNeverField(policy, originalData, {
76
+ kind: this.identifier,
77
+ types: originalTypes,
78
+ // Metadata is not used for this check.
79
+ persistedMetadata: undefined,
80
+ })
81
+ ) {
82
+ return true;
83
+ }
84
+ if (isNeverField(policy, originalData, superset)) {
85
+ return false;
86
+ }
87
+ return this.options.allowsTreeSupersetOf(originalTypes, superset);
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Additional options for {@link FlexFieldKind}.
93
+ *
94
+ * @remarks
95
+ * Puts the more confusing parameters into this object so they get explicit names to help with clarity.
96
+ */
97
+ export interface FieldKindOptions<TFieldChangeHandler> {
98
+ /**
99
+ * Change handling policy.
100
+ */
101
+ readonly changeHandler: TFieldChangeHandler;
102
+
103
+ /**
104
+ * Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
105
+ * allowed by field made from `this` and `originalTypes`.
106
+ * @remarks
107
+ * Used by {@link FlexFieldKind.allowsFieldSuperset}, which handles the `never` cases before calling this.
108
+ */
109
+ readonly allowsTreeSupersetOf: (
110
+ originalTypes: TreeTypeSet,
111
+ superset: TreeFieldStoredSchema,
112
+ ) => boolean;
113
+
114
+ /**
115
+ * Kinds (in addition to this) whose edits can be processed by changeHandler.
116
+ * If the kind of a field changes, and edits are rebased across that kind change,
117
+ * listing the other old kind here can prevent those edits from being conflicted and
118
+ * provide a chance to handle them.
119
+ */
120
+ // TODO: provide this and use it for improved support for rebasing changes across schema upgrades.
121
+ // readonly handlesEditsFrom: ReadonlySet<FieldKindIdentifier>;
45
122
  }
46
123
 
47
124
  /**
@@ -4,14 +4,13 @@
4
4
  */
5
5
 
6
6
  import type { FieldKindIdentifier } from "../../core/index.js";
7
-
8
- import type { FieldKindWithEditor } from "./fieldKindWithEditor.js";
7
+ import type { FlexFieldKind } from "./fieldKind.js";
9
8
 
10
9
  /**
11
10
  * Configuration for a single field kind.
12
11
  */
13
12
  export interface FieldKindConfigurationEntry {
14
- readonly kind: FieldKindWithEditor;
13
+ readonly kind: FlexFieldKind;
15
14
  /**
16
15
  * The format to be used for encoding changesets for this field kind.
17
16
  */
@@ -9,6 +9,7 @@ import { BTree } from "@tylerbu/sorted-btree-es6";
9
9
  import {
10
10
  type DeltaDetachedNodeId,
11
11
  type DeltaMark,
12
+ type FieldKindIdentifier,
12
13
  Multiplicity,
13
14
  type RevisionTag,
14
15
  replaceAtomRevisions,
@@ -24,10 +25,11 @@ import type {
24
25
  RelevantRemovedRootsFromChild,
25
26
  ToDelta,
26
27
  } from "./fieldChangeHandler.js";
27
- import { FieldKindWithEditor } from "./fieldKindWithEditor.js";
28
28
  import { makeGenericChangeCodec } from "./genericFieldKindCodecs.js";
29
29
  import { newGenericChangeset, type GenericChangeset } from "./genericFieldKindTypes.js";
30
30
  import type { NodeId } from "./modularChangeTypes.js";
31
+ import { FlexFieldKind } from "./fieldKind.js";
32
+ import { brandConst } from "../../util/index.js";
31
33
 
32
34
  /**
33
35
  * {@link FieldChangeHandler} implementation for {@link GenericChangeset}.
@@ -164,12 +166,10 @@ function replaceRevisions(
164
166
  /**
165
167
  * {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.
166
168
  */
167
- export const genericFieldKind: FieldKindWithEditor = new FieldKindWithEditor(
168
- "ModularEditBuilder.Generic",
169
+ export const genericFieldKind: FlexFieldKind = new FlexFieldKind(
170
+ brandConst("ModularEditBuilder.Generic")<FieldKindIdentifier>(),
169
171
  Multiplicity.Sequence,
170
- genericChangeHandler,
171
- (types, other) => false,
172
- new Set(),
172
+ { changeHandler: genericChangeHandler, allowsTreeSupersetOf: (types, other) => false },
173
173
  );
174
174
 
175
175
  /**
@@ -26,7 +26,6 @@ export {
26
26
  EncodedNodeChangeset,
27
27
  } from "./modularChangeFormat.js";
28
28
  export { FlexFieldKind, type FullSchemaPolicy } from "./fieldKind.js";
29
- export { FieldKindWithEditor } from "./fieldKindWithEditor.js";
30
29
  export {
31
30
  type FieldChangeHandler,
32
31
  type FieldChangeDelta,
@@ -13,12 +13,11 @@ import {
13
13
  type TreeNodeStoredSchema,
14
14
  type TreeStoredSchema,
15
15
  Multiplicity,
16
+ type SchemaPolicy,
16
17
  } from "../../core/index.js";
17
18
 
18
- import type { FullSchemaPolicy } from "./fieldKind.js";
19
-
20
19
  export function isNeverField(
21
- policy: FullSchemaPolicy,
20
+ policy: SchemaPolicy,
22
21
  originalData: TreeStoredSchema,
23
22
  field: TreeFieldStoredSchema,
24
23
  ): boolean {
@@ -26,7 +25,7 @@ export function isNeverField(
26
25
  }
27
26
 
28
27
  export function isNeverFieldRecursive(
29
- policy: FullSchemaPolicy,
28
+ policy: SchemaPolicy,
30
29
  originalData: TreeStoredSchema,
31
30
  field: TreeFieldStoredSchema,
32
31
  parentTypeStack: Set<TreeNodeStoredSchema>,
@@ -54,29 +53,29 @@ export function isNeverFieldRecursive(
54
53
  }
55
54
  return false;
56
55
  }
56
+
57
57
  /**
58
58
  * Returns true iff there are no possible trees that could meet this schema.
59
59
  * Trees which are infinite (like endless linked lists) are considered impossible.
60
60
  *
61
61
  * `undefined` means the schema is not present and thus a NeverTree.
62
62
  */
63
-
64
63
  export function isNeverTree(
65
- policy: FullSchemaPolicy,
64
+ policy: SchemaPolicy,
66
65
  originalData: TreeStoredSchema,
67
66
  treeNode: TreeNodeStoredSchema | undefined,
68
67
  ): boolean {
69
68
  return isNeverTreeRecursive(policy, originalData, treeNode, new Set());
70
69
  }
70
+
71
71
  /**
72
72
  * Returns true iff there are no possible trees that could meet this schema.
73
73
  * Trees which are infinite (like endless linked lists) are considered impossible.
74
74
  *
75
75
  * `undefined` means the schema is not present and thus a NeverTree.
76
76
  */
77
-
78
77
  export function isNeverTreeRecursive(
79
- policy: FullSchemaPolicy,
78
+ policy: SchemaPolicy,
80
79
  originalData: TreeStoredSchema,
81
80
  treeNode: TreeNodeStoredSchema | undefined,
82
81
  parentTypeStack: Set<TreeNodeStoredSchema>,
@@ -70,7 +70,6 @@ import {
70
70
  NodeAttachState,
71
71
  type RebaseRevisionMetadata,
72
72
  } from "./fieldChangeHandler.js";
73
- import { type FieldKindWithEditor, withEditor } from "./fieldKindWithEditor.js";
74
73
  import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
75
74
  import type { GenericChangeset } from "./genericFieldKindTypes.js";
76
75
  import {
@@ -87,6 +86,7 @@ import {
87
86
  type NodeChangeset,
88
87
  type NodeId,
89
88
  } from "./modularChangeTypes.js";
89
+ import type { FlexFieldKind } from "./fieldKind.js";
90
90
 
91
91
  /**
92
92
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
@@ -99,10 +99,10 @@ export class ModularChangeFamily
99
99
  {
100
100
  public static readonly emptyChange: ModularChangeset = makeModularChangeset();
101
101
 
102
- public readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>;
102
+ public readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>;
103
103
 
104
104
  public constructor(
105
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
105
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
106
106
  public readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>,
107
107
  ) {
108
108
  this.fieldKinds = fieldKinds;
@@ -1908,7 +1908,7 @@ function invertBuilds(
1908
1908
  */
1909
1909
  export function* relevantRemovedRoots(
1910
1910
  change: ModularChangeset,
1911
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
1911
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
1912
1912
  ): Iterable<DeltaDetachedNodeId> {
1913
1913
  yield* relevantRemovedRootsFromFields(change.fieldChanges, change.nodeChanges, fieldKinds);
1914
1914
  }
@@ -1916,7 +1916,7 @@ export function* relevantRemovedRoots(
1916
1916
  function* relevantRemovedRootsFromFields(
1917
1917
  change: FieldChangeMap,
1918
1918
  nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
1919
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
1919
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
1920
1920
  ): Iterable<DeltaDetachedNodeId> {
1921
1921
  for (const [_, fieldChange] of change) {
1922
1922
  const handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);
@@ -2022,7 +2022,7 @@ export function updateRefreshers(
2022
2022
  */
2023
2023
  export function intoDelta(
2024
2024
  taggedChange: TaggedChange<ModularChangeset>,
2025
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2025
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2026
2026
  ): DeltaRoot {
2027
2027
  const change = taggedChange.change;
2028
2028
  const rootDelta: Mutable<DeltaRoot> = {};
@@ -2091,7 +2091,7 @@ function copyDetachedNodes(
2091
2091
  function intoDeltaImpl(
2092
2092
  change: FieldChangeMap,
2093
2093
  nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
2094
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2094
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2095
2095
  global: DeltaDetachedNodeChanges[],
2096
2096
  rename: DeltaDetachedNodeRename[],
2097
2097
  ): Map<FieldKey, DeltaFieldChanges> {
@@ -2121,7 +2121,7 @@ function intoDeltaImpl(
2121
2121
  function deltaFromNodeChange(
2122
2122
  change: NodeChangeset,
2123
2123
  nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
2124
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2124
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2125
2125
  global: DeltaDetachedNodeChanges[],
2126
2126
  rename: DeltaDetachedNodeRename[],
2127
2127
  ): DeltaFieldMap {
@@ -2173,19 +2173,19 @@ function isEmptyNodeChangeset(change: NodeChangeset): boolean {
2173
2173
  }
2174
2174
 
2175
2175
  export function getFieldKind(
2176
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2176
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2177
2177
  kind: FieldKindIdentifier,
2178
- ): FieldKindWithEditor {
2178
+ ): FlexFieldKind {
2179
2179
  if (kind === genericFieldKind.identifier) {
2180
2180
  return genericFieldKind;
2181
2181
  }
2182
2182
  const fieldKind = fieldKinds.get(kind);
2183
2183
  assert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);
2184
- return withEditor(fieldKind);
2184
+ return fieldKind;
2185
2185
  }
2186
2186
 
2187
2187
  export function getChangeHandler(
2188
- fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2188
+ fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2189
2189
  kind: FieldKindIdentifier,
2190
2190
  ): FieldChangeHandler<unknown> {
2191
2191
  return getFieldKind(fieldKinds, kind).changeHandler;
@@ -2668,7 +2668,7 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2668
2668
 
2669
2669
  public constructor(
2670
2670
  family: ChangeFamily<ChangeFamilyEditor, ModularChangeset>,
2671
- private readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
2671
+ private readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
2672
2672
  changeReceiver: (change: TaggedChange<ModularChangeset>) => void,
2673
2673
  ) {
2674
2674
  super(family, changeReceiver);
@@ -52,12 +52,8 @@ import {
52
52
  import { chunkField, defaultChunkPolicy } from "../chunked-forest/index.js";
53
53
  import { cursorForMapTreeNode, mapTreeFromCursor } from "../mapTreeCursor.js";
54
54
  import { type CursorWithNode, SynchronousCursor } from "../treeCursorUtils.js";
55
- import {
56
- defaultSchemaPolicy,
57
- FieldKinds,
58
- isFieldInSchema,
59
- throwOutOfSchema,
60
- } from "../default-schema/index.js";
55
+ import { defaultSchemaPolicy, FieldKinds } from "../default-schema/index.js";
56
+ import { isFieldInSchema, throwOutOfSchema } from "../schemaChecker.js";
61
57
 
62
58
  /** A `MapTree` with mutable fields */
63
59
  interface MutableMapTree extends MapTree {
@@ -12,4 +12,5 @@ export {
12
12
  optionalFieldEditor,
13
13
  optionalChangeRebaser,
14
14
  optionalFieldIntoDelta,
15
+ type OptionalFieldEditor,
15
16
  } from "./optionalField.js";
@@ -12,7 +12,6 @@ import type {
12
12
  import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
13
13
 
14
14
  import type { OptionalChangeset } from "./optionalFieldChangeTypes.js";
15
- import { makeOptionalFieldCodec as makeV1Codec } from "./optionalFieldCodecV1.js";
16
15
  import { makeOptionalFieldCodec as makeV2Codec } from "./optionalFieldCodecV2.js";
17
16
 
18
17
  export const makeOptionalFieldCodecFamily = (
@@ -23,7 +22,4 @@ export const makeOptionalFieldCodecFamily = (
23
22
  ChangeEncodingContext
24
23
  >,
25
24
  ): ICodecFamily<OptionalChangeset, FieldChangeEncodingContext> =>
26
- makeCodecFamily([
27
- [1, makeV1Codec(revisionTagCodec)],
28
- [2, makeV2Codec(revisionTagCodec)],
29
- ]);
25
+ makeCodecFamily([[2, makeV2Codec(revisionTagCodec)]]);
@@ -4,6 +4,10 @@
4
4
  */
5
5
 
6
6
  import { fail, unreachableCase } from "@fluidframework/core-utils/internal";
7
+ import {
8
+ getConfigForMinVersionForCollab,
9
+ lowestMinVersionForCollab,
10
+ } from "@fluidframework/runtime-utils/internal";
7
11
 
8
12
  import {
9
13
  type CodecTree,
@@ -40,9 +44,12 @@ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definition
40
44
  export function clientVersionToSchemaVersion(
41
45
  clientVersion: MinimumVersionForCollab,
42
46
  ): SchemaFormatVersion {
43
- return clientVersion < FluidClientVersion.v2_43
44
- ? brand(SchemaFormatVersion.v1)
45
- : brand(SchemaFormatVersion.v2);
47
+ return brand(
48
+ getConfigForMinVersionForCollab(clientVersion, {
49
+ [lowestMinVersionForCollab]: SchemaFormatVersion.v1,
50
+ [FluidClientVersion.v2_43]: SchemaFormatVersion.v2,
51
+ }),
52
+ );
46
53
  }
47
54
 
48
55
  export function getCodecTreeForSchemaFormat(
@@ -13,10 +13,10 @@ import {
13
13
  MapNodeStoredSchema,
14
14
  Multiplicity,
15
15
  type SchemaAndPolicy,
16
- } from "../../core/index.js";
17
- import { allowsValue } from "../valueUtilities.js";
18
- import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "../mapTreeCursor.js";
19
- import { iterableHasSome, mapIterable } from "../../util/index.js";
16
+ } from "../core/index.js";
17
+ import { allowsValue } from "./valueUtilities.js";
18
+ import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "./mapTreeCursor.js";
19
+ import { iterableHasSome, mapIterable } from "../util/index.js";
20
20
 
21
21
  export enum SchemaValidationError {
22
22
  Field_KindNotInSchemaPolicy,
@@ -11,7 +11,6 @@ import type {
11
11
  } from "../../core/index.js";
12
12
  import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
13
13
 
14
- import { makeV1Codec } from "./sequenceFieldCodecV1.js";
15
14
  import { makeV2Codec } from "./sequenceFieldCodecV2.js";
16
15
  import { makeV3Codec } from "./sequenceFieldCodecV3.js";
17
16
  import type { Changeset, MarkList } from "./types.js";
@@ -25,7 +24,6 @@ export const sequenceFieldChangeCodecFactory = (
25
24
  >,
26
25
  ): ICodecFamily<MarkList, FieldChangeEncodingContext> =>
27
26
  makeCodecFamily<Changeset, FieldChangeEncodingContext>([
28
- [1, makeV1Codec(revisionTagCodec)],
29
27
  [2, makeV2Codec(revisionTagCodec)],
30
28
  [3, makeV3Codec(revisionTagCodec)],
31
29
  ]);
package/src/index.ts CHANGED
@@ -60,7 +60,6 @@ export {
60
60
  type SharedTreeOptionsBeta,
61
61
  type ForestType,
62
62
  type SharedTreeFormatOptions,
63
- SharedTreeFormatVersion,
64
63
  Tree,
65
64
  type RunTransaction,
66
65
  type ForestOptions,
@@ -285,6 +284,9 @@ export {
285
284
  type SimpleAllowedTypeAttributes,
286
285
  encodeSimpleSchema,
287
286
  decodeSimpleSchema,
287
+ exportCompatibilitySchemaSnapshot,
288
+ importCompatibilitySchemaSnapshot,
289
+ checkCompatibility,
288
290
  } from "./simple-tree/index.js";
289
291
  export {
290
292
  SharedTree,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.72.0";
9
+ export const pkgVersion = "2.73.0";
@@ -13,7 +13,6 @@ export {
13
13
  type ForestType,
14
14
  type SharedTreeContentSnapshot,
15
15
  type SharedTreeFormatOptions,
16
- SharedTreeFormatVersion,
17
16
  buildConfiguredForest,
18
17
  defaultSharedTreeOptions,
19
18
  type ForestOptions,
@@ -574,56 +574,6 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
574
574
  return kernel.checkout as unknown as BranchableTree;
575
575
  }
576
576
 
577
- /**
578
- * Format versions supported by SharedTree.
579
- *
580
- * Each version documents a required minimum version of the \@fluidframework/tree package.
581
- * @alpha
582
- */
583
- export const SharedTreeFormatVersion = {
584
- /**
585
- * Requires \@fluidframework/tree \>= 2.0.0.
586
- *
587
- * @deprecated FF does not currently plan on supporting this format long-term.
588
- * Do not write production documents using this format, as they may not be loadable in the future.
589
- */
590
- v1: 1,
591
-
592
- /**
593
- * Requires \@fluidframework/tree \>= 2.0.0.
594
- */
595
- v2: 2,
596
-
597
- /**
598
- * Requires \@fluidframework/tree \>= 2.0.0.
599
- */
600
- v3: 3,
601
-
602
- /**
603
- * Requires \@fluidframework/tree \>= 2.0.0.
604
- */
605
- v5: 5,
606
-
607
- /**
608
- * For testing purposes only.
609
- */
610
- vSharedBranches: 100,
611
- } as const;
612
-
613
- /**
614
- * Format versions supported by SharedTree.
615
- *
616
- * Each version documents a required minimum version of the \@fluidframework/tree package.
617
- * @alpha
618
- * @privateRemarks
619
- * See packages/dds/tree/docs/main/compatibility.md for information on how to add support for a new format.
620
- *
621
- * TODO: Before this gets promoted past Alpha,
622
- * a separate abstraction more suited for use in the public API should be adopted rather than reusing the same types used internally.
623
- * Such an abstraction should probably be in the form of a Fluid-Framework wide compatibility enum.
624
- */
625
- export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
626
-
627
577
  /**
628
578
  * Defines for each EditManagerFormatVersion the SharedTreeChangeFormatVersion to use.
629
579
  * This is an arbitrary mapping that is injected in the EditManger codec.
@@ -631,14 +581,6 @@ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
631
581
  * This is because the format for SharedTree changes are not explicitly versioned.
632
582
  */
633
583
  export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([
634
- [
635
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.v1),
636
- brand<SharedTreeChangeFormatVersion>(1),
637
- ],
638
- [
639
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.v2),
640
- brand<SharedTreeChangeFormatVersion>(2),
641
- ],
642
584
  [
643
585
  brand<EditManagerFormatVersion>(EditManagerFormatVersion.v3),
644
586
  brand<SharedTreeChangeFormatVersion>(3),
@@ -660,18 +602,6 @@ export const changeFormatVersionForEditManager = DependentFormatVersion.fromPair
660
602
  * This is because the format for SharedTree changes are not explicitly versioned.
661
603
  */
662
604
  export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([
663
- [
664
- brand<MessageFormatVersion>(MessageFormatVersion.undefined),
665
- brand<SharedTreeChangeFormatVersion>(1),
666
- ],
667
- [
668
- brand<MessageFormatVersion>(MessageFormatVersion.v1),
669
- brand<SharedTreeChangeFormatVersion>(1),
670
- ],
671
- [
672
- brand<MessageFormatVersion>(MessageFormatVersion.v2),
673
- brand<SharedTreeChangeFormatVersion>(2),
674
- ],
675
605
  [
676
606
  brand<MessageFormatVersion>(MessageFormatVersion.v3),
677
607
  brand<SharedTreeChangeFormatVersion>(3),
@@ -74,10 +74,7 @@ interface ChangeFormatDependencies {
74
74
  readonly schemaChange: SchemaFormatVersion;
75
75
  }
76
76
 
77
- export type SharedTreeChangeFormatVersion = Brand<
78
- 1 | 2 | 3 | 4,
79
- "SharedTreeChangeFormatVersion"
80
- >;
77
+ export type SharedTreeChangeFormatVersion = Brand<3 | 4, "SharedTreeChangeFormatVersion">;
81
78
 
82
79
  /**
83
80
  * Defines for each SharedTree change format the corresponding dependent formats to use.
@@ -89,8 +86,6 @@ export const dependenciesForChangeFormat: Map<
89
86
  SharedTreeChangeFormatVersion,
90
87
  ChangeFormatDependencies
91
88
  > = new Map([
92
- [brand(1), { modularChange: brand(1), schemaChange: brand(SchemaFormatVersion.v1) }],
93
- [brand(2), { modularChange: brand(2), schemaChange: brand(SchemaFormatVersion.v1) }],
94
89
  [brand(3), { modularChange: brand(3), schemaChange: brand(SchemaFormatVersion.v1) }],
95
90
  [brand(4), { modularChange: brand(4), schemaChange: brand(SchemaFormatVersion.v1) }],
96
91
  ]);
@@ -5,6 +5,10 @@
5
5
 
6
6
  import type { IIdCompressor } from "@fluidframework/id-compressor";
7
7
  import { unreachableCase } from "@fluidframework/core-utils/internal";
8
+ import {
9
+ getConfigForMinVersionForCollab,
10
+ lowestMinVersionForCollab,
11
+ } from "@fluidframework/runtime-utils/internal";
8
12
 
9
13
  import {
10
14
  type CodecTree,
@@ -16,6 +20,7 @@ import {
16
20
  type ICodecOptions,
17
21
  type IJsonCodec,
18
22
  makeCodecFamily,
23
+ makeDiscontinuedCodecVersion,
19
24
  } from "../codec/index.js";
20
25
  import { makeVersionDispatchingCodec } from "../codec/index.js";
21
26
  import type {
@@ -49,10 +54,13 @@ export function clientVersionToEditManagerFormatVersion(
49
54
  clientVersion: MinimumVersionForCollab,
50
55
  writeVersionOverride?: EditManagerFormatVersion,
51
56
  ): EditManagerFormatVersion {
52
- const compatibleVersion: EditManagerFormatVersion =
53
- clientVersion < FluidClientVersion.v2_43
54
- ? brand(EditManagerFormatVersion.v3)
55
- : brand(EditManagerFormatVersion.v4);
57
+ const compatibleVersion: EditManagerFormatVersion = brand(
58
+ getConfigForMinVersionForCollab(clientVersion, {
59
+ [lowestMinVersionForCollab]: EditManagerFormatVersion.v3,
60
+ [FluidClientVersion.v2_43]: EditManagerFormatVersion.v4,
61
+ }),
62
+ );
63
+
56
64
  return writeVersionOverride ?? compatibleVersion;
57
65
  }
58
66
 
@@ -125,21 +133,25 @@ export function makeEditManagerCodecs<TChangeset>(
125
133
  EditManagerEncodingContext
126
134
  >,
127
135
  ][] = Array.from(editManagerFormatVersions, (version) => {
128
- const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
129
136
  switch (version) {
130
137
  case EditManagerFormatVersion.v1:
131
138
  case EditManagerFormatVersion.v2:
139
+ return [version, makeDiscontinuedCodecVersion(options, version, "2.73.0")];
132
140
  case EditManagerFormatVersion.v3:
133
- case EditManagerFormatVersion.v4:
141
+ case EditManagerFormatVersion.v4: {
142
+ const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
134
143
  return [
135
144
  version,
136
145
  makeV1CodecWithVersion(changeCodec, revisionTagCodec, options, version),
137
146
  ];
138
- case EditManagerFormatVersion.v5:
147
+ }
148
+ case EditManagerFormatVersion.v5: {
149
+ const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
139
150
  return [
140
151
  version,
141
152
  makeV5CodecWithVersion(changeCodec, revisionTagCodec, options, version),
142
153
  ];
154
+ }
143
155
  default:
144
156
  unreachableCase(version);
145
157
  }