@fluidframework/tree 2.23.0-323641 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/.vscode/extensions.json +1 -0
  2. package/CHANGELOG.md +47 -0
  3. package/api-report/tree.alpha.api.md +31 -0
  4. package/dist/alpha.d.ts +1 -0
  5. package/dist/codec/codec.js +3 -3
  6. package/dist/codec/codec.js.map +1 -1
  7. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  8. package/dist/codec/discriminatedUnions.js +1 -1
  9. package/dist/codec/discriminatedUnions.js.map +1 -1
  10. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  11. package/dist/core/schema-stored/schema.js +3 -3
  12. package/dist/core/schema-stored/schema.js.map +1 -1
  13. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  14. package/dist/core/tree/anchorSet.js +5 -4
  15. package/dist/core/tree/anchorSet.js.map +1 -1
  16. package/dist/core/tree/treeTextFormat.js +1 -1
  17. package/dist/core/tree/treeTextFormat.js.map +1 -1
  18. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  19. package/dist/feature-libraries/chunked-forest/basicChunk.js +11 -8
  20. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  21. package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -2
  22. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  23. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  24. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  26. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  28. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  29. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  31. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  32. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  34. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  36. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  37. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  39. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  40. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  41. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  42. package/dist/feature-libraries/default-schema/schemaChecker.js +1 -1
  43. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  45. package/dist/feature-libraries/flex-tree/lazyField.js +4 -3
  46. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  47. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  48. package/dist/feature-libraries/flex-tree/lazyNode.js +5 -4
  49. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  50. package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  51. package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  52. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  53. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  54. package/dist/feature-libraries/modular-schema/comparison.js +6 -4
  55. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  56. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  57. package/dist/feature-libraries/modular-schema/isNeverTree.js +4 -4
  58. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  59. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  60. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  61. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  62. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +5 -5
  63. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  64. package/dist/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  65. package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  66. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  67. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  68. package/dist/feature-libraries/schema-index/codec.js +1 -1
  69. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  70. package/dist/feature-libraries/sequence-field/compose.js +1 -1
  71. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  72. package/dist/feature-libraries/sequence-field/invert.js +1 -1
  73. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  74. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  75. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  76. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  77. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  78. package/dist/feature-libraries/sequence-field/utils.js +1 -1
  79. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  80. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  81. package/dist/feature-libraries/treeCursorUtils.js +6 -4
  82. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  83. package/dist/index.d.ts +3 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +5 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/jsonDomainSchema.d.ts +113 -0
  88. package/dist/jsonDomainSchema.d.ts.map +1 -0
  89. package/dist/jsonDomainSchema.js +101 -0
  90. package/dist/jsonDomainSchema.js.map +1 -0
  91. package/dist/packageVersion.d.ts +1 -1
  92. package/dist/packageVersion.d.ts.map +1 -1
  93. package/dist/packageVersion.js +1 -1
  94. package/dist/packageVersion.js.map +1 -1
  95. package/dist/serializableDomainSchema.d.ts +108 -0
  96. package/dist/serializableDomainSchema.d.ts.map +1 -0
  97. package/dist/serializableDomainSchema.js +90 -0
  98. package/dist/serializableDomainSchema.js.map +1 -0
  99. package/dist/shared-tree/index.d.ts +1 -1
  100. package/dist/shared-tree/index.d.ts.map +1 -1
  101. package/dist/shared-tree/index.js.map +1 -1
  102. package/dist/shared-tree/schematizeTree.js +1 -1
  103. package/dist/shared-tree/schematizeTree.js.map +1 -1
  104. package/dist/shared-tree/sharedTree.d.ts +35 -19
  105. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  106. package/dist/shared-tree/sharedTree.js +14 -17
  107. package/dist/shared-tree/sharedTree.js.map +1 -1
  108. package/dist/shared-tree/sharedTreeChangeFamily.js +1 -1
  109. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  110. package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
  111. package/dist/shared-tree/treeApiAlpha.js +4 -4
  112. package/dist/shared-tree/treeApiAlpha.js.map +1 -1
  113. package/dist/shared-tree/treeCheckout.js +1 -1
  114. package/dist/shared-tree/treeCheckout.js.map +1 -1
  115. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  116. package/dist/shared-tree-core/editManager.js +8 -7
  117. package/dist/shared-tree-core/editManager.js.map +1 -1
  118. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -2
  119. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  120. package/dist/shared-tree-core/sharedTreeCore.js +2 -2
  121. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  122. package/dist/simple-tree/api/customTree.js +3 -3
  123. package/dist/simple-tree/api/customTree.js.map +1 -1
  124. package/dist/simple-tree/api/schemaCreationUtilities.js +1 -1
  125. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  126. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  127. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  128. package/dist/simple-tree/api/simpleTreeIndex.js +3 -3
  129. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  130. package/dist/simple-tree/api/tree.js +1 -1
  131. package/dist/simple-tree/api/tree.js.map +1 -1
  132. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  133. package/dist/simple-tree/api/treeNodeApi.js +9 -5
  134. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  135. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  136. package/dist/simple-tree/api/verboseTree.js +5 -4
  137. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  138. package/dist/simple-tree/api/view.js +1 -1
  139. package/dist/simple-tree/api/view.js.map +1 -1
  140. package/dist/simple-tree/arrayNode.js +2 -2
  141. package/dist/simple-tree/arrayNode.js.map +1 -1
  142. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  143. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  144. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  145. package/dist/simple-tree/core/schemaCaching.js +1 -1
  146. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  147. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  148. package/dist/simple-tree/core/treeNodeKernel.js +6 -6
  149. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  150. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  151. package/dist/simple-tree/core/unhydratedFlexTree.js +5 -5
  152. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  153. package/dist/simple-tree/objectNode.js +2 -2
  154. package/dist/simple-tree/objectNode.js.map +1 -1
  155. package/dist/simple-tree/proxies.js +1 -1
  156. package/dist/simple-tree/proxies.js.map +1 -1
  157. package/dist/simple-tree/toMapTree.js +3 -3
  158. package/dist/simple-tree/toMapTree.js.map +1 -1
  159. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  160. package/dist/simple-tree/toStoredSchema.js +2 -1
  161. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  162. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  163. package/dist/simple-tree/treeNodeValid.js +5 -2
  164. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  165. package/dist/util/idAllocator.js +1 -1
  166. package/dist/util/idAllocator.js.map +1 -1
  167. package/dist/util/index.d.ts +2 -2
  168. package/dist/util/index.d.ts.map +1 -1
  169. package/dist/util/index.js +4 -4
  170. package/dist/util/index.js.map +1 -1
  171. package/dist/util/nestedMap.d.ts +2 -10
  172. package/dist/util/nestedMap.d.ts.map +1 -1
  173. package/dist/util/nestedMap.js +9 -28
  174. package/dist/util/nestedMap.js.map +1 -1
  175. package/dist/util/utils.d.ts +7 -6
  176. package/dist/util/utils.d.ts.map +1 -1
  177. package/dist/util/utils.js +18 -13
  178. package/dist/util/utils.js.map +1 -1
  179. package/lib/alpha.d.ts +1 -0
  180. package/lib/codec/codec.js +3 -3
  181. package/lib/codec/codec.js.map +1 -1
  182. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  183. package/lib/codec/discriminatedUnions.js +1 -1
  184. package/lib/codec/discriminatedUnions.js.map +1 -1
  185. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  186. package/lib/core/schema-stored/schema.js +3 -3
  187. package/lib/core/schema-stored/schema.js.map +1 -1
  188. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  189. package/lib/core/tree/anchorSet.js +5 -4
  190. package/lib/core/tree/anchorSet.js.map +1 -1
  191. package/lib/core/tree/treeTextFormat.js +1 -1
  192. package/lib/core/tree/treeTextFormat.js.map +1 -1
  193. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  194. package/lib/feature-libraries/chunked-forest/basicChunk.js +11 -8
  195. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  196. package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -2
  197. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  198. package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  199. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  200. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  201. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  202. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  203. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  204. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  205. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  206. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  207. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  208. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  209. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  210. package/lib/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  211. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  212. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  213. package/lib/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  214. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  215. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  216. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  217. package/lib/feature-libraries/default-schema/schemaChecker.js +1 -1
  218. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  219. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  220. package/lib/feature-libraries/flex-tree/lazyField.js +4 -3
  221. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  222. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  223. package/lib/feature-libraries/flex-tree/lazyNode.js +5 -4
  224. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  225. package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  226. package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  227. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  228. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  229. package/lib/feature-libraries/modular-schema/comparison.js +6 -4
  230. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  231. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  232. package/lib/feature-libraries/modular-schema/isNeverTree.js +4 -4
  233. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  234. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  235. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  236. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  237. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +6 -6
  238. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  239. package/lib/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  240. package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  241. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  242. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  243. package/lib/feature-libraries/schema-index/codec.js +1 -1
  244. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  245. package/lib/feature-libraries/sequence-field/compose.js +1 -1
  246. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  247. package/lib/feature-libraries/sequence-field/invert.js +1 -1
  248. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  249. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  250. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  251. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  252. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  253. package/lib/feature-libraries/sequence-field/utils.js +1 -1
  254. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  255. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  256. package/lib/feature-libraries/treeCursorUtils.js +6 -4
  257. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  258. package/lib/index.d.ts +3 -1
  259. package/lib/index.d.ts.map +1 -1
  260. package/lib/index.js +2 -0
  261. package/lib/index.js.map +1 -1
  262. package/lib/jsonDomainSchema.d.ts +113 -0
  263. package/lib/jsonDomainSchema.d.ts.map +1 -0
  264. package/lib/jsonDomainSchema.js +98 -0
  265. package/lib/jsonDomainSchema.js.map +1 -0
  266. package/lib/packageVersion.d.ts +1 -1
  267. package/lib/packageVersion.d.ts.map +1 -1
  268. package/lib/packageVersion.js +1 -1
  269. package/lib/packageVersion.js.map +1 -1
  270. package/lib/serializableDomainSchema.d.ts +108 -0
  271. package/lib/serializableDomainSchema.d.ts.map +1 -0
  272. package/lib/serializableDomainSchema.js +87 -0
  273. package/lib/serializableDomainSchema.js.map +1 -0
  274. package/lib/shared-tree/index.d.ts +1 -1
  275. package/lib/shared-tree/index.d.ts.map +1 -1
  276. package/lib/shared-tree/index.js.map +1 -1
  277. package/lib/shared-tree/schematizeTree.js +1 -1
  278. package/lib/shared-tree/schematizeTree.js.map +1 -1
  279. package/lib/shared-tree/sharedTree.d.ts +35 -19
  280. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  281. package/lib/shared-tree/sharedTree.js +15 -18
  282. package/lib/shared-tree/sharedTree.js.map +1 -1
  283. package/lib/shared-tree/sharedTreeChangeFamily.js +1 -1
  284. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  285. package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
  286. package/lib/shared-tree/treeApiAlpha.js +4 -4
  287. package/lib/shared-tree/treeApiAlpha.js.map +1 -1
  288. package/lib/shared-tree/treeCheckout.js +1 -1
  289. package/lib/shared-tree/treeCheckout.js.map +1 -1
  290. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  291. package/lib/shared-tree-core/editManager.js +8 -7
  292. package/lib/shared-tree-core/editManager.js.map +1 -1
  293. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -2
  294. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  295. package/lib/shared-tree-core/sharedTreeCore.js +2 -2
  296. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  297. package/lib/simple-tree/api/customTree.js +3 -3
  298. package/lib/simple-tree/api/customTree.js.map +1 -1
  299. package/lib/simple-tree/api/schemaCreationUtilities.js +1 -1
  300. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  301. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  302. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  303. package/lib/simple-tree/api/simpleTreeIndex.js +3 -3
  304. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  305. package/lib/simple-tree/api/tree.js +1 -1
  306. package/lib/simple-tree/api/tree.js.map +1 -1
  307. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  308. package/lib/simple-tree/api/treeNodeApi.js +9 -5
  309. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  310. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  311. package/lib/simple-tree/api/verboseTree.js +5 -4
  312. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  313. package/lib/simple-tree/api/view.js +1 -1
  314. package/lib/simple-tree/api/view.js.map +1 -1
  315. package/lib/simple-tree/arrayNode.js +2 -2
  316. package/lib/simple-tree/arrayNode.js.map +1 -1
  317. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  318. package/lib/simple-tree/core/getOrCreateNode.js +1 -1
  319. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  320. package/lib/simple-tree/core/schemaCaching.js +1 -1
  321. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  322. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  323. package/lib/simple-tree/core/treeNodeKernel.js +6 -6
  324. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  325. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  326. package/lib/simple-tree/core/unhydratedFlexTree.js +5 -5
  327. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  328. package/lib/simple-tree/objectNode.js +2 -2
  329. package/lib/simple-tree/objectNode.js.map +1 -1
  330. package/lib/simple-tree/proxies.js +1 -1
  331. package/lib/simple-tree/proxies.js.map +1 -1
  332. package/lib/simple-tree/toMapTree.js +3 -3
  333. package/lib/simple-tree/toMapTree.js.map +1 -1
  334. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  335. package/lib/simple-tree/toStoredSchema.js +2 -1
  336. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  337. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  338. package/lib/simple-tree/treeNodeValid.js +5 -2
  339. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  340. package/lib/util/idAllocator.js +1 -1
  341. package/lib/util/idAllocator.js.map +1 -1
  342. package/lib/util/index.d.ts +2 -2
  343. package/lib/util/index.d.ts.map +1 -1
  344. package/lib/util/index.js +2 -2
  345. package/lib/util/index.js.map +1 -1
  346. package/lib/util/nestedMap.d.ts +2 -10
  347. package/lib/util/nestedMap.d.ts.map +1 -1
  348. package/lib/util/nestedMap.js +5 -23
  349. package/lib/util/nestedMap.js.map +1 -1
  350. package/lib/util/utils.d.ts +7 -6
  351. package/lib/util/utils.d.ts.map +1 -1
  352. package/lib/util/utils.js +15 -11
  353. package/lib/util/utils.js.map +1 -1
  354. package/package.json +22 -22
  355. package/src/codec/codec.ts +3 -3
  356. package/src/codec/discriminatedUnions.ts +2 -1
  357. package/src/core/schema-stored/schema.ts +5 -3
  358. package/src/core/tree/anchorSet.ts +5 -4
  359. package/src/core/tree/treeTextFormat.ts +1 -1
  360. package/src/feature-libraries/chunked-forest/basicChunk.ts +11 -8
  361. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  362. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  363. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -2
  364. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +4 -3
  365. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +2 -2
  366. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +4 -3
  367. package/src/feature-libraries/chunked-forest/emptyChunk.ts +14 -14
  368. package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
  369. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -1
  370. package/src/feature-libraries/default-schema/schemaChecker.ts +1 -1
  371. package/src/feature-libraries/flex-tree/lazyField.ts +6 -8
  372. package/src/feature-libraries/flex-tree/lazyNode.ts +6 -4
  373. package/src/feature-libraries/indexing/anchorTreeIndex.ts +2 -1
  374. package/src/feature-libraries/modular-schema/comparison.ts +7 -5
  375. package/src/feature-libraries/modular-schema/isNeverTree.ts +6 -4
  376. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -4
  377. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +7 -6
  378. package/src/feature-libraries/node-key/mockNodeKeyManager.ts +1 -1
  379. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  380. package/src/feature-libraries/schema-index/codec.ts +1 -1
  381. package/src/feature-libraries/sequence-field/compose.ts +1 -1
  382. package/src/feature-libraries/sequence-field/invert.ts +1 -1
  383. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
  384. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
  385. package/src/feature-libraries/sequence-field/utils.ts +1 -1
  386. package/src/feature-libraries/treeCursorUtils.ts +6 -4
  387. package/src/index.ts +3 -1
  388. package/src/jsonDomainSchema.ts +129 -0
  389. package/src/packageVersion.ts +1 -1
  390. package/src/serializableDomainSchema.ts +121 -0
  391. package/src/shared-tree/index.ts +0 -1
  392. package/src/shared-tree/schematizeTree.ts +1 -1
  393. package/src/shared-tree/sharedTree.ts +26 -41
  394. package/src/shared-tree/sharedTreeChangeFamily.ts +1 -1
  395. package/src/shared-tree/treeApiAlpha.ts +12 -4
  396. package/src/shared-tree/treeCheckout.ts +1 -1
  397. package/src/shared-tree-core/editManager.ts +8 -7
  398. package/src/shared-tree-core/sharedTreeCore.ts +6 -4
  399. package/src/simple-tree/api/customTree.ts +3 -3
  400. package/src/simple-tree/api/schemaCreationUtilities.ts +1 -1
  401. package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -1
  402. package/src/simple-tree/api/simpleTreeIndex.ts +3 -3
  403. package/src/simple-tree/api/tree.ts +1 -1
  404. package/src/simple-tree/api/treeNodeApi.ts +11 -6
  405. package/src/simple-tree/api/verboseTree.ts +8 -4
  406. package/src/simple-tree/api/view.ts +1 -1
  407. package/src/simple-tree/arrayNode.ts +2 -2
  408. package/src/simple-tree/core/getOrCreateNode.ts +2 -1
  409. package/src/simple-tree/core/schemaCaching.ts +1 -1
  410. package/src/simple-tree/core/treeNodeKernel.ts +9 -6
  411. package/src/simple-tree/core/unhydratedFlexTree.ts +7 -5
  412. package/src/simple-tree/objectNode.ts +2 -2
  413. package/src/simple-tree/proxies.ts +1 -1
  414. package/src/simple-tree/toMapTree.ts +3 -3
  415. package/src/simple-tree/toStoredSchema.ts +2 -1
  416. package/src/simple-tree/treeNodeValid.ts +5 -2
  417. package/src/util/idAllocator.ts +1 -1
  418. package/src/util/index.ts +2 -2
  419. package/src/util/nestedMap.ts +9 -33
  420. package/src/util/utils.ts +20 -12
