@fluidframework/tree 2.72.0 → 2.74.0-365691

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 (696) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/api-report/tree.alpha.api.md +32 -31
  3. package/dist/alpha.d.ts +7 -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 +3 -3
  40. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/codec/codecs.js +32 -18
  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/incrementalEncodingPolicy.d.ts +2 -2
  56. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  60. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  61. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  62. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
  63. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +23 -6
  65. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  66. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
  67. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +20 -4
  69. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  70. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  71. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  72. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  73. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  74. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
  75. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  76. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +53 -55
  77. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  78. package/dist/feature-libraries/default-schema/index.d.ts +1 -3
  79. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/default-schema/index.js +2 -8
  81. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  82. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  83. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  84. package/dist/feature-libraries/forest-summary/format.d.ts +2 -2
  85. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  86. package/dist/feature-libraries/forest-summary/format.js +4 -2
  87. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  88. package/dist/feature-libraries/index.d.ts +5 -4
  89. package/dist/feature-libraries/index.d.ts.map +1 -1
  90. package/dist/feature-libraries/index.js +8 -8
  91. package/dist/feature-libraries/index.js.map +1 -1
  92. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  93. package/dist/feature-libraries/modular-schema/comparison.js +1 -2
  94. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  95. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
  96. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  97. package/dist/feature-libraries/modular-schema/fieldKind.js +29 -11
  98. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  99. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
  100. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
  101. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
  102. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
  103. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  104. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -2
  105. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  106. package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
  107. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  108. package/dist/feature-libraries/modular-schema/index.js +1 -3
  109. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  110. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
  111. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  112. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  113. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  114. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  115. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  116. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
  117. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  118. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
  119. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  120. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
  121. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  122. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  123. package/dist/feature-libraries/object-forest/objectForest.js +3 -2
  124. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  125. package/dist/feature-libraries/optional-field/index.d.ts +1 -1
  126. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  127. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  128. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  129. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
  130. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  131. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  132. package/dist/feature-libraries/schema-index/codec.js +5 -3
  133. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  134. package/dist/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
  135. package/dist/feature-libraries/schemaChecker.d.ts.map +1 -0
  136. package/dist/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
  137. package/dist/feature-libraries/schemaChecker.js.map +1 -0
  138. package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  139. package/dist/feature-libraries/sequence-field/formatV2.js +1 -0
  140. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  141. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  142. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
  143. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  144. package/dist/feature-libraries/treeCompressionUtils.d.ts +2 -12
  145. package/dist/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
  146. package/dist/feature-libraries/treeCompressionUtils.js +4 -14
  147. package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
  148. package/dist/index.d.ts +4 -4
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +8 -3
  151. package/dist/index.js.map +1 -1
  152. package/dist/packageVersion.d.ts +1 -1
  153. package/dist/packageVersion.d.ts.map +1 -1
  154. package/dist/packageVersion.js +1 -1
  155. package/dist/packageVersion.js.map +1 -1
  156. package/dist/shared-tree/index.d.ts +1 -1
  157. package/dist/shared-tree/index.d.ts.map +1 -1
  158. package/dist/shared-tree/index.js +1 -2
  159. package/dist/shared-tree/index.js.map +1 -1
  160. package/dist/shared-tree/sharedTree.d.ts +7 -54
  161. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  162. package/dist/shared-tree/sharedTree.js +2 -52
  163. package/dist/shared-tree/sharedTree.js.map +1 -1
  164. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  165. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  166. package/dist/shared-tree/sharedTreeChangeCodecs.js +0 -2
  167. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  168. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  169. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  170. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  171. package/dist/shared-tree/treeCheckout.d.ts +2 -2
  172. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  173. package/dist/shared-tree/treeCheckout.js.map +1 -1
  174. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  175. package/dist/shared-tree-core/editManagerCodecs.js +12 -6
  176. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  177. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
  178. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  179. package/dist/shared-tree-core/editManagerFormatCommons.js +5 -8
  180. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  181. package/dist/shared-tree-core/index.d.ts +3 -3
  182. package/dist/shared-tree-core/index.d.ts.map +1 -1
  183. package/dist/shared-tree-core/index.js +3 -2
  184. package/dist/shared-tree-core/index.js.map +1 -1
  185. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  186. package/dist/shared-tree-core/messageCodecs.js +20 -9
  187. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  188. package/dist/shared-tree-core/messageFormat.d.ts +4 -6
  189. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  190. package/dist/shared-tree-core/messageFormat.js +9 -7
  191. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  192. package/dist/simple-tree/api/configuration.d.ts +2 -0
  193. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  194. package/dist/simple-tree/api/configuration.js +10 -0
  195. package/dist/simple-tree/api/configuration.js.map +1 -1
  196. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +15 -12
  197. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
  198. package/dist/simple-tree/api/incrementalAllowedTypes.js +17 -14
  199. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  200. package/dist/simple-tree/api/index.d.ts +2 -1
  201. package/dist/simple-tree/api/index.d.ts.map +1 -1
  202. package/dist/simple-tree/api/index.js +6 -2
  203. package/dist/simple-tree/api/index.js.map +1 -1
  204. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  205. package/dist/simple-tree/api/schemaFromSimple.js +7 -1
  206. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  207. package/dist/simple-tree/api/simpleSchemaCodec.js +4 -6
  208. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  209. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
  210. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
  211. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +128 -0
  212. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
  213. package/dist/simple-tree/api/tree.d.ts +2 -2
  214. package/dist/simple-tree/api/tree.js +1 -1
  215. package/dist/simple-tree/api/tree.js.map +1 -1
  216. package/dist/simple-tree/core/allowedTypes.js +1 -1
  217. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  218. package/dist/simple-tree/core/index.d.ts +3 -3
  219. package/dist/simple-tree/core/index.d.ts.map +1 -1
  220. package/dist/simple-tree/core/index.js +3 -1
  221. package/dist/simple-tree/core/index.js.map +1 -1
  222. package/dist/simple-tree/core/toStored.d.ts +12 -5
  223. package/dist/simple-tree/core/toStored.d.ts.map +1 -1
  224. package/dist/simple-tree/core/toStored.js +26 -10
  225. package/dist/simple-tree/core/toStored.js.map +1 -1
  226. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  227. package/dist/simple-tree/core/treeNodeKernel.js +1 -0
  228. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  229. package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -6
  230. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  231. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  232. package/dist/simple-tree/core/treeNodeValid.d.ts +1 -1
  233. package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  234. package/dist/simple-tree/core/treeNodeValid.js +1 -2
  235. package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
  236. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  237. package/dist/simple-tree/fieldSchema.js +1 -8
  238. package/dist/simple-tree/fieldSchema.js.map +1 -1
  239. package/dist/simple-tree/index.d.ts +3 -3
  240. package/dist/simple-tree/index.d.ts.map +1 -1
  241. package/dist/simple-tree/index.js +10 -4
  242. package/dist/simple-tree/index.js.map +1 -1
  243. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  244. package/dist/simple-tree/leafNodeSchema.js +0 -1
  245. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  246. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  247. package/dist/simple-tree/node-kinds/array/arrayNode.js +14 -49
  248. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  249. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  250. package/dist/simple-tree/node-kinds/map/mapNode.js +1 -5
  251. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  252. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  253. package/dist/simple-tree/node-kinds/object/objectNode.js +3 -10
  254. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  255. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  256. package/dist/simple-tree/node-kinds/record/recordNode.js +1 -5
  257. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  258. package/dist/simple-tree/simpleSchema.d.ts +15 -3
  259. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  260. package/dist/simple-tree/simpleSchema.js.map +1 -1
  261. package/dist/simple-tree/toStoredSchema.d.ts +20 -8
  262. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  263. package/dist/simple-tree/toStoredSchema.js +27 -22
  264. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  265. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  266. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +18 -15
  267. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  268. package/dist/tableSchema.d.ts +22 -52
  269. package/dist/tableSchema.d.ts.map +1 -1
  270. package/dist/tableSchema.js +141 -277
  271. package/dist/tableSchema.js.map +1 -1
  272. package/dist/treeFactory.d.ts +5 -0
  273. package/dist/treeFactory.d.ts.map +1 -1
  274. package/dist/treeFactory.js +12 -5
  275. package/dist/treeFactory.js.map +1 -1
  276. package/dist/util/arrayUtilities.d.ts +45 -0
  277. package/dist/util/arrayUtilities.d.ts.map +1 -0
  278. package/dist/util/arrayUtilities.js +76 -0
  279. package/dist/util/arrayUtilities.js.map +1 -0
  280. package/dist/util/breakable.js +3 -3
  281. package/dist/util/breakable.js.map +1 -1
  282. package/dist/util/index.d.ts +1 -0
  283. package/dist/util/index.d.ts.map +1 -1
  284. package/dist/util/index.js +7 -2
  285. package/dist/util/index.js.map +1 -1
  286. package/dist/util/typeCheckTests.d.ts.map +1 -1
  287. package/dist/util/typeCheckTests.js.map +1 -1
  288. package/lib/alpha.d.ts +7 -1
  289. package/lib/api.d.ts +6 -2
  290. package/lib/api.d.ts.map +1 -1
  291. package/lib/api.js +2 -13
  292. package/lib/api.js.map +1 -1
  293. package/lib/codec/codec.d.ts +9 -2
  294. package/lib/codec/codec.d.ts.map +1 -1
  295. package/lib/codec/codec.js +9 -2
  296. package/lib/codec/codec.js.map +1 -1
  297. package/lib/codec/index.d.ts +1 -1
  298. package/lib/codec/index.d.ts.map +1 -1
  299. package/lib/codec/index.js +1 -1
  300. package/lib/codec/index.js.map +1 -1
  301. package/lib/codec/versioned/codec.d.ts +7 -2
  302. package/lib/codec/versioned/codec.d.ts.map +1 -1
  303. package/lib/codec/versioned/codec.js +22 -0
  304. package/lib/codec/versioned/codec.js.map +1 -1
  305. package/lib/codec/versioned/index.d.ts +1 -1
  306. package/lib/codec/versioned/index.d.ts.map +1 -1
  307. package/lib/codec/versioned/index.js +1 -1
  308. package/lib/codec/versioned/index.js.map +1 -1
  309. package/lib/core/schema-stored/schema.d.ts +12 -1
  310. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  311. package/lib/core/schema-stored/schema.js.map +1 -1
  312. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  313. package/lib/core/tree/detachedFieldIndexCodecs.js +5 -3
  314. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  315. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
  316. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  317. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  318. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  319. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +2 -1
  320. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  321. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
  322. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  323. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  324. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +3 -3
  325. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  326. package/lib/feature-libraries/chunked-forest/codec/codecs.js +36 -22
  327. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  328. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
  329. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  330. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
  331. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  332. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
  333. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  334. package/lib/feature-libraries/chunked-forest/codec/format.js +6 -2
  335. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  336. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
  337. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
  338. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
  339. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
  340. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +2 -2
  341. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
  342. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -1
  343. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  344. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  345. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  346. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  347. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
  348. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  349. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -6
  350. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  351. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
  352. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  353. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +17 -2
  354. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  355. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  356. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  357. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  358. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  359. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
  360. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  361. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -57
  362. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  363. package/lib/feature-libraries/default-schema/index.d.ts +1 -3
  364. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  365. package/lib/feature-libraries/default-schema/index.js +1 -3
  366. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  367. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -2
  368. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  369. package/lib/feature-libraries/forest-summary/format.d.ts +2 -2
  370. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  371. package/lib/feature-libraries/forest-summary/format.js +4 -2
  372. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  373. package/lib/feature-libraries/index.d.ts +5 -4
  374. package/lib/feature-libraries/index.d.ts.map +1 -1
  375. package/lib/feature-libraries/index.js +5 -4
  376. package/lib/feature-libraries/index.js.map +1 -1
  377. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  378. package/lib/feature-libraries/modular-schema/comparison.js +1 -2
  379. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  380. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
  381. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  382. package/lib/feature-libraries/modular-schema/fieldKind.js +29 -11
  383. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  384. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
  385. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
  386. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
  387. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
  388. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  389. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -2
  390. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  391. package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
  392. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  393. package/lib/feature-libraries/modular-schema/index.js +0 -1
  394. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  395. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
  396. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  397. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  398. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  399. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  400. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +1 -1
  401. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  402. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
  403. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  404. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
  405. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  406. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
  407. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  408. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  409. package/lib/feature-libraries/object-forest/objectForest.js +2 -1
  410. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  411. package/lib/feature-libraries/optional-field/index.d.ts +1 -1
  412. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  413. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  414. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  415. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
  416. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  417. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  418. package/lib/feature-libraries/schema-index/codec.js +5 -3
  419. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  420. package/lib/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
  421. package/lib/feature-libraries/schemaChecker.d.ts.map +1 -0
  422. package/lib/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
  423. package/lib/feature-libraries/schemaChecker.js.map +1 -0
  424. package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  425. package/lib/feature-libraries/sequence-field/formatV2.js +1 -0
  426. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  427. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  428. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
  429. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  430. package/lib/feature-libraries/treeCompressionUtils.d.ts +2 -12
  431. package/lib/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
  432. package/lib/feature-libraries/treeCompressionUtils.js +3 -13
  433. package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
  434. package/lib/index.d.ts +4 -4
  435. package/lib/index.d.ts.map +1 -1
  436. package/lib/index.js +3 -3
  437. package/lib/index.js.map +1 -1
  438. package/lib/packageVersion.d.ts +1 -1
  439. package/lib/packageVersion.d.ts.map +1 -1
  440. package/lib/packageVersion.js +1 -1
  441. package/lib/packageVersion.js.map +1 -1
  442. package/lib/shared-tree/index.d.ts +1 -1
  443. package/lib/shared-tree/index.d.ts.map +1 -1
  444. package/lib/shared-tree/index.js +1 -1
  445. package/lib/shared-tree/index.js.map +1 -1
  446. package/lib/shared-tree/sharedTree.d.ts +7 -54
  447. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  448. package/lib/shared-tree/sharedTree.js +1 -51
  449. package/lib/shared-tree/sharedTree.js.map +1 -1
  450. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  451. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  452. package/lib/shared-tree/sharedTreeChangeCodecs.js +0 -2
  453. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  454. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  455. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  456. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  457. package/lib/shared-tree/treeCheckout.d.ts +2 -2
  458. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  459. package/lib/shared-tree/treeCheckout.js.map +1 -1
  460. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  461. package/lib/shared-tree-core/editManagerCodecs.js +13 -7
  462. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  463. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
  464. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  465. package/lib/shared-tree-core/editManagerFormatCommons.js +4 -7
  466. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  467. package/lib/shared-tree-core/index.d.ts +3 -3
  468. package/lib/shared-tree-core/index.d.ts.map +1 -1
  469. package/lib/shared-tree-core/index.js +2 -2
  470. package/lib/shared-tree-core/index.js.map +1 -1
  471. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  472. package/lib/shared-tree-core/messageCodecs.js +21 -10
  473. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  474. package/lib/shared-tree-core/messageFormat.d.ts +4 -6
  475. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  476. package/lib/shared-tree-core/messageFormat.js +8 -6
  477. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  478. package/lib/simple-tree/api/configuration.d.ts +2 -0
  479. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  480. package/lib/simple-tree/api/configuration.js +10 -0
  481. package/lib/simple-tree/api/configuration.js.map +1 -1
  482. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +15 -12
  483. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
  484. package/lib/simple-tree/api/incrementalAllowedTypes.js +15 -12
  485. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  486. package/lib/simple-tree/api/index.d.ts +2 -1
  487. package/lib/simple-tree/api/index.d.ts.map +1 -1
  488. package/lib/simple-tree/api/index.js +2 -1
  489. package/lib/simple-tree/api/index.js.map +1 -1
  490. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  491. package/lib/simple-tree/api/schemaFromSimple.js +8 -2
  492. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  493. package/lib/simple-tree/api/simpleSchemaCodec.js +5 -7
  494. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  495. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
  496. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
  497. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +122 -0
  498. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
  499. package/lib/simple-tree/api/tree.d.ts +2 -2
  500. package/lib/simple-tree/api/tree.js +1 -1
  501. package/lib/simple-tree/api/tree.js.map +1 -1
  502. package/lib/simple-tree/core/allowedTypes.js +1 -1
  503. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  504. package/lib/simple-tree/core/index.d.ts +3 -3
  505. package/lib/simple-tree/core/index.d.ts.map +1 -1
  506. package/lib/simple-tree/core/index.js +2 -2
  507. package/lib/simple-tree/core/index.js.map +1 -1
  508. package/lib/simple-tree/core/toStored.d.ts +12 -5
  509. package/lib/simple-tree/core/toStored.d.ts.map +1 -1
  510. package/lib/simple-tree/core/toStored.js +25 -9
  511. package/lib/simple-tree/core/toStored.js.map +1 -1
  512. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  513. package/lib/simple-tree/core/treeNodeKernel.js +1 -0
  514. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  515. package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -6
  516. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  517. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  518. package/lib/simple-tree/core/treeNodeValid.d.ts +1 -1
  519. package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
  520. package/lib/simple-tree/core/treeNodeValid.js +1 -2
  521. package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
  522. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  523. package/lib/simple-tree/fieldSchema.js +2 -9
  524. package/lib/simple-tree/fieldSchema.js.map +1 -1
  525. package/lib/simple-tree/index.d.ts +3 -3
  526. package/lib/simple-tree/index.d.ts.map +1 -1
  527. package/lib/simple-tree/index.js +3 -3
  528. package/lib/simple-tree/index.js.map +1 -1
  529. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  530. package/lib/simple-tree/leafNodeSchema.js +1 -2
  531. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  532. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  533. package/lib/simple-tree/node-kinds/array/arrayNode.js +16 -51
  534. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  535. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  536. package/lib/simple-tree/node-kinds/map/mapNode.js +3 -7
  537. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  538. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  539. package/lib/simple-tree/node-kinds/object/objectNode.js +4 -11
  540. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  541. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  542. package/lib/simple-tree/node-kinds/record/recordNode.js +3 -7
  543. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  544. package/lib/simple-tree/simpleSchema.d.ts +15 -3
  545. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  546. package/lib/simple-tree/simpleSchema.js.map +1 -1
  547. package/lib/simple-tree/toStoredSchema.d.ts +20 -8
  548. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  549. package/lib/simple-tree/toStoredSchema.js +28 -24
  550. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  551. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  552. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +20 -17
  553. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  554. package/lib/tableSchema.d.ts +22 -52
  555. package/lib/tableSchema.d.ts.map +1 -1
  556. package/lib/tableSchema.js +143 -279
  557. package/lib/tableSchema.js.map +1 -1
  558. package/lib/treeFactory.d.ts +5 -0
  559. package/lib/treeFactory.d.ts.map +1 -1
  560. package/lib/treeFactory.js +10 -4
  561. package/lib/treeFactory.js.map +1 -1
  562. package/lib/util/arrayUtilities.d.ts +45 -0
  563. package/lib/util/arrayUtilities.d.ts.map +1 -0
  564. package/lib/util/arrayUtilities.js +69 -0
  565. package/lib/util/arrayUtilities.js.map +1 -0
  566. package/lib/util/breakable.js +3 -3
  567. package/lib/util/breakable.js.map +1 -1
  568. package/lib/util/index.d.ts +1 -0
  569. package/lib/util/index.d.ts.map +1 -1
  570. package/lib/util/index.js +1 -0
  571. package/lib/util/index.js.map +1 -1
  572. package/lib/util/typeCheckTests.d.ts.map +1 -1
  573. package/lib/util/typeCheckTests.js.map +1 -1
  574. package/package.json +22 -22
  575. package/src/api.ts +22 -11
  576. package/src/codec/codec.ts +10 -2
  577. package/src/codec/index.ts +1 -0
  578. package/src/codec/versioned/codec.ts +40 -2
  579. package/src/codec/versioned/index.ts +1 -0
  580. package/src/core/schema-stored/schema.ts +12 -1
  581. package/src/core/tree/detachedFieldIndexCodecs.ts +10 -3
  582. package/src/feature-libraries/README.md +1 -1
  583. package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -3
  584. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -0
  585. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
  586. package/src/feature-libraries/chunked-forest/codec/codecs.ts +55 -26
  587. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +8 -3
  588. package/src/feature-libraries/chunked-forest/codec/format.ts +14 -4
  589. package/src/feature-libraries/chunked-forest/codec/formatGeneric.ts +7 -2
  590. package/src/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.ts +5 -6
  591. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -4
  592. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +62 -9
  593. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +24 -2
  594. package/src/feature-libraries/chunked-forest/index.ts +1 -1
  595. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +86 -74
  596. package/src/feature-libraries/default-schema/index.ts +1 -9
  597. package/src/feature-libraries/forest-summary/forestSummarizer.ts +2 -2
  598. package/src/feature-libraries/forest-summary/format.ts +15 -9
  599. package/src/feature-libraries/index.ts +8 -10
  600. package/src/feature-libraries/modular-schema/comparison.ts +2 -3
  601. package/src/feature-libraries/modular-schema/fieldKind.ts +90 -13
  602. package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +2 -3
  603. package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -6
  604. package/src/feature-libraries/modular-schema/index.ts +0 -1
  605. package/src/feature-libraries/modular-schema/isNeverTree.ts +7 -8
  606. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +3 -6
  607. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +13 -13
  608. package/src/feature-libraries/object-forest/objectForest.ts +2 -6
  609. package/src/feature-libraries/optional-field/index.ts +1 -0
  610. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +1 -5
  611. package/src/feature-libraries/schema-index/codec.ts +10 -3
  612. package/src/feature-libraries/{default-schema/schemaChecker.ts → schemaChecker.ts} +4 -4
  613. package/src/feature-libraries/sequence-field/formatV2.ts +1 -0
  614. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +0 -2
  615. package/src/feature-libraries/treeCompressionUtils.ts +1 -15
  616. package/src/index.ts +7 -1
  617. package/src/packageVersion.ts +1 -1
  618. package/src/shared-tree/index.ts +0 -1
  619. package/src/shared-tree/sharedTree.ts +12 -88
  620. package/src/shared-tree/sharedTreeChangeCodecs.ts +1 -6
  621. package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
  622. package/src/shared-tree/treeCheckout.ts +2 -2
  623. package/src/shared-tree-core/editManagerCodecs.ts +19 -7
  624. package/src/shared-tree-core/editManagerFormatCommons.ts +11 -12
  625. package/src/shared-tree-core/index.ts +7 -3
  626. package/src/shared-tree-core/messageCodecs.ts +32 -17
  627. package/src/shared-tree-core/messageFormat.ts +8 -6
  628. package/src/simple-tree/api/configuration.ts +17 -4
  629. package/src/simple-tree/api/incrementalAllowedTypes.ts +20 -18
  630. package/src/simple-tree/api/index.ts +6 -1
  631. package/src/simple-tree/api/schemaFromSimple.ts +14 -6
  632. package/src/simple-tree/api/simpleSchemaCodec.ts +10 -9
  633. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +135 -0
  634. package/src/simple-tree/api/tree.ts +2 -2
  635. package/src/simple-tree/core/allowedTypes.ts +1 -1
  636. package/src/simple-tree/core/index.ts +3 -1
  637. package/src/simple-tree/core/toStored.ts +42 -18
  638. package/src/simple-tree/core/treeNodeKernel.ts +1 -0
  639. package/src/simple-tree/core/treeNodeSchema.ts +1 -7
  640. package/src/simple-tree/core/treeNodeValid.ts +0 -2
  641. package/src/simple-tree/fieldSchema.ts +2 -11
  642. package/src/simple-tree/index.ts +7 -2
  643. package/src/simple-tree/leafNodeSchema.ts +1 -2
  644. package/src/simple-tree/node-kinds/array/arrayNode.ts +28 -75
  645. package/src/simple-tree/node-kinds/map/mapNode.ts +1 -15
  646. package/src/simple-tree/node-kinds/object/objectNode.ts +4 -18
  647. package/src/simple-tree/node-kinds/record/recordNode.ts +1 -15
  648. package/src/simple-tree/simpleSchema.ts +16 -3
  649. package/src/simple-tree/toStoredSchema.ts +54 -38
  650. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +22 -17
  651. package/src/tableSchema.ts +110 -334
  652. package/src/treeFactory.ts +13 -4
  653. package/src/util/arrayUtilities.ts +88 -0
  654. package/src/util/breakable.ts +4 -4
  655. package/src/util/index.ts +6 -0
  656. package/src/util/typeCheckTests.ts +0 -1
  657. package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
  658. package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
  659. package/dist/feature-libraries/default-schema/defaultSchema.js +0 -15
  660. package/dist/feature-libraries/default-schema/defaultSchema.js.map +0 -1
  661. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
  662. package/dist/feature-libraries/default-schema/schemaChecker.js.map +0 -1
  663. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
  664. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
  665. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -76
  666. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
  667. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
  668. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
  669. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -158
  670. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
  671. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
  672. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
  673. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -245
  674. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
  675. package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
  676. package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
  677. package/lib/feature-libraries/default-schema/defaultSchema.js +0 -12
  678. package/lib/feature-libraries/default-schema/defaultSchema.js.map +0 -1
  679. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
  680. package/lib/feature-libraries/default-schema/schemaChecker.js.map +0 -1
  681. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
  682. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
  683. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -71
  684. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
  685. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
  686. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
  687. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -154
  688. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
  689. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
  690. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
  691. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -241
  692. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
  693. package/src/feature-libraries/default-schema/defaultSchema.ts +0 -15
  694. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +0 -108
  695. package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +0 -208
  696. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +0 -344
