@fluidframework/tree 2.41.0-338186 → 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 (407) hide show
  1. package/api-report/tree.alpha.api.md +164 -4
  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/index.d.ts +2 -2
  104. package/dist/feature-libraries/index.d.ts.map +1 -1
  105. package/dist/feature-libraries/index.js +3 -1
  106. package/dist/feature-libraries/index.js.map +1 -1
  107. package/dist/feature-libraries/initializeForest.d.ts.map +1 -1
  108. package/dist/feature-libraries/initializeForest.js.map +1 -1
  109. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  110. package/dist/feature-libraries/treeCursorUtils.js +1 -1
  111. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  112. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  113. package/dist/feature-libraries/valueUtilities.js +6 -6
  114. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  115. package/dist/jsonDomainSchema.d.ts.map +1 -1
  116. package/dist/jsonDomainSchema.js.map +1 -1
  117. package/dist/packageVersion.d.ts +1 -1
  118. package/dist/packageVersion.js +1 -1
  119. package/dist/packageVersion.js.map +1 -1
  120. package/dist/serializableDomainSchema.d.ts.map +1 -1
  121. package/dist/serializableDomainSchema.js.map +1 -1
  122. package/dist/shared-tree/treeAlpha.d.ts +8 -0
  123. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  124. package/dist/shared-tree/treeAlpha.js +14 -7
  125. package/dist/shared-tree/treeAlpha.js.map +1 -1
  126. package/dist/sharedTreeAttributes.d.ts.map +1 -1
  127. package/dist/sharedTreeAttributes.js.map +1 -1
  128. package/dist/simple-tree/api/create.d.ts.map +1 -1
  129. package/dist/simple-tree/api/create.js +1 -1
  130. package/dist/simple-tree/api/create.js.map +1 -1
  131. package/dist/simple-tree/api/index.d.ts +1 -1
  132. package/dist/simple-tree/api/index.d.ts.map +1 -1
  133. package/dist/simple-tree/api/index.js +3 -1
  134. package/dist/simple-tree/api/index.js.map +1 -1
  135. package/dist/simple-tree/api/treeNodeApi.d.ts +8 -0
  136. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  137. package/dist/simple-tree/api/treeNodeApi.js +3 -1
  138. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  139. package/dist/simple-tree/arrayNode.js +1 -1
  140. package/dist/simple-tree/arrayNode.js.map +1 -1
  141. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  142. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  143. package/dist/simple-tree/core/treeNodeKernel.d.ts +5 -17
  144. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  145. package/dist/simple-tree/core/treeNodeKernel.js +17 -48
  146. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  147. package/dist/simple-tree/{proxies.d.ts → getTreeNodeForField.d.ts} +1 -1
  148. package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  149. package/dist/simple-tree/{proxies.js → getTreeNodeForField.js} +1 -1
  150. package/dist/simple-tree/getTreeNodeForField.js.map +1 -0
  151. package/dist/simple-tree/index.d.ts +2 -2
  152. package/dist/simple-tree/index.d.ts.map +1 -1
  153. package/dist/simple-tree/index.js +6 -4
  154. package/dist/simple-tree/index.js.map +1 -1
  155. package/dist/simple-tree/mapNode.js +4 -4
  156. package/dist/simple-tree/mapNode.js.map +1 -1
  157. package/dist/simple-tree/objectNode.js +3 -3
  158. package/dist/simple-tree/objectNode.js.map +1 -1
  159. package/dist/simple-tree/prepareForInsertion.d.ts +18 -6
  160. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  161. package/dist/simple-tree/prepareForInsertion.js +51 -22
  162. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  163. package/dist/simple-tree/toMapTree.d.ts +3 -8
  164. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  165. package/dist/simple-tree/toMapTree.js +3 -22
  166. package/dist/simple-tree/toMapTree.js.map +1 -1
  167. package/dist/tableSchema.d.ts +109 -62
  168. package/dist/tableSchema.d.ts.map +1 -1
  169. package/dist/tableSchema.js +83 -36
  170. package/dist/tableSchema.js.map +1 -1
  171. package/dist/treeFactory.d.ts.map +1 -1
  172. package/dist/treeFactory.js +2 -2
  173. package/dist/treeFactory.js.map +1 -1
  174. package/lib/alpha.d.ts +2 -0
  175. package/lib/codec/codec.d.ts +42 -7
  176. package/lib/codec/codec.d.ts.map +1 -1
  177. package/lib/codec/codec.js +50 -8
  178. package/lib/codec/codec.js.map +1 -1
  179. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  180. package/lib/core/change-family/editBuilder.js.map +1 -1
  181. package/lib/core/forest/forest.d.ts.map +1 -1
  182. package/lib/core/forest/forest.js.map +1 -1
  183. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  184. package/lib/core/schema-stored/schema.js.map +1 -1
  185. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  186. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  187. package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
  188. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  189. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  190. package/lib/core/tree/anchorSet.js +2 -2
  191. package/lib/core/tree/anchorSet.js.map +1 -1
  192. package/lib/core/tree/chunk.d.ts.map +1 -1
  193. package/lib/core/tree/chunk.js.map +1 -1
  194. package/lib/core/tree/delta.d.ts.map +1 -1
  195. package/lib/core/tree/delta.js.map +1 -1
  196. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  197. package/lib/core/tree/deltaUtil.js.map +1 -1
  198. package/lib/core/tree/detachedFieldIndex.d.ts +1 -1
  199. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  200. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  201. package/lib/core/tree/detachedFieldIndexCodec.d.ts +1 -1
  202. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  203. package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
  204. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  205. package/lib/core/tree/pathTree.d.ts.map +1 -1
  206. package/lib/core/tree/pathTree.js.map +1 -1
  207. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  208. package/lib/core/tree/treeTextFormat.js.map +1 -1
  209. package/lib/core/tree/visitDelta.d.ts +1 -1
  210. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  211. package/lib/core/tree/visitDelta.js.map +1 -1
  212. package/lib/core/tree/visitorUtils.d.ts +2 -2
  213. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  214. package/lib/core/tree/visitorUtils.js.map +1 -1
  215. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
  216. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  217. package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -1
  218. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  219. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
  220. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  221. package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -1
  222. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  223. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  224. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  225. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  226. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  227. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  228. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  229. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  230. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  231. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
  232. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  233. package/lib/feature-libraries/chunked-forest/codec/codecs.js +10 -0
  234. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  235. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  236. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  237. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  238. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  239. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  240. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  241. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  242. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  243. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  244. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  245. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
  246. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  247. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  248. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  249. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  250. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  251. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  252. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  253. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  254. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  255. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  256. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  257. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  258. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
  259. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  260. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  261. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  262. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  263. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  264. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  265. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  266. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  267. package/lib/feature-libraries/default-schema/index.js +1 -1
  268. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  269. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  270. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  271. package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
  272. package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
  273. package/lib/feature-libraries/default-schema/schemaChecker.js +33 -25
  274. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  275. package/lib/feature-libraries/index.d.ts +2 -2
  276. package/lib/feature-libraries/index.d.ts.map +1 -1
  277. package/lib/feature-libraries/index.js +2 -2
  278. package/lib/feature-libraries/index.js.map +1 -1
  279. package/lib/feature-libraries/initializeForest.d.ts.map +1 -1
  280. package/lib/feature-libraries/initializeForest.js.map +1 -1
  281. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  282. package/lib/feature-libraries/treeCursorUtils.js +1 -1
  283. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  284. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  285. package/lib/feature-libraries/valueUtilities.js +1 -1
  286. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  287. package/lib/jsonDomainSchema.d.ts.map +1 -1
  288. package/lib/jsonDomainSchema.js.map +1 -1
  289. package/lib/packageVersion.d.ts +1 -1
  290. package/lib/packageVersion.js +1 -1
  291. package/lib/packageVersion.js.map +1 -1
  292. package/lib/serializableDomainSchema.d.ts.map +1 -1
  293. package/lib/serializableDomainSchema.js.map +1 -1
  294. package/lib/shared-tree/treeAlpha.d.ts +8 -0
  295. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  296. package/lib/shared-tree/treeAlpha.js +16 -9
  297. package/lib/shared-tree/treeAlpha.js.map +1 -1
  298. package/lib/sharedTreeAttributes.d.ts.map +1 -1
  299. package/lib/sharedTreeAttributes.js.map +1 -1
  300. package/lib/simple-tree/api/create.d.ts.map +1 -1
  301. package/lib/simple-tree/api/create.js +2 -2
  302. package/lib/simple-tree/api/create.js.map +1 -1
  303. package/lib/simple-tree/api/index.d.ts +1 -1
  304. package/lib/simple-tree/api/index.d.ts.map +1 -1
  305. package/lib/simple-tree/api/index.js +1 -1
  306. package/lib/simple-tree/api/index.js.map +1 -1
  307. package/lib/simple-tree/api/treeNodeApi.d.ts +8 -0
  308. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  309. package/lib/simple-tree/api/treeNodeApi.js +2 -2
  310. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  311. package/lib/simple-tree/arrayNode.js +2 -2
  312. package/lib/simple-tree/arrayNode.js.map +1 -1
  313. package/lib/simple-tree/core/getOrCreateNode.js +2 -2
  314. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  315. package/lib/simple-tree/core/treeNodeKernel.d.ts +5 -17
  316. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  317. package/lib/simple-tree/core/treeNodeKernel.js +16 -47
  318. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  319. package/lib/simple-tree/{proxies.d.ts → getTreeNodeForField.d.ts} +1 -1
  320. package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -0
  321. package/lib/simple-tree/{proxies.js → getTreeNodeForField.js} +1 -1
  322. package/lib/simple-tree/getTreeNodeForField.js.map +1 -0
  323. package/lib/simple-tree/index.d.ts +2 -2
  324. package/lib/simple-tree/index.d.ts.map +1 -1
  325. package/lib/simple-tree/index.js +2 -2
  326. package/lib/simple-tree/index.js.map +1 -1
  327. package/lib/simple-tree/mapNode.js +1 -1
  328. package/lib/simple-tree/mapNode.js.map +1 -1
  329. package/lib/simple-tree/objectNode.js +1 -1
  330. package/lib/simple-tree/objectNode.js.map +1 -1
  331. package/lib/simple-tree/prepareForInsertion.d.ts +18 -6
  332. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  333. package/lib/simple-tree/prepareForInsertion.js +51 -22
  334. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  335. package/lib/simple-tree/toMapTree.d.ts +3 -8
  336. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  337. package/lib/simple-tree/toMapTree.js +3 -21
  338. package/lib/simple-tree/toMapTree.js.map +1 -1
  339. package/lib/tableSchema.d.ts +109 -62
  340. package/lib/tableSchema.d.ts.map +1 -1
  341. package/lib/tableSchema.js +83 -36
  342. package/lib/tableSchema.js.map +1 -1
  343. package/lib/treeFactory.d.ts.map +1 -1
  344. package/lib/treeFactory.js +2 -2
  345. package/lib/treeFactory.js.map +1 -1
  346. package/package.json +20 -20
  347. package/src/codec/codec.ts +54 -8
  348. package/src/core/change-family/editBuilder.ts +1 -0
  349. package/src/core/forest/forest.ts +1 -1
  350. package/src/core/schema-stored/schema.ts +2 -0
  351. package/src/core/schema-stored/storedSchemaRepository.ts +2 -2
  352. package/src/core/tree/anchorSet.ts +4 -4
  353. package/src/core/tree/chunk.ts +2 -1
  354. package/src/core/tree/delta.ts +1 -0
  355. package/src/core/tree/deltaUtil.ts +1 -1
  356. package/src/core/tree/detachedFieldIndex.ts +1 -1
  357. package/src/core/tree/detachedFieldIndexCodec.ts +2 -2
  358. package/src/core/tree/pathTree.ts +1 -1
  359. package/src/core/tree/treeTextFormat.ts +1 -0
  360. package/src/core/tree/visitDelta.ts +1 -1
  361. package/src/core/tree/visitorUtils.ts +3 -2
  362. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  363. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  364. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -5
  365. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
  366. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -0
  367. package/src/feature-libraries/chunked-forest/codec/codecs.ts +15 -1
  368. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -1
  369. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -0
  370. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +1 -1
  371. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +1 -1
  372. package/src/feature-libraries/chunked-forest/emptyChunk.ts +1 -0
  373. package/src/feature-libraries/chunked-forest/index.ts +1 -0
  374. package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
  375. package/src/feature-libraries/chunked-forest/uniformChunk.ts +2 -3
  376. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
  377. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
  378. package/src/feature-libraries/default-schema/index.ts +6 -1
  379. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +1 -0
  380. package/src/feature-libraries/default-schema/schemaChecker.ts +37 -26
  381. package/src/feature-libraries/index.ts +2 -0
  382. package/src/feature-libraries/initializeForest.ts +1 -1
  383. package/src/feature-libraries/treeCursorUtils.ts +1 -1
  384. package/src/feature-libraries/valueUtilities.ts +1 -1
  385. package/src/jsonDomainSchema.ts +0 -1
  386. package/src/packageVersion.ts +1 -1
  387. package/src/serializableDomainSchema.ts +1 -0
  388. package/src/shared-tree/treeAlpha.ts +29 -8
  389. package/src/sharedTreeAttributes.ts +1 -0
  390. package/src/simple-tree/api/create.ts +2 -1
  391. package/src/simple-tree/api/index.ts +7 -1
  392. package/src/simple-tree/api/treeNodeApi.ts +2 -2
  393. package/src/simple-tree/arrayNode.ts +2 -2
  394. package/src/simple-tree/core/getOrCreateNode.ts +2 -2
  395. package/src/simple-tree/core/treeNodeKernel.ts +22 -53
  396. package/src/simple-tree/index.ts +3 -1
  397. package/src/simple-tree/mapNode.ts +1 -1
  398. package/src/simple-tree/objectNode.ts +1 -1
  399. package/src/simple-tree/prepareForInsertion.ts +67 -27
  400. package/src/simple-tree/toMapTree.ts +2 -26
  401. package/src/tableSchema.ts +109 -62
  402. package/src/treeFactory.ts +2 -4
  403. package/dist/simple-tree/proxies.d.ts.map +0 -1
  404. package/dist/simple-tree/proxies.js.map +0 -1
  405. package/lib/simple-tree/proxies.d.ts.map +0 -1
  406. package/lib/simple-tree/proxies.js.map +0 -1
  407. /package/src/simple-tree/{proxies.ts → getTreeNodeForField.ts} +0 -0