@@ -0,0 +1,129 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ SchemaFactory,
8
+ type AllowedTypes,
9
+ type FixRecursiveArraySchema,
10
+ type TreeNodeFromImplicitAllowedTypes,
11
+ type ValidateRecursiveSchema,
12
+ } from "./simple-tree/index.js";
13
+
14
+ const sf = new SchemaFactory("com.fluidframework.json");
15
+
16
+ /**
17
+ * Utilities for storing JSON data in {@link TreeNode}s.
18
+ * @remarks
19
+ * Schema which replicate the JSON data model with {@link TreeNode}s.
20
+ *
21
+ * This allows JSON to be losslessly round-tripped through a tree with the following limitations:
22
+ *
23
+ * 1. Only information that would be preserved by JSON.parse is preserved. This means (among other things) that numbers are limited to JavasScript's numeric precision.
24
+ *
25
+ * 2. The order of fields on an object is not preserved. The resulting order is arbitrary.
26
+ *
27
+ * JSON data can be imported from JSON into this format using `JSON.parse` then {@link TreeAlpha.importConcise} with the {@link JsonAsTree.(Tree:variable)} schema.
28
+ *
29
+ * @alpha
30
+ */
31
+ export namespace JsonAsTree {
32
+ /**
33
+ * {@link AllowedTypes} for primitives types allowed in JSON.
34
+ * @alpha
35
+ */
36
+ export const Primitive = [
37
+ sf.null,
38
+ sf.boolean,
39
+ sf.number,
40
+ sf.string,
41
+ ] as const satisfies AllowedTypes;
42
+
43
+ /**
44
+ * @alpha
45
+ */
46
+ export type Primitive = TreeNodeFromImplicitAllowedTypes<typeof Primitive>;
47
+
48
+ /**
49
+ * {@link AllowedTypes} for any content allowed in the {@link JsonAsTree} domain.
50
+ * @example
51
+ * ```typescript
52
+ * const tree = TreeAlpha.importConcise(JsonAsTree.Union, { example: { nested: true }, value: 5 });
53
+ * ```
54
+ * @alpha
55
+ */
56
+ export const Tree = [() => JsonObject, () => Array, ...Primitive] as const;
57
+
58
+ /**
59
+ * @alpha
60
+ */
61
+ export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
62
+
63
+ /**
64
+ * Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
65
+ * @system @alpha
66
+ */
67
+ export const _APIExtractorWorkaroundObjectBase = sf.mapRecursive("object", Tree);
68
+
69
+ /**
70
+ * Arbitrary JSON object as a {@link TreeNode}.
71
+ * @remarks
72
+ * API of the tree node is more aligned with an es6 map than a JS object using its properties like a map.
73
+ * @example
74
+ * ```typescript
75
+ * // Due to TypeScript restrictions on recursive types, the constructor and be somewhat limiting.
76
+ * const fromArray = new JsonAsTreeObject([["a", 0]]);
77
+ * // Using `importConcise` can work better for JSON data:
78
+ * const imported = TreeAlpha.importConcise(JsonAsTree.Object, { a: 0 });
79
+ * // Node API is like a Map:
80
+ * const value = imported.get("a");
81
+ * ```
82
+ * @privateRemarks
83
+ * Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
84
+ * @sealed @alpha
85
+ */
86
+ export class JsonObject extends _APIExtractorWorkaroundObjectBase {}
87
+ {
88
+ type _check = ValidateRecursiveSchema<typeof JsonObject>;
89
+ }
90
+
91
+ /**
92
+ * D.ts bug workaround, see {@link FixRecursiveArraySchema}.
93
+ * @privateRemarks
94
+ * In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
95
+ * Testing for this in examples/utils/import-testing now shows it has to reference JsonAsTree.Array instead.
96
+ * @system @alpha
97
+ */
98
+ export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
99
+ typeof Array
100
+ >;
101
+
102
+ /**
103
+ * Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
104
+ * @system @alpha
105
+ */
106
+ export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
107
+
108
+ /**
109
+ * Arbitrary JSON array as a {@link TreeNode}.
110
+ * @remarks
111
+ * This can be imported using {@link TreeAlpha.importConcise}.
112
+ * @example
113
+ * ```typescript
114
+ * // Due to TypeScript restrictions on recursive types, the constructor can be somewhat limiting.
115
+ * const usingConstructor = new JsonAsTree.Array(["a", 0, new JsonAsTree.Array([1])]);
116
+ * // Using `importConcise` can work better for JSON data:
117
+ * const imported = TreeAlpha.importConcise(JsonAsTree.Array, ["a", 0, [1]]);
118
+ * // Node API is like an Array:
119
+ * const inner: JsonAsTree.Tree = imported[2];
120
+ * assert(Tree.is(inner, JsonAsTree.Array));
121
+ * const leaf = inner[0];
122
+ * ```
123
+ * @sealed @alpha
124
+ */
125
+ export class Array extends _APIExtractorWorkaroundArrayBase {}
126
+ {
127
+ type _check = ValidateRecursiveSchema<typeof Array>;
128
+ }
129
+ }
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.23.0-323641";
9
+ export const pkgVersion = "2.23.0";
@@ -0,0 +1,121 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type { IFluidHandle } from "@fluidframework/core-interfaces";
7
+ import {
8
+ SchemaFactory,
9
+ type FixRecursiveArraySchema,
10
+ type TreeNodeFromImplicitAllowedTypes,
11
+ type ValidateRecursiveSchema,
12
+ } from "./simple-tree/index.js";
13
+ import type { JsonCompatible } from "./util/index.js";
14
+
15
+ const sf = new SchemaFactory("com.fluidframework.serializable");
16
+
17
+ /**
18
+ * Utilities for storing {@link FluidSerializableAsTree.Data|Fluid Serializable data} in {@link TreeNode}s.
19
+ *
20
+ * Same as {@link JsonAsTree} except allows {@link @fluidframework/core-interfaces#(IFluidHandle:interface)}s.
21
+ * @remarks
22
+ * Schema which replicate the Fluid Serializable data model with {@link TreeNode}s.
23
+ *
24
+ * Fluid Serializable data can be imported from the {@link FluidSerializableAsTree.Data|Fluid Serializable format} into this format using {@link TreeAlpha.importConcise} with the {@link FluidSerializableAsTree.(Tree:variable)} schema.
25
+ * @internal
26
+ */
27
+ export namespace FluidSerializableAsTree {
28
+ /**
29
+ * Data which can be serialized by Fluid.
30
+ * @remarks
31
+ * Can be encoded as a {@link FluidSerializableAsTree.(Tree:type)} using {@link TreeAlpha.importConcise}.
32
+ * @internal
33
+ */
34
+ export type Data = JsonCompatible<IFluidHandle>;
35
+
36
+ /**
37
+ * {@link AllowedTypes} for any content allowed in the {@link FluidSerializableAsTree} domain.
38
+ * @example
39
+ * ```typescript
40
+ * const tree = TreeAlpha.importConcise(FluidSerializableAsTree.Tree, { example: { nested: true }, value: 5 });
41
+ * ```
42
+ * @internal
43
+ */
44
+ export const Tree = [
45
+ () => FluidSerializableObject,
46
+ () => Array,
47
+ ...SchemaFactory.leaves,
48
+ ] as const;
49
+
50
+ /**
51
+ * @internal
52
+ */
53
+ export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
54
+
55
+ /**
56
+ * Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
57
+ * @system @internal
58
+ */
59
+ export const _APIExtractorWorkaroundObjectBase = sf.mapRecursive("object", Tree);
60
+
61
+ /**
62
+ * Arbitrary Fluid Serializable object as a {@link TreeNode}.
63
+ * @remarks
64
+ * API of the tree node is more aligned with an es6 map than a JS object using its properties like a map.
65
+ * @example
66
+ * ```typescript
67
+ * // Due to TypeScript restrictions on recursive types, the constructor and be somewhat limiting.
68
+ * const fromArray = new JsonAsTreeObject([["a", 0]]);
69
+ * // Using `importConcise` can work better for Fluid Serializable data:
70
+ * const imported = TreeAlpha.importConcise(FluidSerializableAsTree.Object, { a: 0 });
71
+ * // Node API is like a Map:
72
+ * const value = imported.get("a");
73
+ * ```
74
+ * @privateRemarks
75
+ * Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
76
+ * @sealed @internal
77
+ */
78
+ export class FluidSerializableObject extends _APIExtractorWorkaroundObjectBase {}
79
+ {
80
+ type _check = ValidateRecursiveSchema<typeof FluidSerializableObject>;
81
+ }
82
+
83
+ /**
84
+ * D.ts bug workaround, see {@link FixRecursiveArraySchema}.
85
+ * @privateRemarks
86
+ * In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
87
+ * Testing for this in examples/utils/import-testing now shows it has to reference FluidSerializableAsTree.Array instead.
88
+ * @system @internal
89
+ */
90
+ export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
91
+ typeof Array
92
+ >;
93
+
94
+ /**
95
+ * Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
96
+ * @system @internal
97
+ */
98
+ export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
99
+
100
+ /**
101
+ * Arbitrary Fluid Serializable array as a {@link TreeNode}.
102
+ * @remarks
103
+ * This can be imported using {@link TreeAlpha.importConcise}.
104
+ * @example
105
+ * ```typescript
106
+ * // Due to TypeScript restrictions on recursive types, the constructor can be somewhat limiting.
107
+ * const usingConstructor = new FluidSerializableAsTree.Array(["a", 0, new FluidSerializableAsTree.Array([1])]);
108
+ * // Using `importConcise` can work better for Fluid Serializable data:
109
+ * const imported = TreeAlpha.importConcise(FluidSerializableAsTree.Array, ["a", 0, [1]]);
110
+ * // Node API is like an Array:
111
+ * const inner: FluidSerializableAsTree.Tree = imported[2];
112
+ * assert(Tree.is(inner, FluidSerializableAsTree.Array));
113
+ * const leaf = inner[0];
114
+ * ```
115
+ * @sealed @internal
116
+ */
117
+ export class Array extends _APIExtractorWorkaroundArrayBase {}
118
+ {
119
+ type _check = ValidateRecursiveSchema<typeof Array>;
120
+ }
121
+ }
@@ -21,7 +21,6 @@ export {
21
21
  ForestTypeOptimized,
22
22
  ForestTypeExpensiveDebug,
23
23
  ForestTypeReference,
24
- type IChannelView,
25
24
  } from "./sharedTree.js";