@@ -4,18 +4,15 @@
4
4
  */
5
5
 
6
6
  import { brand } from "../../util/index.js";
7
- import {
8
- normalizeAndEvaluateAnnotatedAllowedTypes,
9
- type AnnotatedAllowedType,
10
- type ImplicitAllowedTypes,
11
- type SchemaUpgrade,
12
- } from "./allowedTypes.js";
7
+ import type { SchemaUpgrade } from "./allowedTypes.js";
13
8
  import type { TreeNodeSchemaIdentifier, TreeTypeSet } from "../../core/index.js";
9
+ import type { SimpleAllowedTypeAttributes, SimpleAllowedTypes } from "../simpleSchema.js";
10
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
14
11
 
15
12
  /**
16
13
  * Options for generating a {@link TreeStoredSchema} from view schema.
17
14
  */
18
- export interface StoredSchemaGenerationOptions {
15
+ export interface StoredFromViewSchemaGenerationOptions {
19
16
  /**
20
17
  * Determines whether to include staged schema in the resulting stored schema.
21
18
  * @remarks
@@ -24,6 +21,16 @@ export interface StoredSchemaGenerationOptions {
24
21
  includeStaged(upgrade: SchemaUpgrade): boolean;
25
22
  }
26
23
 
24
+ /**
25
+ * Marker type indicating that the input schema is already a stored schema.
26
+ */
27
+ export const ExpectStored = Symbol("ExpectStored");
28
+ export type ExpectStored = typeof ExpectStored;
29
+
30
+ export type StoredSchemaGenerationOptions =
31
+ | StoredFromViewSchemaGenerationOptions
32
+ | ExpectStored;
33
+
27
34
  /**
28
35
  * Filters an allowed type based on the provided options.
29
36
  * @param allowedType - The allowed type to filter.
@@ -31,30 +38,47 @@ export interface StoredSchemaGenerationOptions {
31
38
  * @returns Whether the allowed type passes the filter.
32
39
  */
33
40
  export function allowedTypeFilter(
34
- allowedType: AnnotatedAllowedType,
41
+ data: SimpleAllowedTypeAttributes,
35
42
  options: StoredSchemaGenerationOptions,
36
43
  ): boolean {
44
+ if (options === ExpectStored) {
45
+ if (data.isStaged !== undefined) {
46
+ throw new UsageError(
47
+ "Failed to covert view schema to stored schema. The simple schema provided was indicated to be a stored schema by the use of `ExpectStored`, but view schema specific content was encountered which requires a `StoredFromViewSchemaGenerationOptions` to process.",
48
+ );
49
+ }
50
+ return true;
51
+ }
52
+
53
+ if (data.isStaged === undefined) {
54
+ throw new UsageError(
55
+ "Failed to covert view schema to stored schema. The simple schema provided as the view schema was actually a stored schema. If this was intended, use `ExpectStored` for the `StoredSchemaGenerationOptions` to indicate the input is already a stored schema and only a format conversion is required.",
56
+ );
57
+ }
58
+
37
59
  // If the allowed type is staged, only include it if the options allow it.
38
- if (allowedType.metadata.stagedSchemaUpgrade !== undefined) {
39
- return options.includeStaged(allowedType.metadata.stagedSchemaUpgrade);
60
+ if (data.isStaged === false) {
61
+ return true;
40
62
  }
41
- return true;
63
+
64
+ return options.includeStaged(data.isStaged);
42
65
  }
43
66
 
44
67
  /**
45
- * Converts an ImplicitAllowedTypes to a stored schema.
68
+ * Converts a {@link SimpleAllowedTypes} to a stored schema.
46
69
  * @param schema - The schema to convert.
47
70
  * @param options - The options to use for filtering.
48
71
  * @returns The converted stored schema.
49
72
  */
50
73
  export function convertAllowedTypes(
51
- schema: ImplicitAllowedTypes,
74
+ schema: SimpleAllowedTypes,
52
75
  options: StoredSchemaGenerationOptions,
53
76
  ): TreeTypeSet {
54
- const filtered: TreeNodeSchemaIdentifier[] = normalizeAndEvaluateAnnotatedAllowedTypes(
55
- schema,
56
- )
57
- .types.filter((allowedType) => allowedTypeFilter(allowedType, options))
58
- .map((a) => brand(a.type.identifier));
77
+ const filtered: TreeNodeSchemaIdentifier[] = [];
78
+ for (const [type, data] of schema) {
79
+ if (allowedTypeFilter(data, options)) {
80
+ filtered.push(brand<TreeNodeSchemaIdentifier>(type));
81
+ }
82
+ }
59
83
  return new Set(filtered);
60
84
  }
@@ -294,6 +294,7 @@ export class TreeNodeKernel {
294
294
  }
295
295
  }
296
296
 
297
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
297
298
  const kernelEvents = ["childrenChangedAfterBatch", "subtreeChangedAfterBatch"] as const;
298
299
 
299
300
  type KernelEvents = Pick<AnchorEvents, (typeof kernelEvents)[number]>;
@@ -12,10 +12,9 @@ import type { InternalTreeNode, Unhydrated } from "./types.js";
12
12
  import type { UnionToIntersection } from "../../util/index.js";
13
13
  import type { AllowedTypesFullEvaluated, AllowedTypesFull } from "./allowedTypes.js";
14
14
  import type { Context } from "./context.js";
15
- import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
15
+ import type { FieldKey, NodeData } from "../../core/index.js";
16
16
  import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
17
17
  import type { FactoryContent } from "../unhydratedFlexTreeFromInsertable.js";
18
- import type { StoredSchemaGenerationOptions } from "./toStored.js";
19
18
 
20
19
  /**
21
20
  * Schema for a {@link TreeNode} or {@link TreeLeafValue}.
@@ -389,11 +388,6 @@ export interface TreeNodeSchemaPrivateData {
389
388
  * Idempotent initialization function that pre-caches data and can dereference lazy schema references.
390
389
  */
391
390
  idempotentInitialize(): TreeNodeSchemaInitializedData;
392
-
393
- /**
394
- * Converts a the schema into a {@link TreeNodeStoredSchema}.
395
- */
396
- toStored(options: StoredSchemaGenerationOptions): TreeNodeStoredSchema;
397
391
  }
398
392
 
399
393
  /**
@@ -260,7 +260,6 @@ export function isClassBasedSchema(
260
260
  export function createTreeNodeSchemaPrivateData(
261
261
  schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
262
262
  childAllowedTypes: readonly AllowedTypesFull[],
263
- toStored: TreeNodeSchemaPrivateData["toStored"],
264
263
  ): TreeNodeSchemaPrivateData {
265
264
  const schemaValid = schemaAsTreeNodeValid(schema);
266
265
  // Since this closes over the schema, ensure this schema is marked as most derived
@@ -270,7 +269,6 @@ export function createTreeNodeSchemaPrivateData(
270
269
  return {
271
270
  idempotentInitialize: () => schemaValid.oneTimeInitialize().oneTimeInitialized,
272
271
  childAllowedTypes,
273
- toStored,
274
272
  };
275
273
  }
276
274
 
@@ -29,7 +29,7 @@ import type {
29
29
  InsertableTreeNodeFromImplicitAllowedTypes,
30
30
  AllowedTypesFull,
31
31
  } from "./core/index.js";
32
- import { normalizeAllowedTypes } from "./core/index.js";
32
+ import { AnnotatedAllowedTypesInternal, normalizeAllowedTypes } from "./core/index.js";
33
33
 
34
34
  import type { SimpleAllowedTypeAttributes, SimpleFieldSchema } from "./simpleSchema.js";
35
35
  import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
@@ -413,16 +413,7 @@ export class FieldSchemaAlpha<
413
413
  }
414
414
 
415
415
  public get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
416
- const types = this.allowedTypesFull.evaluate().types;
417
- const info = new Map<string, SimpleAllowedTypeAttributes>();
418
-
419
- for (const type of types) {
420
- info.set(type.type.identifier, {
421
- isStaged: type.metadata.stagedSchemaUpgrade !== undefined,
422
- });
423
- }
424
-
425
- return info;
416
+ return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(this.allowedTypesFull);
426
417
  }
427
418
 
428
419
  protected constructor(
@@ -44,7 +44,7 @@ export {
44
44
  type UnannotateAllowedTypesList,
45
45
  type AllowedTypeMetadata,
46
46
  type AnnotatedAllowedTypes,
47
- type SchemaUpgrade,
47
+ SchemaUpgrade,
48
48
  type LazyItem,
49
49
  type FlexList,
50
50
  type FlexListToUnion,
@@ -59,6 +59,8 @@ export {
59
59
  type AllowedTypesFullFromMixed,
60
60
  AnnotatedAllowedTypesInternal,
61
61
  type NumberKeys,
62
+ ExpectStored,
63
+ createSchemaUpgrade,
62
64
  } from "./core/index.js";
63
65
  export { walkFieldSchema } from "./walkFieldSchema.js";
64
66
  export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
@@ -184,7 +186,7 @@ export {
184
186
  KeyEncodingOptions,
185
187
  type TreeParsingOptions,
186
188
  incrementalSummaryHint,
187
- getShouldIncrementallySummarizeAllowedTypes,
189
+ incrementalEncodingPolicyForAllowedTypes,
188
190
  type SchemaFactory_base,
189
191
  } from "./api/index.js";
190
192
  export type {
@@ -283,4 +285,7 @@ export type { LeafSchema } from "./leafNodeSchema.js";
283
285
  export {
284
286
  encodeSimpleSchema,
285
287
  decodeSimpleSchema,
288
+ exportCompatibilitySchemaSnapshot,
289
+ importCompatibilitySchemaSnapshot,
290
+ checkCompatibility,
286
291
  } from "./api/index.js";
@@ -7,7 +7,7 @@ import { assert } from "@fluidframework/core-utils/internal";
7
7
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
  import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
9
9
 
10
- import { LeafNodeStoredSchema, type TreeValue, ValueSchema } from "../core/index.js";
10
+ import { type TreeValue, ValueSchema } from "../core/index.js";
11
11
  import {
12
12
  type FlexTreeNode,
13
13
  isFlexTreeNode,
@@ -64,7 +64,6 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
64
64
  ): FlexContent => leafToFlexContent(data, this, allowedTypes),
65
65
  })),
66
66
  childAllowedTypes: [],
67
- toStored: () => new LeafNodeStoredSchema(this.leafKind),
68
67
  };
69
68
  #initializedData: TreeNodeSchemaInitializedData | undefined;
70
69
 
@@ -45,7 +45,6 @@ import {
45
45
  createTreeNodeSchemaPrivateData,
46
46
  type FlexContent,
47
47
  type TreeNodeSchemaPrivateData,
48
- convertAllowedTypes,
49
48
  withBufferedTreeEvents,
50
49
  AnnotatedAllowedTypesInternal,
51
50
  } from "../../core/index.js";
@@ -66,9 +65,13 @@ import type {
66
65
  ArrayNodePojoEmulationSchema,
67
66
  ArrayNodeSchema,
68
67
  } from "./arrayNodeTypes.js";
69
- import { brand, type JsonCompatibleReadOnlyObject } from "../../../util/index.js";
68
+ import {
69
+ brand,
70
+ validateIndex,
71
+ validateIndexRange,
72
+ type JsonCompatibleReadOnlyObject,
73
+ } from "../../../util/index.js";
70
74
  import { nullSchema } from "../../leafNodeSchema.js";
71
- import { arrayNodeStoredSchema } from "../../toStoredSchema.js";
72
75
  import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
73
76
 
74
77
  /**
@@ -575,6 +578,7 @@ const TreeNodeWithArrayFeatures = (() => {
575
578
  */
576
579
  /* eslint-disable @typescript-eslint/explicit-member-accessibility, @typescript-eslint/no-explicit-any */
577
580
  // prettier-ignore
581
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
578
582
  declare abstract class NodeWithArrayFeatures<Input, T>
579
583
  extends TreeNodeValid<Input>
580
584
  implements Pick<readonly T[], (typeof arrayPrototypeKeys)[number]>
@@ -951,7 +955,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
951
955
  }