@@ -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;
@@ -109,6 +109,7 @@ export {
109
109
  type FieldBatchCodec,
110
110
  makeTreeChunker,
111
111
  makeFieldBatchCodec,
112
+ fluidVersionToFieldBatchCodecWriteVersion,
112
113
  type FieldBatchEncodingContext,
113
114
  } from "./chunked-forest/index.js";
114
115
 
@@ -145,6 +146,7 @@ export {
145
146
  SchemaValidationErrors,
146
147
  isNodeInSchema,
147
148
  isFieldInSchema,
149
+ inSchemaOrThrow,
148
150
  } from "./default-schema/index.js";
149
151
 
150
152
  export {
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
7
6
  import { assert } from "@fluidframework/core-utils/internal";
7
+ import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
8
8
 
9
9
  import {
10
10
  type DeltaRoot,
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { assert, oob, debugAssert, fail } from "@fluidframework/core-utils/internal";
7
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
8
 
8
9
  import {
9
10
  CursorLocationType,
@@ -19,7 +20,6 @@ import {
19
20
  detachedFieldAsKey,
20
21
  rootField,
21
22
  } from "../core/index.js";
22
- import { UsageError } from "@fluidframework/telemetry-utils/internal";
23
23
 
24
24
  /**
25
25
  * {@link ITreeCursorSynchronous} that can return the underlying node objects.
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
7
6
  import type { IFluidHandle } from "@fluidframework/core-interfaces";
8
7
  import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
8
+ import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
9
9
 
10
10
  import { type TreeValue, type Value, ValueSchema } from "../core/index.js";
11
11
 
@@ -4,7 +4,6 @@
4
4
  */
5
5
 
6
6
  import { SchemaFactory } from "./simple-tree/index.js";
7
-
8
7
  import type {
9
8
  AllowedTypes,
10
9
  FixRecursiveArraySchema,