26
25
 
27
26
  export {
@@ -198,7 +198,7 @@ export function initialize(checkout: ITreeCheckout, treeContent: TreeStoredConte
198
198
  break;
199
199
  }
200
200
  default: {
201
- fail("unexpected root field kind during initialize");
201
+ fail(0xac7 /* unexpected root field kind during initialize */);
202
202
  }
203
203
  }
204
204
  });
@@ -13,10 +13,10 @@ import type {
13
13
  IChannelAttributes,
14
14
  IFluidDataStoreRuntime,
15
15
  IChannelStorageService,
16
- IChannel,
17
16
  } from "@fluidframework/datastore-definitions/internal";
18
17
  import {
19
18
  SharedObject,
19
+ type IChannelView,
20
20
  type IFluidSerializer,
21
21
  type ISharedObject,
22
22
  } from "@fluidframework/shared-object-base/internal";
@@ -101,13 +101,7 @@ import { SharedTreeChangeFamily } from "./sharedTreeChangeFamily.js";
101
101
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
102
102
  import type { SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
103
103
  import { type TreeCheckout, type BranchableTree, createTreeCheckout } from "./treeCheckout.js";
104
- import {
105
- Breakable,
106
- breakingClass,
107
- fail,
108
- throwIfBroken,
109
- type WithBreakable,
110
- } from "../util/index.js";
104
+ import { Breakable, breakingClass, fail, throwIfBroken } from "../util/index.js";
111
105
 
112
106
  /**
113
107
  * Copy of data from an {@link ITreePrivate} at some point in time.
@@ -133,14 +127,6 @@ export interface SharedTreeContentSnapshot {
133
127
  readonly removed: [string | number | undefined, number, JsonableTree][];
134
128
  }
135
129
 
136
- /**
137
- * Information about a Fluid channel.
138
- * @privateRemarks
139
- * This is distinct from {@link IChannel} as it omits the APIs used by the runtime to manage the channel and instead only has things which are useful (and safe) to expose to users of the channel.
140
- * @internal
141
- */
142
- export type IChannelView = Pick<IChannel, "id" | "attributes" | "isAttached">;
143
-
144
130
  /**
145
131
  * {@link ITree} extended with some non-public APIs.
146
132
  * @internal
@@ -162,6 +148,11 @@ export interface ITreePrivate extends ITreeInternal {
162
148
  * This does not include everything that is included in a tree summary, since information about how to merge future edits is omitted.
163
149
  */
164
150
  contentSnapshot(): SharedTreeContentSnapshot;
151
+
152
+ /**
153
+ * Access to internals for testing.
154
+ */
155
+ readonly kernel: SharedTreeKernel;
165
156
  }
