@fluidframework/tree 2.41.0-337492 → 2.41.0-338401

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 (491) hide show
  1. package/api-report/tree.alpha.api.md +165 -5
  2. package/dist/alpha.d.ts +2 -0
  3. package/dist/codec/codec.d.ts +42 -7
  4. package/dist/codec/codec.d.ts.map +1 -1
  5. package/dist/codec/codec.js +50 -8
  6. package/dist/codec/codec.js.map +1 -1
  7. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  8. package/dist/core/change-family/editBuilder.js.map +1 -1
  9. package/dist/core/forest/forest.d.ts.map +1 -1
  10. package/dist/core/forest/forest.js.map +1 -1
  11. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  12. package/dist/core/schema-stored/schema.js.map +1 -1
  13. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  14. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  15. package/dist/core/schema-stored/storedSchemaRepository.js +1 -1
  16. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  17. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  18. package/dist/core/tree/anchorSet.js +2 -2
  19. package/dist/core/tree/anchorSet.js.map +1 -1
  20. package/dist/core/tree/chunk.d.ts.map +1 -1
  21. package/dist/core/tree/chunk.js.map +1 -1
  22. package/dist/core/tree/delta.d.ts.map +1 -1
  23. package/dist/core/tree/delta.js.map +1 -1
  24. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  25. package/dist/core/tree/deltaUtil.js.map +1 -1
  26. package/dist/core/tree/detachedFieldIndex.d.ts +1 -1
  27. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  29. package/dist/core/tree/detachedFieldIndexCodec.d.ts +1 -1
  30. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexCodec.js +1 -1
  32. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  33. package/dist/core/tree/pathTree.d.ts.map +1 -1
  34. package/dist/core/tree/pathTree.js.map +1 -1
  35. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  36. package/dist/core/tree/treeTextFormat.js.map +1 -1
  37. package/dist/core/tree/visitDelta.d.ts +1 -1
  38. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  39. package/dist/core/tree/visitDelta.js.map +1 -1
  40. package/dist/core/tree/visitorUtils.d.ts +2 -2
  41. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  42. package/dist/core/tree/visitorUtils.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
  44. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/chunkTree.js +1 -1
  46. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  48. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  50. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  52. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  54. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  55. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  56. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  57. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
  60. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -1
  62. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  66. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  69. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  70. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  72. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  73. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
  74. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  75. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  76. package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  77. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  78. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  79. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  81. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  82. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  83. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  84. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +4 -4
  85. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  86. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
  87. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  88. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  89. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  90. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  91. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  92. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  93. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  94. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  95. package/dist/feature-libraries/default-schema/index.js +2 -1
  96. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  97. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  98. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  99. package/dist/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
  100. package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  101. package/dist/feature-libraries/default-schema/schemaChecker.js +35 -26
  102. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  103. package/dist/feature-libraries/flex-tree/context.d.ts +16 -14
  104. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  105. package/dist/feature-libraries/flex-tree/context.js +12 -18
  106. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  107. package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
  108. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  109. package/dist/feature-libraries/flex-tree/index.js +1 -2
  110. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  111. package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -5
  112. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  113. package/dist/feature-libraries/flex-tree/lazyField.js +2 -16
  114. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  115. package/dist/feature-libraries/flex-tree/utilities.d.ts +6 -6
  116. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  117. package/dist/feature-libraries/flex-tree/utilities.js +6 -7
  118. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  119. package/dist/feature-libraries/index.d.ts +3 -3
  120. package/dist/feature-libraries/index.d.ts.map +1 -1
  121. package/dist/feature-libraries/index.js +3 -2
  122. package/dist/feature-libraries/index.js.map +1 -1
  123. package/dist/feature-libraries/initializeForest.d.ts.map +1 -1
  124. package/dist/feature-libraries/initializeForest.js.map +1 -1
  125. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  126. package/dist/feature-libraries/treeCursorUtils.js +1 -1
  127. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  128. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  129. package/dist/feature-libraries/valueUtilities.js +6 -6
  130. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  131. package/dist/jsonDomainSchema.d.ts.map +1 -1
  132. package/dist/jsonDomainSchema.js.map +1 -1
  133. package/dist/packageVersion.d.ts +1 -1
  134. package/dist/packageVersion.js +1 -1
  135. package/dist/packageVersion.js.map +1 -1
  136. package/dist/serializableDomainSchema.d.ts.map +1 -1
  137. package/dist/serializableDomainSchema.js.map +1 -1
  138. package/dist/shared-tree/checkoutFlexTreeView.d.ts +7 -3
  139. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  140. package/dist/shared-tree/checkoutFlexTreeView.js +11 -2
  141. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  142. package/dist/shared-tree/schematizingTreeView.d.ts +3 -0
  143. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  144. package/dist/shared-tree/schematizingTreeView.js +10 -5
  145. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  146. package/dist/shared-tree/treeAlpha.d.ts +9 -4
  147. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  148. package/dist/shared-tree/treeAlpha.js +20 -8
  149. package/dist/shared-tree/treeAlpha.js.map +1 -1
  150. package/dist/sharedTreeAttributes.d.ts.map +1 -1
  151. package/dist/sharedTreeAttributes.js.map +1 -1
  152. package/dist/simple-tree/api/create.d.ts +5 -1
  153. package/dist/simple-tree/api/create.d.ts.map +1 -1
  154. package/dist/simple-tree/api/create.js +11 -12
  155. package/dist/simple-tree/api/create.js.map +1 -1
  156. package/dist/simple-tree/api/index.d.ts +3 -3
  157. package/dist/simple-tree/api/index.d.ts.map +1 -1
  158. package/dist/simple-tree/api/index.js +4 -2
  159. package/dist/simple-tree/api/index.js.map +1 -1
  160. package/dist/simple-tree/api/storedSchema.d.ts +1 -8
  161. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  162. package/dist/simple-tree/api/storedSchema.js +3 -14
  163. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  164. package/dist/simple-tree/api/treeNodeApi.d.ts +8 -0
  165. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  166. package/dist/simple-tree/api/treeNodeApi.js +3 -1
  167. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  168. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  169. package/dist/simple-tree/arrayNode.js +3 -9
  170. package/dist/simple-tree/arrayNode.js.map +1 -1
  171. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  172. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  173. package/dist/simple-tree/core/treeNodeKernel.d.ts +5 -17
  174. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  175. package/dist/simple-tree/core/treeNodeKernel.js +17 -48
  176. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  177. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
  178. package/dist/simple-tree/core/unhydratedFlexTree.js +4 -4
  179. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  180. package/dist/simple-tree/getTreeNodeForField.d.ts +12 -0
  181. package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  182. package/dist/simple-tree/getTreeNodeForField.js +39 -0
  183. package/dist/simple-tree/getTreeNodeForField.js.map +1 -0
  184. package/dist/simple-tree/index.d.ts +3 -2
  185. package/dist/simple-tree/index.d.ts.map +1 -1
  186. package/dist/simple-tree/index.js +10 -6
  187. package/dist/simple-tree/index.js.map +1 -1
  188. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  189. package/dist/simple-tree/mapNode.js +21 -24
  190. package/dist/simple-tree/mapNode.js.map +1 -1
  191. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  192. package/dist/simple-tree/objectNode.js +5 -7
  193. package/dist/simple-tree/objectNode.js.map +1 -1
  194. package/dist/simple-tree/prepareForInsertion.d.ts +42 -0
  195. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -0
  196. package/dist/simple-tree/prepareForInsertion.js +166 -0
  197. package/dist/simple-tree/prepareForInsertion.js.map +1 -0
  198. package/dist/simple-tree/toMapTree.d.ts +4 -9
  199. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  200. package/dist/simple-tree/toMapTree.js +4 -23
  201. package/dist/simple-tree/toMapTree.js.map +1 -1
  202. package/dist/tableSchema.d.ts +201 -104
  203. package/dist/tableSchema.d.ts.map +1 -1
  204. package/dist/tableSchema.js +155 -58
  205. package/dist/tableSchema.js.map +1 -1
  206. package/dist/treeFactory.d.ts.map +1 -1
  207. package/dist/treeFactory.js +2 -2
  208. package/dist/treeFactory.js.map +1 -1
  209. package/lib/alpha.d.ts +2 -0
  210. package/lib/codec/codec.d.ts +42 -7
  211. package/lib/codec/codec.d.ts.map +1 -1
  212. package/lib/codec/codec.js +50 -8
  213. package/lib/codec/codec.js.map +1 -1
  214. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  215. package/lib/core/change-family/editBuilder.js.map +1 -1
  216. package/lib/core/forest/forest.d.ts.map +1 -1
  217. package/lib/core/forest/forest.js.map +1 -1
  218. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  219. package/lib/core/schema-stored/schema.js.map +1 -1
  220. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  221. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  222. package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
  223. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  224. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  225. package/lib/core/tree/anchorSet.js +2 -2
  226. package/lib/core/tree/anchorSet.js.map +1 -1
  227. package/lib/core/tree/chunk.d.ts.map +1 -1
  228. package/lib/core/tree/chunk.js.map +1 -1
  229. package/lib/core/tree/delta.d.ts.map +1 -1
  230. package/lib/core/tree/delta.js.map +1 -1
  231. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  232. package/lib/core/tree/deltaUtil.js.map +1 -1
  233. package/lib/core/tree/detachedFieldIndex.d.ts +1 -1
  234. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  235. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  236. package/lib/core/tree/detachedFieldIndexCodec.d.ts +1 -1
  237. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  238. package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
  239. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  240. package/lib/core/tree/pathTree.d.ts.map +1 -1
  241. package/lib/core/tree/pathTree.js.map +1 -1
  242. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  243. package/lib/core/tree/treeTextFormat.js.map +1 -1
  244. package/lib/core/tree/visitDelta.d.ts +1 -1
  245. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  246. package/lib/core/tree/visitDelta.js.map +1 -1
  247. package/lib/core/tree/visitorUtils.d.ts +2 -2
  248. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  249. package/lib/core/tree/visitorUtils.js.map +1 -1
  250. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
  251. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  252. package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -1
  253. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  254. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  255. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  256. package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  257. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  258. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  259. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  260. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  261. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  262. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  263. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  264. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  265. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  266. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
  267. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  268. package/lib/feature-libraries/chunked-forest/codec/codecs.js +10 -0
  269. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  270. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  271. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  272. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  273. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  274. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  275. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  276. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  277. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  278. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  279. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  280. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
  281. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  282. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  283. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  284. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  285. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  286. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  287. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  288. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  289. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  290. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  291. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  292. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  293. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
  294. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  295. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  296. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  297. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  298. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  299. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  300. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  301. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  302. package/lib/feature-libraries/default-schema/index.js +1 -1
  303. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  304. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  305. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  306. package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
  307. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  308. package/lib/feature-libraries/default-schema/schemaChecker.js +33 -25
  309. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  310. package/lib/feature-libraries/flex-tree/context.d.ts +16 -14
  311. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  312. package/lib/feature-libraries/flex-tree/context.js +11 -16
  313. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  314. package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
  315. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  316. package/lib/feature-libraries/flex-tree/index.js +1 -1
  317. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  318. package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -5
  319. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  320. package/lib/feature-libraries/flex-tree/lazyField.js +1 -14
  321. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  322. package/lib/feature-libraries/flex-tree/utilities.d.ts +6 -6
  323. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  324. package/lib/feature-libraries/flex-tree/utilities.js +6 -7
  325. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  326. package/lib/feature-libraries/index.d.ts +3 -3
  327. package/lib/feature-libraries/index.d.ts.map +1 -1
  328. package/lib/feature-libraries/index.js +3 -3
  329. package/lib/feature-libraries/index.js.map +1 -1
  330. package/lib/feature-libraries/initializeForest.d.ts.map +1 -1
  331. package/lib/feature-libraries/initializeForest.js.map +1 -1
  332. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  333. package/lib/feature-libraries/treeCursorUtils.js +1 -1
  334. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  335. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  336. package/lib/feature-libraries/valueUtilities.js +1 -1
  337. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  338. package/lib/jsonDomainSchema.d.ts.map +1 -1
  339. package/lib/jsonDomainSchema.js.map +1 -1
  340. package/lib/packageVersion.d.ts +1 -1
  341. package/lib/packageVersion.js +1 -1
  342. package/lib/packageVersion.js.map +1 -1
  343. package/lib/serializableDomainSchema.d.ts.map +1 -1
  344. package/lib/serializableDomainSchema.js.map +1 -1
  345. package/lib/shared-tree/checkoutFlexTreeView.d.ts +7 -3
  346. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  347. package/lib/shared-tree/checkoutFlexTreeView.js +12 -3
  348. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  349. package/lib/shared-tree/schematizingTreeView.d.ts +3 -0
  350. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  351. package/lib/shared-tree/schematizingTreeView.js +11 -6
  352. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  353. package/lib/shared-tree/treeAlpha.d.ts +9 -4
  354. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  355. package/lib/shared-tree/treeAlpha.js +22 -10
  356. package/lib/shared-tree/treeAlpha.js.map +1 -1
  357. package/lib/sharedTreeAttributes.d.ts.map +1 -1
  358. package/lib/sharedTreeAttributes.js.map +1 -1
  359. package/lib/simple-tree/api/create.d.ts +5 -1
  360. package/lib/simple-tree/api/create.d.ts.map +1 -1
  361. package/lib/simple-tree/api/create.js +9 -11
  362. package/lib/simple-tree/api/create.js.map +1 -1
  363. package/lib/simple-tree/api/index.d.ts +3 -3
  364. package/lib/simple-tree/api/index.d.ts.map +1 -1
  365. package/lib/simple-tree/api/index.js +3 -3
  366. package/lib/simple-tree/api/index.js.map +1 -1
  367. package/lib/simple-tree/api/storedSchema.d.ts +1 -8
  368. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  369. package/lib/simple-tree/api/storedSchema.js +2 -12
  370. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  371. package/lib/simple-tree/api/treeNodeApi.d.ts +8 -0
  372. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  373. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  374. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  375. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  376. package/lib/simple-tree/arrayNode.js +4 -10
  377. package/lib/simple-tree/arrayNode.js.map +1 -1
  378. package/lib/simple-tree/core/getOrCreateNode.js +2 -2
  379. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  380. package/lib/simple-tree/core/treeNodeKernel.d.ts +5 -17
  381. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  382. package/lib/simple-tree/core/treeNodeKernel.js +16 -47
  383. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  384. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
  385. package/lib/simple-tree/core/unhydratedFlexTree.js +4 -4
  386. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  387. package/lib/simple-tree/getTreeNodeForField.d.ts +12 -0
  388. package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  389. package/lib/simple-tree/getTreeNodeForField.js +35 -0
  390. package/lib/simple-tree/getTreeNodeForField.js.map +1 -0
  391. package/lib/simple-tree/index.d.ts +3 -2
  392. package/lib/simple-tree/index.d.ts.map +1 -1
  393. package/lib/simple-tree/index.js +3 -2
  394. package/lib/simple-tree/index.js.map +1 -1
  395. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  396. package/lib/simple-tree/mapNode.js +3 -6
  397. package/lib/simple-tree/mapNode.js.map +1 -1
  398. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  399. package/lib/simple-tree/objectNode.js +4 -6
  400. package/lib/simple-tree/objectNode.js.map +1 -1
  401. package/lib/simple-tree/prepareForInsertion.d.ts +42 -0
  402. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -0
  403. package/lib/simple-tree/prepareForInsertion.js +160 -0
  404. package/lib/simple-tree/prepareForInsertion.js.map +1 -0
  405. package/lib/simple-tree/toMapTree.d.ts +4 -9
  406. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  407. package/lib/simple-tree/toMapTree.js +4 -22
  408. package/lib/simple-tree/toMapTree.js.map +1 -1
  409. package/lib/tableSchema.d.ts +201 -104
  410. package/lib/tableSchema.d.ts.map +1 -1
  411. package/lib/tableSchema.js +156 -59
  412. package/lib/tableSchema.js.map +1 -1
  413. package/lib/treeFactory.d.ts.map +1 -1
  414. package/lib/treeFactory.js +2 -2
  415. package/lib/treeFactory.js.map +1 -1
  416. package/lib/tsdoc-metadata.json +1 -1
  417. package/package.json +25 -25
  418. package/src/codec/codec.ts +54 -8
  419. package/src/core/change-family/editBuilder.ts +1 -0
  420. package/src/core/forest/forest.ts +1 -1
  421. package/src/core/schema-stored/schema.ts +2 -0
  422. package/src/core/schema-stored/storedSchemaRepository.ts +2 -2
  423. package/src/core/tree/anchorSet.ts +4 -4
  424. package/src/core/tree/chunk.ts +2 -1
  425. package/src/core/tree/delta.ts +1 -0
  426. package/src/core/tree/deltaUtil.ts +1 -1
  427. package/src/core/tree/detachedFieldIndex.ts +1 -1
  428. package/src/core/tree/detachedFieldIndexCodec.ts +2 -2
  429. package/src/core/tree/pathTree.ts +1 -1
  430. package/src/core/tree/treeTextFormat.ts +1 -0
  431. package/src/core/tree/visitDelta.ts +1 -1
  432. package/src/core/tree/visitorUtils.ts +3 -2
  433. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  434. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  435. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -5
  436. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
  437. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -0
  438. package/src/feature-libraries/chunked-forest/codec/codecs.ts +15 -1
  439. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -1
  440. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -0
  441. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +1 -1
  442. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +1 -1
  443. package/src/feature-libraries/chunked-forest/emptyChunk.ts +1 -0
  444. package/src/feature-libraries/chunked-forest/index.ts +1 -0
  445. package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
  446. package/src/feature-libraries/chunked-forest/uniformChunk.ts +2 -3
  447. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
  448. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
  449. package/src/feature-libraries/default-schema/index.ts +6 -1
  450. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +1 -0
  451. package/src/feature-libraries/default-schema/schemaChecker.ts +37 -26
  452. package/src/feature-libraries/flex-tree/context.ts +18 -20
  453. package/src/feature-libraries/flex-tree/index.ts +0 -1
  454. package/src/feature-libraries/flex-tree/lazyField.ts +2 -14
  455. package/src/feature-libraries/flex-tree/utilities.ts +8 -8
  456. package/src/feature-libraries/index.ts +2 -1
  457. package/src/feature-libraries/initializeForest.ts +1 -1
  458. package/src/feature-libraries/treeCursorUtils.ts +1 -1
  459. package/src/feature-libraries/valueUtilities.ts +1 -1
  460. package/src/jsonDomainSchema.ts +0 -1
  461. package/src/packageVersion.ts +1 -1
  462. package/src/serializableDomainSchema.ts +1 -0
  463. package/src/shared-tree/checkoutFlexTreeView.ts +10 -6
  464. package/src/shared-tree/schematizingTreeView.ts +11 -12
  465. package/src/shared-tree/treeAlpha.ts +50 -13
  466. package/src/sharedTreeAttributes.ts +1 -0
  467. package/src/simple-tree/api/create.ts +17 -16
  468. package/src/simple-tree/api/index.ts +13 -3
  469. package/src/simple-tree/api/storedSchema.ts +2 -19
  470. package/src/simple-tree/api/treeNodeApi.ts +2 -2
  471. package/src/simple-tree/arrayNode.ts +9 -20
  472. package/src/simple-tree/core/getOrCreateNode.ts +2 -2
  473. package/src/simple-tree/core/treeNodeKernel.ts +22 -53
  474. package/src/simple-tree/core/unhydratedFlexTree.ts +4 -4
  475. package/src/simple-tree/getTreeNodeForField.ts +46 -0
  476. package/src/simple-tree/index.ts +8 -5
  477. package/src/simple-tree/mapNode.ts +8 -12
  478. package/src/simple-tree/objectNode.ts +3 -12
  479. package/src/simple-tree/prepareForInsertion.ts +276 -0
  480. package/src/simple-tree/toMapTree.ts +3 -27
  481. package/src/tableSchema.ts +351 -138
  482. package/src/treeFactory.ts +2 -4
  483. package/dist/simple-tree/proxies.d.ts +0 -23
  484. package/dist/simple-tree/proxies.d.ts.map +0 -1
  485. package/dist/simple-tree/proxies.js +0 -135
  486. package/dist/simple-tree/proxies.js.map +0 -1
  487. package/lib/simple-tree/proxies.d.ts +0 -23
  488. package/lib/simple-tree/proxies.d.ts.map +0 -1
  489. package/lib/simple-tree/proxies.js +0 -130
  490. package/lib/simple-tree/proxies.js.map +0 -1
  491. package/src/simple-tree/proxies.ts +0 -191
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { TaggedChange } from "../rebase/index.js";
7
+
7
8
  import type { ChangeFamily, ChangeFamilyEditor } from "./changeFamily.js";