952
956
  public insertAt(index: number, ...value: Insertable<T>): void {
953
957
  const field = getSequenceField(this);
954
- validateIndex(index, field, "insertAt", true);
958
+ validateIndex(index, field, "TreeArrayNode.insertAt", true);
955
959
  const content = this.#mapTreesFromFieldData(value);
956
960
  field.editor.insert(index, content);
957
961
  }
@@ -963,32 +967,30 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
963
967
  }
964
968
  public removeAt(index: number): void {
965
969
  const field = getSequenceField(this);
966
- validateIndex(index, field, "removeAt");
970
+ validateIndex(index, field, "TreeArrayNode.removeAt");
967
971
  field.editor.remove(index, 1);
968
972
  }
969
973
  public removeRange(start?: number, end?: number): void {
970
974
  const field = getSequenceField(this);
971
975
  const { length } = field;
972
976
  const removeStart = start ?? 0;
977
+ validateIndex(removeStart, field, "TreeArrayNode.removeRange", true);
978
+
973
979
  const removeEnd = Math.min(length, end ?? length);
974
- validatePositiveIndex(removeStart);
975
- validatePositiveIndex(removeEnd);
976
- if (removeEnd < removeStart) {
977
- // This catches both the case where start is > array.length and when start is > end.
978
- throw new UsageError('Too large of "start" value passed to TreeArrayNode.removeRange.');
979
- }
980
+ validateIndexRange(removeStart, removeEnd, field, "TreeArrayNode.removeRange");
981
+
980
982
  field.editor.remove(removeStart, removeEnd - removeStart);
981
983
  }