166
157
 
167
158
  /**
@@ -216,17 +207,10 @@ function getCodecVersions(formatVersion: number): ExplicitCodecVersions {
216
207
  /**
217
208
  * Shared object wrapping {@link SharedTreeKernel}.
218
209
  */
219
- export class SharedTree extends SharedObject implements ISharedTree, WithBreakable {
220
- public readonly breaker: Breakable = new Breakable("Shared Tree");
210
+ export class SharedTree extends SharedObject implements ISharedTree {
211
+ private readonly breaker: Breakable = new Breakable("Shared Tree");
221
212
 
222
- public get checkout(): TreeCheckout {
223
- return this.kernel.checkout;
224
- }
225
- public get storedSchema(): TreeStoredSchemaRepository {
226
- return this.checkout.storedSchema;
227
- }
228
-
229
- private readonly kernel: SharedTreeKernel;
213
+ public readonly kernel: SharedTreeKernel;
230
214
 
231
215
  public constructor(
232
216
  id: string,
@@ -251,10 +235,6 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
251
235
  );
252
236
  }
253
237
 
254
- public get editor(): SharedTreeEditBuilder {
255
- return this.kernel.getEditor();
256
- }
257
-
258
238
  public summarizeCore(
259
239
  serializer: IFluidSerializer,
260
240
  telemetryContext?: ITelemetryContext,
@@ -275,7 +255,9 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
275
255
  this.kernel.processMessagesCore(messagesCollection);
276
256
  }
277
257
 
278
- protected onDisconnect(): void {}
258
+ protected onDisconnect(): void {
259
+ this.kernel.onDisconnect();
260
+ }
279
261
 
280
262
  public exportVerbose(): VerboseTree | undefined {
281
263
  return this.kernel.exportVerbose();
@@ -488,7 +470,7 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
488
470
  cursor.enterNode(0);
489
471
  return verboseFromCursor(cursor, this.storedSchema.nodeSchema);
490
472
  } else {
491
- fail("Invalid document root length");
473
+ fail(0xac8 /* Invalid document root length */);
492
474
  }
493
475
  } finally {
494
476
  cursor.free();
@@ -586,6 +568,8 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
586
568
  super.submitCommit(commit, schemaAndPolicy, isResubmit),
587
569
  );