8
9
 
9
10
  export abstract class EditBuilder<TChange> implements ChangeFamilyEditor {
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import type { Listenable } from "@fluidframework/core-interfaces/internal";
6
7
  import { assert } from "@fluidframework/core-utils/internal";
7
8
 
8
- import type { Listenable } from "@fluidframework/core-interfaces/internal";
9
9
  import type { FieldKey, TreeStoredSchemaSubscription } from "../schema-stored/index.js";
10
10
  import {
11
11
  type Anchor,
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import { DiscriminatedUnionDispatcher } from "../../codec/index.js";
8
9
  import { type MakeNominal, brand, invertMap } from "../../util/index.js";
10
+
9
11
  import {
10
12
  type FieldKey,
11
13
  type FieldKindIdentifier,
@@ -3,10 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { createEmitter } from "@fluid-internal/client-utils";
7
+ import type { Listenable } from "@fluidframework/core-interfaces/internal";
6
8
  import { BTree } from "@tylerbu/sorted-btree-es6";
7
9
 
8
- import type { Listenable } from "@fluidframework/core-interfaces/internal";
9
- import { createEmitter } from "@fluid-internal/client-utils";
10
10
  import { compareStrings } from "../../util/index.js";
11
11
 
12
12
  import type { TreeNodeSchemaIdentifier } from "./formatV1.js";
@@ -5,10 +5,10 @@
5
5
 
6
6
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
7
 
8
+ import { createEmitter } from "@fluid-internal/client-utils";
9
+ import type { Listenable } from "@fluidframework/core-interfaces/internal";
8
10
  import { assert, fail } from "@fluidframework/core-utils/internal";
9
11
 
10
- import type { Listenable } from "@fluidframework/core-interfaces/internal";
11
- import { createEmitter } from "@fluid-internal/client-utils";
12
12
  import {
13
13
  type Brand,
14
14
  type BrandedKey,
@@ -22,7 +22,9 @@ import {
22
22
  } from "../../util/index.js";
23
23
  import type { FieldKey } from "../schema-stored/index.js";
24
24
 
25
+ import type { ITreeCursorSynchronous } from "./cursor.js";
25
26
  import type * as Delta from "./delta.js";
27
+ import { offsetDetachId } from "./deltaUtil.js";
26
28
  import {
27
29
  isDetachedUpPathRoot,
28
30
  type INormalizedUpPath,
@@ -33,8 +35,6 @@ import {
33
35
  } from "./pathTree.js";
34
36
  import { EmptyKey } from "./types.js";
35
37
  import type { DeltaVisitor } from "./visitDelta.js";
36
- import { offsetDetachId } from "./deltaUtil.js";
37
- import type { ITreeCursorSynchronous } from "./cursor.js";
38
38
 
39
39
  /**
40
40
  * A way to refer to a particular tree location within an {@link AnchorSet}.
@@ -7,12 +7,13 @@ import { assert } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import type { ReferenceCounted } from "../../util/index.js";
9
9
  import type { FieldKey } from "../schema-stored/index.js";
10
- import { rootFieldKey } from "./types.js";
10
+
11
11
  import {
12
12
  CursorLocationType,
13
13
  type ITreeCursor,
14
14
  type ITreeCursorSynchronous,
15
15
  } from "./cursor.js";
16
+ import { rootFieldKey } from "./types.js";
16
17
 
17
18
  /**
18
19
  * Contiguous part of the tree which get stored together in some data format.
@@ -5,6 +5,7 @@
5
5
 
6
6
  import type { RevisionTag } from "../rebase/index.js";
7
7
  import type { FieldKey } from "../schema-stored/index.js";
8
+
8
9
  import type { TreeChunk } from "./chunk.js";
9
10
 
10
11
  /**
@@ -5,8 +5,8 @@
5
5
 
6
6
  import type { Mutable } from "../../util/index.js";
7
7
  import type { FieldKey } from "../schema-stored/index.js";
8
- import type { TreeChunk } from "./chunk.js";
9
8
 
9
+ import type { TreeChunk } from "./chunk.js";
10
10
  import type { DetachedNodeId, FieldChanges, Root } from "./delta.js";
11
11
  import { rootFieldKey } from "./types.js";
12
12
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
8
 
8
9
  import { type ICodecOptions, type IJsonCodec, noopValidator } from "../../codec/index.js";
9
10
  import {
@@ -31,7 +32,6 @@ import type {
31
32
  Major,
32
33
  Minor,
33
34
  } from "./detachedFieldIndexTypes.js";
34
- import type { IIdCompressor } from "@fluidframework/id-compressor";
35
35
 
36
36
  /**
37
37
  * The tree index records detached field IDs and associates them with a change atom ID.
@@ -4,12 +4,14 @@
4
4
  */
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
8
 
8
9
  import {
9
10
  type ICodecOptions,
10
11
  type IJsonCodec,
11
12
  makeVersionedValidatedCodec,
12
13
  } from "../../codec/index.js";
14
+ import { hasSingle } from "../../util/index.js";
13
15
  import type { EncodedRevisionTag, RevisionTagCodec, RevisionTag } from "../rebase/index.js";
14
16
 
15
17
  import {
@@ -23,8 +25,6 @@ import type {
23
25
  DetachedFieldSummaryData,
24
26
  Major,
25
27
  } from "./detachedFieldIndexTypes.js";
26
- import type { IIdCompressor } from "@fluidframework/id-compressor";
27
- import { hasSingle } from "../../util/index.js";
28
28
 
29
29
  class MajorCodec implements IJsonCodec<Major> {
30
30
  public constructor(
@@ -4,8 +4,8 @@
4
4
  */
5
5
 
6
6
  import type { FieldKey } from "../schema-stored/index.js";
7
- import type { DetachedNodeId } from "./delta.js";
8
7
 
8
+ import type { DetachedNodeId } from "./delta.js";
9
9
  import { type DetachedField, keyAsDetachedField } from "./types.js";
10
10
 
11
11
  /**
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import type { FieldKey } from "../schema-stored/index.js";
8
9
 
9
10
  import type { NodeData } from "./types.js";
@@ -6,6 +6,7 @@
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import { type NestedMap, setInNestedMap, tryGetFromNestedMap } from "../../util/index.js";
9
+ import type { RevisionTag, TreeChunk } from "../index.js";
9
10
  import type { FieldKey } from "../schema-stored/index.js";
10
11
 
11
12
  import { mapCursorField, type ITreeCursorSynchronous } from "./cursor.js";
@@ -14,7 +15,6 @@ import { areDetachedNodeIdsEqual, offsetDetachId } from "./deltaUtil.js";
14
15
  import type { DetachedFieldIndex } from "./detachedFieldIndex.js";
15
16
  import type { ForestRootId, Major, Minor } from "./detachedFieldIndexTypes.js";
16
17
  import type { NodeIndex, PlaceIndex, Range } from "./pathTree.js";
17
- import type { RevisionTag, TreeChunk } from "../index.js";
18
18
 
19
19
  /**
20
20
  * Implementation notes:
@@ -3,18 +3,19 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
+
6
8
  import type { ICodecOptions } from "../../codec/index.js";
7
9
  import { type IdAllocator, idAllocatorFromMaxId } from "../../util/index.js";
8
10
  import type { RevisionTag, RevisionTagCodec } from "../rebase/index.js";
9
11
  import type { FieldKey } from "../schema-stored/index.js";
10
12
 
13
+ import type { ITreeCursorSynchronous } from "./cursor.js";
11
14
  import type { DetachedNodeId, Root } from "./delta.js";
12
15
  import { DetachedFieldIndex } from "./detachedFieldIndex.js";
13
16
  import type { ForestRootId } from "./detachedFieldIndexTypes.js";
14
17
  import type { PlaceIndex, Range } from "./pathTree.js";
15
18
  import { type DeltaVisitor, visitDelta } from "./visitDelta.js";
16
- import type { IIdCompressor } from "@fluidframework/id-compressor";
17
- import type { ITreeCursorSynchronous } from "./cursor.js";
18
19
 
19
20
  export function makeDetachedFieldIndex(
20
21
  prefix: string = "Temp",
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, debugAssert, oob, fail } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
8
 
8
9
  import {
9
10
  CursorLocationType,
@@ -26,12 +27,11 @@ import {
26
27
  } from "../../core/index.js";
27
28
  import { getOrCreate } from "../../util/index.js";
28
29
  import type { FullSchemaPolicy } from "../modular-schema/index.js";
30
+ import { isStableNodeIdentifier } from "../node-identifier/index.js";
29
31
 
30
32
  import { BasicChunk } from "./basicChunk.js";
31
33
  import { SequenceChunk } from "./sequenceChunk.js";
32
34
  import { type FieldShape, TreeShape, UniformChunk } from "./uniformChunk.js";
33
- import { isStableNodeIdentifier } from "../node-identifier/index.js";
34
- import type { IIdCompressor } from "@fluidframework/id-compressor";
35
35
 
36
36
  export interface Disposable {
37
37
  /**
@@ -3,9 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, oob, fail } from "@fluidframework/core-utils/internal";
7
- import type { Listenable } from "@fluidframework/core-interfaces";
8
6
  import { createEmitter } from "@fluid-internal/client-utils";
7
+ import type { Listenable } from "@fluidframework/core-interfaces";
8
+ import { assert, oob, fail } from "@fluidframework/core-utils/internal";
9
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
9
10
 
10
11
  import {
11
12
  type Anchor,
@@ -44,7 +45,6 @@ import {
44
45
 
45
46
  import { BasicChunk, BasicChunkCursor, type SiblingsOrKey } from "./basicChunk.js";
46
47
  import { type IChunker, basicChunkTree, chunkFieldSingle, chunkTree } from "./chunkTree.js";
47
- import type { IIdCompressor } from "@fluidframework/id-compressor";
48
48
 
49
49
  function makeRoot(): BasicChunk {
50
50
  return new BasicChunk(aboveRootPlaceholder, new Map());
@@ -4,6 +4,11 @@
4
4
  */
5
5
 
6
6
  import { assert, unreachableCase, oob } from "@fluidframework/core-utils/internal";
7
+ import type {
8
+ IIdCompressor,
9
+ OpSpaceCompressedId,
10
+ SessionId,
11
+ } from "@fluidframework/id-compressor";
7
12
 
8
13
  import { DiscriminatedUnionDispatcher } from "../../../codec/index.js";
9
14
  import type {
@@ -42,11 +47,6 @@ import {
42
47
  type EncodedValueShape,
43
48
  SpecialField,
44
49
  } from "./format.js";
45
- import type {
46
- IIdCompressor,
47
- OpSpaceCompressedId,
48
- SessionId,
49
- } from "@fluidframework/id-compressor";
50
50
 
51
51
  export interface IdDecodingContext {
52
52
  idCompressor: IIdCompressor;
@@ -6,8 +6,8 @@
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import type { DiscriminatedUnionDispatcher } from "../../../codec/index.js";
9
- import type { BrandedType } from "../../../util/index.js";
10
9
  import type { TreeChunk } from "../../../core/index.js";
10
+ import type { BrandedType } from "../../../util/index.js";
11
11
 
12
12
  import {
13
13
  type ChunkDecoder,
@@ -15,8 +15,8 @@ import {
15
15
  getChecked,
16
16
  readStream,
17
17
  } from "./chunkCodecUtilities.js";
18
- import type { EncodedFieldBatchGeneric, IdentifierOrIndex } from "./formatGeneric.js";
19
18
  import type { IdDecodingContext } from "./chunkDecoding.js";
19
+ import type { EncodedFieldBatchGeneric, IdentifierOrIndex } from "./formatGeneric.js";
20
20
 
21
21
  /**
22
22
  * General purpose shape based tree decoder which gets its support for specific shapes from the caller.
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import type { TreeValue } from "../../../core/index.js";
8
9
  import type { FluidSerializableReadOnly } from "../../valueUtilities.js";
9
10
 
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
7
8
 
8
9
  import {
10
+ type FluidClientVersion,
9
11
  type ICodecOptions,
10
12
  type IJsonCodec,
11
13
  makeVersionedValidatedCodec,
@@ -19,7 +21,6 @@ import type { FieldBatch } from "./fieldBatch.js";
19
21
  import { EncodedFieldBatch, validVersions } from "./format.js";
20
22
  import { schemaCompressedEncode } from "./schemaBasedEncode.js";
21
23
  import { uncompressedEncode } from "./uncompressedEncode.js";
22
- import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
23
24
 
24
25
  export interface FieldBatchEncodingContext {
25
26
  readonly encodeType: TreeCompressionStrategy;
@@ -38,6 +39,18 @@ export type FieldBatchCodec = IJsonCodec<
38
39
  FieldBatchEncodingContext
39
40
  >;
40
41
 
42
+ /**
43
+ * Get the write version for {@link makeFieldBatchCodec} based on the `oldestCompatibleClient` version.
44
+ * @privateRemarks
45
+ * TODO: makeFieldBatchCodec (and makeVersionDispatchingCodec transitively) should bake in this versionToFormat logic and the resulting codec can then support use with FluidClientVersion directly.
46
+ */
47
+ export function fluidVersionToFieldBatchCodecWriteVersion(
48
+ oldestCompatibleClient: FluidClientVersion,
49
+ ): number {
50
+ // There is currently on only 1 version.
51
+ return 1;
52
+ }
53
+
41
54
  export function makeFieldBatchCodec(
42
55
  options: ICodecOptions,
43
56
  writeVersion: number,
@@ -51,6 +64,7 @@ export function makeFieldBatchCodec(
51
64
  0x935 /* Invalid write version for FieldBatch codec */,
52
65
  );
53
66
 
67
+ // TODO: use makeVersionDispatchingCodec to support adding more versions in the future.
54
68
  return makeVersionedValidatedCodec(options, validVersions, EncodedFieldBatch, {
55
69
  encode: (data: FieldBatch, context: FieldBatchEncodingContext): EncodedFieldBatch => {
56
70
  for (const cursor of data) {
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
8
 
8
9
  import {
9
10
  CursorLocationType,
@@ -34,7 +35,6 @@ import {
34
35
  SpecialField,
35
36
  version,
36
37
  } from "./format.js";
37
- import type { IIdCompressor } from "@fluidframework/id-compressor";
38
38
 
39
39
  /**
40
40
  * Encode data from `FieldBatch` into an `EncodedChunk`.
@@ -9,4 +9,5 @@ export {
9
9
  type FieldBatchCodec,
10
10
  makeFieldBatchCodec,
11
11
  type FieldBatchEncodingContext,
12
+ fluidVersionToFieldBatchCodecWriteVersion,
12
13
  } from "./codecs.js";
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, fail } from "@fluidframework/core-utils/internal";
7
+ import { isStableId } from "@fluidframework/id-compressor/internal";
7
8
 
8
9
  import {
9
10
  type FieldKey,
@@ -24,7 +25,6 @@ import {
24
25
  encodeValue,
25
26
  } from "./compressedEncode.js";
26
27
  import type { EncodedChunkShape, EncodedFieldShape, EncodedValueShape } from "./format.js";
27
- import { isStableId } from "@fluidframework/id-compressor/internal";
28
28
 
29
29
  export class NodeShape extends Shape<EncodedChunkShape> implements NodeEncoder {
30
30
  /**
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
7
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
7
8
 
8
9
  import {
9
10
  LeafNodeStoredSchema,
@@ -31,7 +32,6 @@ import {
31
32
  import type { FieldBatch } from "./fieldBatch.js";
32
33
  import { type EncodedFieldBatch, type EncodedValueShape, SpecialField } from "./format.js";
33
34
  import { NodeShape } from "./nodeShape.js";
34
- import type { IIdCompressor } from "@fluidframework/id-compressor";
35
35
 
36
36
  /**
37
37
  * Encode data from `fieldBatch` in into an `EncodedChunk`.
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import {
8
9
  CursorLocationType,
9
10
  CursorMarker,
@@ -20,4 +20,5 @@ export {
20
20
  type FieldBatchCodec,
21
21
  makeFieldBatchCodec,
22
22
  type FieldBatchEncodingContext,
23
+ fluidVersionToFieldBatchCodecWriteVersion,
23
24
  } from "./codec/index.js";
@@ -3,10 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { type ChunkedCursor, type TreeChunk, dummyRoot } from "../../core/index.js";
6
7
  import { ReferenceCountedBase } from "../../util/index.js";
7
8
 
8
9
  import { BasicChunkCursor } from "./basicChunk.js";
9
- import { type ChunkedCursor, type TreeChunk, dummyRoot } from "../../core/index.js";
10
10
 
11
11
  /**
12
12
  * General purpose multi-node sequence chunk.
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  import { assert, compareArrays, oob, fail } from "@fluidframework/core-utils/internal";
7
+ import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
8
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
9
 
8
10
  import {
9
11
  CursorLocationType,
@@ -22,9 +24,6 @@ import {
22
24
  import { ReferenceCountedBase, hasSome } from "../../util/index.js";
23
25
  import { SynchronousCursor, prefixFieldPath, prefixPath } from "../treeCursorUtils.js";
24
26
 
25
- import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
26
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
27
-
28
27
  /**
29
28
  * Create a tree chunk with ref count 1.
30
29
  *
@@ -37,6 +37,7 @@ import {
37
37
  relevantRemovedRoots as relevantModularRemovedRoots,
38
38
  } from "../modular-schema/index.js";
39
39
  import type { OptionalChangeset } from "../optional-field/index.js";
40
+ import type { CellId } from "../sequence-field/index.js";
40
41
 
41
42
  import {
42
43
  fieldKinds,
@@ -44,7 +45,6 @@ import {
44
45
  sequence,
45
46
  required as valueFieldKind,
46
47
  } from "./defaultFieldKinds.js";
47
- import type { CellId } from "../sequence-field/index.js";
48
48
 
49
49
  export type DefaultChangeset = ModularChangeset;
50
50
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import {
8
9
  type ChangeAtomId,
9
10
  type DeltaDetachedNodeId,
@@ -26,7 +26,12 @@ export {
26
26
  relevantRemovedRoots,
27
27
  } from "./defaultEditBuilder.js";
28
28
 
29
- export { SchemaValidationErrors, isNodeInSchema, isFieldInSchema } from "./schemaChecker.js";
29
+ export {
30
+ SchemaValidationErrors,
31
+ isNodeInSchema,
32
+ isFieldInSchema,
33
+ inSchemaOrThrow,
34
+ } from "./schemaChecker.js";
30
35
 
31
36
  export { defaultSchemaPolicy } from "./defaultSchema.js";
32
37
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { NormalizedFieldUpPath, NormalizedUpPath } from "../../core/index.js";
7
+
7
8
  import type {
8
9
  IDefaultEditBuilder,
9
10
  OptionalFieldEditBuilder,
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { unreachableCase, fail } from "@fluidframework/core-utils/internal";
7
+
7
8
  import {
8
9
  type MapTree,
9
10
  type TreeFieldStoredSchema,
@@ -14,6 +15,7 @@ import {
14
15
  type SchemaAndPolicy,
15
16
  } from "../../core/index.js";
16
17
  import { allowsValue } from "../valueUtilities.js";
18
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
17
19
 
18
20
  export const enum SchemaValidationErrors {
19
21
  NoError,
@@ -28,6 +30,15 @@ export const enum SchemaValidationErrors {
28
30
  UnknownError,
29
31
  }
30
32
 
33
+ /**
34
+ * Throws a UsageError if maybeError indicates a tree is out of schema.
35
+ */
36
+ export function inSchemaOrThrow(maybeError: SchemaValidationErrors): void {
37
+ if (maybeError !== SchemaValidationErrors.NoError) {
38
+ throw new UsageError("Tree does not conform to schema.");
39
+ }
40
+ }
41
+
31
42
  /**
32
43
  * Deeply checks that the provided node complies with the schema based on its identifier.
33
44
  */
@@ -50,38 +61,38 @@ export function isNodeInSchema(
50
61
  if (!allowsValue(schema.leafValue, node.value)) {
51
62
  return SchemaValidationErrors.LeafNode_InvalidValue;
52
63
  }
53
- } else if (schema instanceof ObjectNodeStoredSchema) {
64
+ } else {
54
65
  if (node.value !== undefined) {
55
66
  return SchemaValidationErrors.NonLeafNode_ValueNotAllowed;
56
67
  }
57
- const uncheckedFieldsFromNode = new Set(node.fields.keys());
58
- for (const [fieldKey, fieldSchema] of schema.objectNodeFields) {
59
- const nodeField = node.fields.get(fieldKey) ?? [];
60
- const fieldInSchemaResult = isFieldInSchema(nodeField, fieldSchema, schemaAndPolicy);
61
- if (fieldInSchemaResult !== SchemaValidationErrors.NoError) {
62
- return fieldInSchemaResult;
68
+
69
+ if (schema instanceof ObjectNodeStoredSchema) {
70
+ const uncheckedFieldsFromNode = new Set(node.fields.keys());
71
+ for (const [fieldKey, fieldSchema] of schema.objectNodeFields) {
72
+ const nodeField = node.fields.get(fieldKey) ?? [];
73
+ const fieldInSchemaResult = isFieldInSchema(nodeField, fieldSchema, schemaAndPolicy);
74
+ if (fieldInSchemaResult !== SchemaValidationErrors.NoError) {
75
+ return fieldInSchemaResult;
76
+ }
77
+ uncheckedFieldsFromNode.delete(fieldKey);
63
78
  }
64
- uncheckedFieldsFromNode.delete(fieldKey);
65
- }
66
- // The node has fields that we did not check as part of looking at every field defined in the node's schema
67
- if (
68
- uncheckedFieldsFromNode.size !== 0 &&
69
- !schemaAndPolicy.policy.allowUnknownOptionalFields(node.type)
70
- ) {
71
- return SchemaValidationErrors.ObjectNode_FieldNotInSchema;
72
- }
73
- } else if (schema instanceof MapNodeStoredSchema) {
74
- if (node.value !== undefined) {
75
- return SchemaValidationErrors.NonLeafNode_ValueNotAllowed;
76
- }
77
- for (const field of node.fields.values()) {
78
- const fieldInSchemaResult = isFieldInSchema(field, schema.mapFields, schemaAndPolicy);
79
- if (fieldInSchemaResult !== SchemaValidationErrors.NoError) {
80
- return fieldInSchemaResult;
79
+ // The node has fields that we did not check as part of looking at every field defined in the node's schema
80
+ if (
81
+ uncheckedFieldsFromNode.size !== 0 &&
82
+ !schemaAndPolicy.policy.allowUnknownOptionalFields(node.type)
83
+ ) {
84
+ return SchemaValidationErrors.ObjectNode_FieldNotInSchema;
85
+ }
86
+ } else if (schema instanceof MapNodeStoredSchema) {
87
+ for (const field of node.fields.values()) {
88
+ const fieldInSchemaResult = isFieldInSchema(field, schema.mapFields, schemaAndPolicy);
89
+ if (fieldInSchemaResult !== SchemaValidationErrors.NoError) {
90
+ return fieldInSchemaResult;
91
+ }
81
92
  }
93
+ } else {
94
+ fail(0xb0e /* Unknown TreeNodeStoredSchema type */);
82
95
  }
83
- } else {
84
- fail(0xb0e /* Unknown TreeNodeStoredSchema type */);
85
96
  }
86
97
 
87
98
  return SchemaValidationErrors.NoError;