982
984
  public moveToStart(sourceIndex: number, source?: ReadonlyArrayNode): void {
983
985
  const sourceArray = source ?? this;
984
986
  const sourceField = getSequenceField(sourceArray);
985
- validateIndex(sourceIndex, sourceField, "moveToStart");
987
+ validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToStart");
986
988
  this.moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);
987
989
  }
988
990
  public moveToEnd(sourceIndex: number, source?: ReadonlyArrayNode): void {
989
991
  const sourceArray = source ?? this;
990
992
  const sourceField = getSequenceField(sourceArray);
991
- validateIndex(sourceIndex, sourceField, "moveToEnd");
993
+ validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToEnd");
992
994
  this.moveRangeToIndex(this.length, sourceIndex, sourceIndex + 1, source);
993
995
  }
994
996
  public moveToIndex(
@@ -999,8 +1001,8 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
999
1001
  const sourceArray = source ?? this;
1000
1002
  const sourceField = getSequenceField(sourceArray);
1001
1003
  const destinationField = getSequenceField(this);
1002
- validateIndex(destinationGap, destinationField, "moveToIndex", true);
1003
- validateIndex(sourceIndex, sourceField, "moveToIndex");
1004
+ validateIndex(destinationGap, destinationField, "TreeArrayNode.moveToIndex", true);
1005
+ validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToIndex");
1004
1006
  this.moveRangeToIndex(destinationGap, sourceIndex, sourceIndex + 1, source);
1005
1007
  }