588
570
  }
571
+
572
+ public onDisconnect(): void {}
589
573
  }
590
574
 
591
575
  /**
@@ -612,13 +596,13 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
612
596
  export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
613
597
  treeOrView: ITree | TreeViewAlpha<T>,
614
598
  ): BranchableTree {
615
- assert(
616
- treeOrView instanceof SharedTree || treeOrView instanceof SchematizingSimpleTreeView,
617
- 0xa48 /* Unsupported implementation */,
618
- );
619
- const checkout: TreeCheckout = treeOrView.checkout;
599
+ if (treeOrView instanceof SchematizingSimpleTreeView) {
600
+ return treeOrView.checkout as unknown as BranchableTree;
601
+ }
602
+ const kernel = (treeOrView as ITree as ITreePrivate).kernel;
603
+ assert(kernel instanceof SharedTreeKernel, 0xb56 /* Invalid ITree */);
620
604
  // This cast is safe so long as TreeCheckout supports all the operations on the branch interface.
621
- return checkout as unknown as BranchableTree;
605
+ return kernel.checkout as unknown as BranchableTree;
622
606
  }
623
607
 
624
608
  /**
@@ -783,7 +767,8 @@ function verboseFromCursor(
783
767
  schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
784
768
  ): VerboseTree {
785
769
  const fields = customFromCursorStored(reader, schema, verboseFromCursor);
786
- const nodeSchema = schema.get(reader.type) ?? fail("missing schema for type in cursor");
770
+ const nodeSchema =
771
+ schema.get(reader.type) ?? fail(0xac9 /* missing schema for type in cursor */);
787
772
  if (nodeSchema instanceof LeafNodeStoredSchema) {
788
773
  return fields as CustomTreeValue<IFluidHandle>;
789
774
  }
@@ -811,7 +796,7 @@ function exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFie
811
796
  assert(schema.types.size === 0, 0xa94 /* invalid forbidden field */);
812
797
  break;
813
798
  default:
814
- fail("invalid field kind");
799
+ fail(0xaca /* invalid field kind */);
815
800
  }
816
801
  return { kind, allowedTypes: schema.types };
817
802
  }
@@ -838,5 +823,5 @@ function exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeS
838
823
  if (schema instanceof LeafNodeStoredSchema) {
839
824
  return { kind: NodeKind.Leaf, leafKind: schema.leafValue };
840
825
  }
841
- fail("invalid schema kind");
826
+ fail(0xacb /* invalid schema kind */);
842
827
  }
@@ -151,7 +151,7 @@ export class SharedTreeChangeFamily
151
151
  };
152
152
  }
153
153
  default:
154
- fail("Unknown SharedTree change type.");
154
+ fail(0xacc /* Unknown SharedTree change type. */);
155
155
  }
156
156
  };
157
157
  return {
@@ -310,7 +310,11 @@ export const TreeAlpha: {
310
310
  };
311
311
 
312
312
  const cursor = borrowCursorFromTreeNodeOrValue(node);
313
- return conciseFromCursor(cursor, tryGetSchema(node) ?? fail("invalid input"), config);
313
+ return conciseFromCursor(
314
+ cursor,
315
+ tryGetSchema(node) ?? fail(0xacd /* invalid input */),
316
+ config,
317
+ );
314
318
  },