1006
1008
  public moveRangeToStart(
@@ -1012,7 +1014,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
1012
1014
  sourceStart,
1013
1015
  sourceEnd,
1014
1016
  source ?? getSequenceField(this),
1015
- "moveRangeToStart",
1017
+ "TreeArrayNode.moveRangeToStart",
1016
1018
  );
1017
1019
  this.moveRangeToIndex(0, sourceStart, sourceEnd, source);
1018
1020
  }
@@ -1025,7 +1027,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
1025
1027
  sourceStart,
1026
1028
  sourceEnd,
1027
1029
  source ?? getSequenceField(this),
1028
- "moveRangeToEnd",
1030
+ "TreeArrayNode.moveRangeToEnd",
1029
1031
  );
1030
1032
  this.moveRangeToIndex(this.length, sourceStart, sourceEnd, source);
1031
1033
  }
@@ -1044,8 +1046,13 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
1044
1046
  ).getFieldSchema(EmptyKey).types;
1045
1047
  const sourceField = source !== undefined ? getSequenceField(source) : destinationField;
1046
1048
 
1047
- validateIndex(destinationGap, destinationField, "moveRangeToIndex", true);
1048
- validateIndexRange(sourceStart, sourceEnd, source ?? destinationField, "moveRangeToIndex");
1049
+ validateIndex(destinationGap, destinationField, "TreeArrayNode.moveRangeToIndex", true);
1050
+ validateIndexRange(
1051
+ sourceStart,
1052
+ sourceEnd,
1053
+ source ?? destinationField,
1054
+ "TreeArrayNode.moveRangeToIndex",
1055
+ );
1049
1056
 