315
319
 
316
320
  exportVerbose<T>(
@@ -325,7 +329,11 @@ export const TreeAlpha: {
325
329
  };
326
330
 
327
331
  const cursor = borrowCursorFromTreeNodeOrValue(node);
328
- return verboseFromCursor(cursor, tryGetSchema(node) ?? fail("invalid input"), config);
332
+ return verboseFromCursor(
333
+ cursor,
334
+ tryGetSchema(node) ?? fail(0xace /* invalid input */),
335
+ config,
336
+ );
329
337
  },
330
338
 
331
339
  exportCompressed(
@@ -335,7 +343,7 @@ export const TreeAlpha: {
335
343
  idCompressor?: IIdCompressor;
336
344
  },
337
345
  ): JsonCompatible<IFluidHandle> {
338
- const schema = tryGetSchema(node) ?? fail("invalid input");
346
+ const schema = tryGetSchema(node) ?? fail(0xacf /* invalid input */);
339
347
  const format = versionToFormat[options.oldestCompatibleClient];
340
348
  const codec = makeFieldBatchCodec({ jsonValidator: noopValidator }, format);
341
349
  const cursor = borrowFieldCursorFromTreeNodeOrValue(node);
@@ -375,7 +383,7 @@ function borrowCursorFromTreeNodeOrValue(
375
383
  ): ITreeCursorSynchronous {
376
384
  if (isTreeValue(node)) {
377
385
  return cursorFromInsertable<UnsafeUnknownSchema>(
378
- tryGetSchema(node) ?? fail("missing schema"),
386
+ tryGetSchema(node) ?? fail(0xad0 /* missing schema */),
379
387
  node,
380
388
  );
381
389
  }
@@ -524,7 +524,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
524
524
  // original (reinstated) schema.
525
525
  this.storedSchema.apply(change.innerChange.schema.new);
526
526
  } else {
527
- fail("Unknown Shared Tree change type.");
527
+ fail(0xad1 /* Unknown Shared Tree change type. */);
528
528
  }
529
529
  }
530
530
  }
@@ -242,7 +242,7 @@ export class EditManager<
242
242
  private trackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {
243
243
  const trunkCommit =
244
244
  findCommonAncestor(this.trunk.getHead(), b.getHead()) ??
245
- fail("Expected branch to be related to trunk");
245
+ fail(0xad2 /* Expected branch to be related to trunk */);
246
246
  const sequenceId = this.getCommitSequenceId(trunkCommit);
247
247
  const branches = getOrCreate(this.trunkBranches, sequenceId, () => new Set());
248
248
 
@@ -253,10 +253,10 @@ export class EditManager<
253
253
  private untrackBranch(b: SharedTreeBranch<TEditor, TChangeset>): void {
254
254
  const trunkCommit =
255
255
  findCommonAncestor(this.trunk.getHead(), b.getHead()) ??
256
- fail("Expected branch to be related to trunk");
256
+ fail(0xad3 /* Expected branch to be related to trunk */);
257
257
  const sequenceId = this.getCommitSequenceId(trunkCommit);
258
258
  const branches =
259
- this.trunkBranches.get(sequenceId) ?? fail("Expected branch to be tracked");
259
+ this.trunkBranches.get(sequenceId) ?? fail(0xad4 /* Expected branch to be tracked */);
260
260
 
261
261
  assert(branches.delete(b), 0x671 /* Expected branch to be tracked */);
262
262
  if (branches.size === 0) {
@@ -500,7 +500,8 @@ export class EditManager<
500
500
  0xa61 /* Serialized trunk should not include the trunk base */,
501
501
  );
502
502
  const metadata =
503
- this.trunkMetadata.get(c.revision) ?? fail("Expected metadata for trunk commit");
503
+ this.trunkMetadata.get(c.revision) ??
504
+ fail(0xad5 /* Expected metadata for trunk commit */);
504
505
  const commit: SequencedCommit<TChangeset> = {
505
506
  change: c.change,
506
507
  revision: c.revision,
@@ -519,7 +520,7 @@ export class EditManager<
519
520
  const branchPath: GraphCommit<TChangeset>[] = [];
520
521
  const ancestor =
521
522
  findCommonAncestor([branch.getHead(), branchPath], this.trunk.getHead()) ??
522
- fail("Expected branch to be based on trunk");
523
+ fail(0xad6 /* Expected branch to be based on trunk */);
523
524
 
524
525
  const base = ancestor === this.trunkBase ? rootRevision : ancestor.revision;
525
526
  return [
@@ -582,7 +583,7 @@ export class EditManager<
582
583
  for (const [sessionId, branch] of data.peerLocalBranches) {
583
584
  const commit =
584
585
  trunkRevisionCache.get(branch.base) ??
585
- fail("Expected summary branch to be based off of a revision in the trunk");
586
+ fail(0xad7 /* Expected summary branch to be based off of a revision in the trunk */);
586
587
 
587
588
  this.peerLocalBranches.set(
588
589
  sessionId,
@@ -663,7 +664,7 @@ export class EditManager<
663
664
  sequenceNumber: SeqNumber,
664
665
  referenceSequenceNumber: SeqNumber,
665
666
  ): void {
666
- assert(newCommits.length > 0, "Expected at least one sequenced change");
667
+ assert(newCommits.length > 0, 0xad8 /* Expected at least one sequenced change */);
667
668
  assert(
668
669
  sequenceNumber > this.minimumSequenceNumber,
669
670
  0x713 /* Expected change sequence number to exceed the last known minimum sequence number */,
@@ -14,7 +14,10 @@ import type {
14
14
  ITelemetryContext,
15
15
  } from "@fluidframework/runtime-definitions/internal";
16
16
  import { SummaryTreeBuilder } from "@fluidframework/runtime-utils/internal";
17
- import type { IFluidSerializer } from "@fluidframework/shared-object-base/internal";
17
+ import type {
18
+ IChannelView,
19
+ IFluidSerializer,
20
+ } from "@fluidframework/shared-object-base/internal";
18
21
 
19
22
  import type { ICodecOptions, IJsonCodec } from "../codec/index.js";
20
23
  import {
@@ -51,7 +54,6 @@ import { DefaultResubmitMachine } from "./defaultResubmitMachine.js";
51
54
  import { BranchCommitEnricher } from "./branchCommitEnricher.js";
52
55
  import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
53
56
  import type { IFluidLoadable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
54
- import type { IChannelView } from "../shared-tree/index.js";
55
57
 
56
58
  // TODO: Organize this to be adjacent to persisted types.
57
59
  const summarizablesTreeKey = "indexes";
@@ -370,13 +372,13 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
370
372
  if (messagesSessionId !== undefined) {
371
373
  assert(
372
374
  messagesSessionId === sessionId,
373
- "All messages in a bunch must have the same session ID",
375
+ 0xad9 /* All messages in a bunch must have the same session ID */,
374
376
  );
375
377
  }
376
378
  messagesSessionId = sessionId;
377
379
  }
378
380
 
379
- assert(messagesSessionId !== undefined, "Messages must have a session ID");
381
+ assert(messagesSessionId !== undefined, 0xada /* Messages must have a session ID */);
380
382
 
381
383
  this.editManager.addSequencedChanges(
382
384
  commits,
@@ -79,7 +79,7 @@ export function customFromCursor<TChild, THandle>(
79
79
  ) => TChild,
80
80
  ): CustomTree<TChild, THandle> {
81
81
  const type = reader.type;
82
- const nodeSchema = schema.get(type) ?? fail("missing schema for type in cursor");
82
+ const nodeSchema = schema.get(type) ?? fail(0xb2e /* missing schema for type in cursor */);
83
83
 
84
84
  switch (type) {
85
85
  case numberSchema.identifier:
@@ -109,7 +109,7 @@ export function customFromCursor<TChild, THandle>(
109
109
  const key =
110
110
  isObjectNodeSchema(nodeSchema) && !options.useStoredKeys
111
111
  ? (nodeSchema.storedKeyToPropertyKey.get(storedKey) ??
112
- fail("missing property key"))
112
+ fail(0xb2f /* missing property key */))
113
113
  : storedKey;
114
114
  // Length is checked above.
115
115
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -138,7 +138,7 @@ export function customFromCursorStored<TChild>(
138
138
  ) => TChild,
139
139
  ): CustomTree<TChild, IFluidHandle> {
140
140
  const type = reader.type;
141
- const nodeSchema = schema.get(type) ?? fail("missing schema for type in cursor");
141
+ const nodeSchema = schema.get(type) ?? fail(0xb30 /* missing schema for type in cursor */);
142
142
 
143
143
  if (nodeSchema instanceof LeafNodeStoredSchema) {
144
144
  assert(valueSchemaAllows(nodeSchema.leafValue, reader.value), 0xa9c /* invalid value */);
@@ -138,7 +138,7 @@ export function adaptEnum<
138
138
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
139
139
  const factoryOut = <TValue extends Values>(value: TValue) => {
140
140
  return new out[
141
- inverse.get(value) ?? fail("missing enum value")
141
+ inverse.get(value) ?? fail(0xb31 /* missing enum value */)
142
142
  // "extends unknown" is required here to handle when TValue is an union: each member of the union should be processed independently.
143
143
  ]() as TValue extends unknown
144
144
  ? NodeFromSchema<ReturnType<typeof singletonSchema<TScope, TValue>>>
@@ -174,7 +174,7 @@ export type ValidateRecursiveSchema<
174
174
  * ```typescript
175
175
  * // Workaround to avoid
176
176
  * // `error TS2310: Type 'RecursiveArray' recursively references itself as a base type.` in the d.ts file.
177
- * export declare const _RecursiveArrayWorkaround: FixRecursiveArraySchema<typeof RecursiveArray>;
177
+ * export declare type _RecursiveArrayWorkaround = FixRecursiveArraySchema<typeof RecursiveArray>;
178
178
  * export class RecursiveArray extends schema.arrayRecursive("RA", [() => RecursiveArray]) {}
179
179
  * {
180
180
  * type _check = ValidateRecursiveSchema<typeof RecursiveArray>;
@@ -164,7 +164,7 @@ export function createSimpleTreeIndex<
164
164
  return makeGenericKeyFinder<TKey>(brand(keyLocation), isKeyValid);
165
165
  }
166
166
  } else {
167
- fail("node is out of schema");
167
+ fail(0xb32 /* node is out of schema */);
168
168
  }
169
169
  }
170
170
  : (schemaIdentifier: TreeNodeSchemaIdentifier) => {
@@ -221,11 +221,11 @@ function makeGenericKeyFinder<TKey extends TreeIndexKey>(
221
221
  cursor.exitField();
222
222
 
223
223
  if (value === undefined) {
224
- fail("a value for the key does not exist");
224
+ fail(0xb33 /* a value for the key does not exist */);
225
225
  }
226
226
 
227
227
  if (!isKeyValid(value)) {
228
- fail("the key is an unexpected type");
228
+ fail(0xb34 /* the key is an unexpected type */);
229
229
  }
230
230
 
231
231
  return value;
@@ -376,7 +376,7 @@ export function checkUnion(union: Iterable<TreeNodeSchema>, errors: string[]): v
376
376
  // For each field of schema, remove schema from possiblyAmbiguous that do not have that field
377
377
  for (const [key, field] of schema.fields) {
378
378
  if (field.kind === FieldKind.Required) {
379
- const withKey = allObjectKeys.get(key) ?? fail("missing schema");
379
+ const withKey = allObjectKeys.get(key) ?? fail(0xb35 /* missing schema */);
380
380
  for (const candidate of possiblyAmbiguous) {
381
381
  if (!withKey.has(candidate)) {
382
382
  possiblyAmbiguous.delete(candidate);