1050
1057
  // TODO: determine support for move across different sequence types
1051
1058
  if (sourceField !== destinationField) {
@@ -1282,12 +1289,7 @@ export function arraySchema<
1282
1289
  }
1283
1290
 
1284
1291
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
1285
- return (privateData ??= createTreeNodeSchemaPrivateData(
1286
- this,
1287
- [normalizedTypes],
1288
- (storedOptions) =>
1289
- arrayNodeStoredSchema(convertAllowedTypes(info, storedOptions), persistedMetadata),
1290
- ));
1292
+ return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
1291
1293
  }
1292
1294
  }
1293
1295
 
@@ -1295,56 +1297,6 @@ export function arraySchema<
1295
1297
  return output;
1296
1298
  }
1297
1299
 
1298
- function validateSafeInteger(index: number): void {
1299
- if (!Number.isSafeInteger(index)) {
1300
- throw new UsageError(`Expected a safe integer, got ${index}.`);
1301
- }
1302
- }
1303
-
1304
- function validatePositiveIndex(index: number): void {
1305
- validateSafeInteger(index);
1306
- if (index < 0) {
1307
- throw new UsageError(`Expected non-negative index, got ${index}.`);
1308
- }
1309
- }
1310
-
1311
- function validateIndex(
1312
- index: number,
1313
- array: { readonly length: number },
1314
- methodName: string,
1315
- allowOnePastEnd: boolean = false,
1316
- ): void {
1317
- validatePositiveIndex(index);
1318
- if (allowOnePastEnd) {
1319
- if (index > array.length) {
1320
- throw new UsageError(
1321
- `Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
1322
- );
1323
- }
1324
- } else {
1325
- if (index >= array.length) {
1326
- throw new UsageError(
1327
- `Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
1328
- );
1329
- }
1330
- }
1331
- }
1332
-
1333
- function validateIndexRange(
1334
- startIndex: number,
1335
- endIndex: number,
1336
- array: { readonly length: number },
1337
- methodName: string,
1338
- ): void {
1339
- validateIndex(startIndex, array, methodName, true);
1340
- validateIndex(endIndex, array, methodName, true);
1341
- if (startIndex > endIndex || array.length < endIndex) {
1342
- throw new UsageError(
1343
- `Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
1344
- );
1345
- }
1346
- }
1347
-
1348
1300
  /**
1349
1301
  * Transforms data for a child of an array.
1350
1302
  * @param child - The tree data to be transformed.
@@ -1375,6 +1327,7 @@ function arrayChildToFlexTree(
1375
1327
  */
1376
1328
  function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): FlexContent {
1377
1329
  if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
1330
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
1378
1331
  throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
1379
1332
  }
1380
1333
 
@@ -7,7 +7,6 @@ import { assert, Lazy } from "@fluidframework/core-utils/internal";
7
7
  import { UsageError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  import {
10
- FieldKinds,
11
10
  isTreeValue,
12
11
  type FlexibleNodeContent,
13
12
  type FlexTreeNode,
@@ -42,7 +41,6 @@ import {
42
41
  createTreeNodeSchemaPrivateData,
43
42
  type FlexContent,
44
43
  type TreeNodeSchemaPrivateData,
45
- convertAllowedTypes,
46
44
  AnnotatedAllowedTypesInternal,
47
45
  } from "../../core/index.js";
48
46
  import {
@@ -343,19 +341,7 @@ export function mapSchema<
343
341
  }
344
342
 
345
343
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
346
- return (privateData ??= createTreeNodeSchemaPrivateData(
347
- this,
348
- [normalizedTypes],
349
- (storedOptions) =>
350
- new MapNodeStoredSchema(
351
- {
352
- kind: FieldKinds.optional.identifier,
353
- types: convertAllowedTypes(info, storedOptions),
354
- persistedMetadata,
355
- },
356
- persistedMetadata,
357
- ),
358
- ));
344
+ return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
359
345
  }
360
346
  }
361
347
  const schemaErased: MapNodeCustomizableSchema<
@@ -86,7 +86,7 @@ import {
86
86
  type FactoryContentObject,
87
87
  type InsertableContent,
88
88
  } from "../../unhydratedFlexTreeFromInsertable.js";
89
- import { convertField, convertFieldKind } from "../../toStoredSchema.js";
89
+ import { convertFieldKind } from "../../toStoredSchema.js";
90
90
  import type { ObjectSchemaOptionsAlpha } from "../../api/index.js";
91
91
 
92
92
  /**
@@ -99,7 +99,7 @@ import type { ObjectSchemaOptionsAlpha } from "../../api/index.js";
99
99
  */
100
100
  export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> =
101
101
  RestrictiveStringRecord<ImplicitFieldSchema> extends T
102
- ? // eslint-disable-next-line @typescript-eslint/no-empty-object-type, @typescript-eslint/ban-types
102
+ ? // eslint-disable-next-line @typescript-eslint/no-empty-object-type
103
103
  {}
104
104
  : {
105
105
  -readonly [Property in keyof T]: Property extends string
@@ -585,20 +585,6 @@ export function objectSchema<
585
585
  return (privateData ??= createTreeNodeSchemaPrivateData(
586
586
  this,
587
587
  Array.from(CustomObjectNode.fields.values(), (schema) => schema.allowedTypesFull),
588
- (storedOptions) => {
589
- const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
590
- for (const fieldSchema of flexKeyMap.values()) {
591
- assert(
592
- fieldSchema.schema instanceof FieldSchemaAlpha,
593
- 0xc19 /* Expected FieldSchemaAlpha */,
594
- );
595
- fields.set(
596
- brand(fieldSchema.storedKey),
597
- convertField(fieldSchema.schema, storedOptions),
598
- );
599
- }
600
- return new ObjectNodeStoredSchema(fields, nodeOptions.persistedMetadata);
601
- },
602
588
  ));
603
589
  }
604
590
  }
@@ -650,9 +636,8 @@ function assertUniqueKeys<
650
636
  }
651
637
 
652
638
  /**
653
- * {@link TreeNodeSchemaInitializedData.toFlexContent} for Map nodes.
639
+ * {@link TreeNodeSchemaInitializedData.toFlexContent} for object nodes.
654
640
  *
655
- * Transforms data under an Object schema.
656
641
  * @param data - The tree data to be transformed. Must be a Record-like object.
657
642
  * @param schema - The schema to comply with.
658
643
  */
@@ -666,6 +651,7 @@ function objectToFlexContent(
666
651
  Symbol.iterator in data ||
667
652
  isFluidHandle(data)
668
653
  ) {
654
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
669
655
  throw new UsageError(`Input data is incompatible with Object schema: ${data}`);
670
656
  }
671
657
 
@@ -31,7 +31,6 @@ import {
31
31
  type FlexContent,
32
32
  CompatibilityLevel,
33
33
  type TreeNodeSchemaPrivateData,
34
- convertAllowedTypes,
35
34
  AnnotatedAllowedTypesInternal,
36
35
  } from "../../core/index.js";
37
36
  import { getTreeNodeSchemaInitializedData } from "../../createContext.js";
@@ -50,7 +49,6 @@ import type {
50
49
  TreeRecordNode,
51
50
  } from "./recordNodeTypes.js";
52
51
  import {
53
- FieldKinds,
54
52
  isTreeValue,
55
53
  type FlexTreeNode,
56
54
  type FlexTreeOptionalField,
@@ -388,19 +386,7 @@ export function recordSchema<
388
386
  }
389
387
 
390
388
  public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
391
- return (privateData ??= createTreeNodeSchemaPrivateData(
392
- this,
393
- [normalizedTypes],
394
- (storedOptions) =>
395
- new MapNodeStoredSchema(
396
- {
397
- kind: FieldKinds.optional.identifier,
398
- types: convertAllowedTypes(info, storedOptions),
399
- persistedMetadata,
400
- },
401
- persistedMetadata,
402
- ),
403
- ));
389
+ return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
404
390
  }
405
391
  }
406
392
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  import type { ValueSchema } from "../core/index.js";
7
7
  import type { JsonCompatibleReadOnlyObject } from "../util/index.js";
8
- import type { NodeKind, SimpleNodeSchemaBase } from "./core/index.js";
8
+ import type { NodeKind, SchemaUpgrade, SimpleNodeSchemaBase } from "./core/index.js";
9
9
  import type { FieldKind, FieldSchemaMetadata } from "./fieldSchema.js";
10
10
 
11
11
  /*
@@ -39,6 +39,15 @@ export interface SimpleNodeSchemaBaseAlpha<
39
39
  readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined;
40
40
  }
41
41
 
42
+ /**
43
+ * {@link AllowedTypes} for a location in the tree, expressed for use in the Simple Schema layer of abstraction.
44
+ *
45
+ * @remarks
46
+ * Refers to the types by identifier.
47
+ * A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
48
+ */
49
+ export type SimpleAllowedTypes = ReadonlyMap<string, SimpleAllowedTypeAttributes>;
50
+
42
51
  /**
43
52
  * A {@link SimpleNodeSchema} for an object node.
44
53
  *
@@ -179,13 +188,17 @@ export type SimpleNodeSchema =
179
188
  */
180
189
  export interface SimpleAllowedTypeAttributes {
181
190
  /**
182
- * True if this schema is included as a {@link SchemaStaticsBeta.staged | staged} schema upgrade,
191
+ * {@link SchemaUpgrade} if this schema is included as a {@link SchemaStaticsBeta.staged | staged} schema upgrade,
183
192
  * allowing the view schema be compatible with stored schema with (post upgrade) or without it (pre-upgrade).
184
193
  * New documents and schema upgrades will omit any staged schema.
185
194
  *
186
195
  * Undefined if derived from a stored schema.
196
+ *
197
+ * @privateRemarks
198
+ * The false and undefined cases here are a bit odd.
199
+ * This API should be reevaluated before stabilizing.
187
200
  */
188
- readonly isStaged: boolean | undefined;
201
+ readonly isStaged: false | SchemaUpgrade | undefined;
189
202
  }
190
203
 
191
204
  /**