@fluidframework/tree 2.22.1 → 2.23.0-325054

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 (515) hide show
  1. package/.vscode/extensions.json +1 -0
  2. package/.vscode/settings.json +1 -0
  3. package/CHANGELOG.md +47 -0
  4. package/api-report/tree.alpha.api.md +169 -10
  5. package/api-report/tree.beta.api.md +101 -9
  6. package/api-report/tree.legacy.alpha.api.md +101 -9
  7. package/api-report/tree.legacy.public.api.md +101 -9
  8. package/api-report/tree.public.api.md +101 -9
  9. package/dist/alpha.d.ts +20 -0
  10. package/dist/beta.d.ts +15 -0
  11. package/dist/codec/codec.js +3 -3
  12. package/dist/codec/codec.js.map +1 -1
  13. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  14. package/dist/codec/discriminatedUnions.js +1 -1
  15. package/dist/codec/discriminatedUnions.js.map +1 -1
  16. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  17. package/dist/core/schema-stored/schema.js +3 -3
  18. package/dist/core/schema-stored/schema.js.map +1 -1
  19. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  20. package/dist/core/tree/anchorSet.js +18 -13
  21. package/dist/core/tree/anchorSet.js.map +1 -1
  22. package/dist/core/tree/treeTextFormat.js +1 -1
  23. package/dist/core/tree/treeTextFormat.js.map +1 -1
  24. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/basicChunk.js +11 -8
  26. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -2
  28. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  30. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  32. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  35. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  36. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  37. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  39. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  40. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  42. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  44. package/dist/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  45. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  46. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  47. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  48. package/dist/feature-libraries/default-schema/schemaChecker.js +1 -1
  49. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  51. package/dist/feature-libraries/flex-tree/lazyField.js +4 -3
  52. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  53. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyNode.js +5 -4
  55. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  56. package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  57. package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  58. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  59. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  60. package/dist/feature-libraries/modular-schema/comparison.js +6 -4
  61. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  62. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  63. package/dist/feature-libraries/modular-schema/isNeverTree.js +4 -4
  64. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  65. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  66. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  67. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  68. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +10 -11
  69. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  70. package/dist/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  71. package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  72. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  73. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  74. package/dist/feature-libraries/schema-index/codec.js +1 -1
  75. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  76. package/dist/feature-libraries/sequence-field/compose.js +1 -1
  77. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  78. package/dist/feature-libraries/sequence-field/invert.js +1 -1
  79. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  80. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  81. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  82. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  83. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  84. package/dist/feature-libraries/sequence-field/utils.js +1 -1
  85. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  86. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  87. package/dist/feature-libraries/treeCursorUtils.js +6 -4
  88. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  89. package/dist/index.d.ts +4 -2
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +10 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/jsonDomainSchema.d.ts +113 -0
  94. package/dist/jsonDomainSchema.d.ts.map +1 -0
  95. package/dist/jsonDomainSchema.js +101 -0
  96. package/dist/jsonDomainSchema.js.map +1 -0
  97. package/dist/legacy.d.ts +15 -0
  98. package/dist/packageVersion.d.ts +1 -1
  99. package/dist/packageVersion.d.ts.map +1 -1
  100. package/dist/packageVersion.js +1 -1
  101. package/dist/packageVersion.js.map +1 -1
  102. package/dist/public.d.ts +15 -0
  103. package/dist/serializableDomainSchema.d.ts +108 -0
  104. package/dist/serializableDomainSchema.d.ts.map +1 -0
  105. package/dist/serializableDomainSchema.js +90 -0
  106. package/dist/serializableDomainSchema.js.map +1 -0
  107. package/dist/shared-tree/index.d.ts +1 -1
  108. package/dist/shared-tree/index.d.ts.map +1 -1
  109. package/dist/shared-tree/index.js.map +1 -1
  110. package/dist/shared-tree/schematizeTree.js +1 -1
  111. package/dist/shared-tree/schematizeTree.js.map +1 -1
  112. package/dist/shared-tree/sharedTree.d.ts +37 -20
  113. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  114. package/dist/shared-tree/sharedTree.js +17 -17
  115. package/dist/shared-tree/sharedTree.js.map +1 -1
  116. package/dist/shared-tree/sharedTreeChangeFamily.js +1 -1
  117. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  118. package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
  119. package/dist/shared-tree/treeApiAlpha.js +4 -4
  120. package/dist/shared-tree/treeApiAlpha.js.map +1 -1
  121. package/dist/shared-tree/treeCheckout.js +1 -1
  122. package/dist/shared-tree/treeCheckout.js.map +1 -1
  123. package/dist/shared-tree-core/editManager.d.ts +11 -2
  124. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  125. package/dist/shared-tree-core/editManager.js +70 -34
  126. package/dist/shared-tree-core/editManager.js.map +1 -1
  127. package/dist/shared-tree-core/resubmitMachine.d.ts +2 -0
  128. package/dist/shared-tree-core/resubmitMachine.d.ts.map +1 -1
  129. package/dist/shared-tree-core/resubmitMachine.js.map +1 -1
  130. package/dist/shared-tree-core/sharedTreeCore.d.ts +10 -3
  131. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  132. package/dist/shared-tree-core/sharedTreeCore.js +42 -7
  133. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  134. package/dist/simple-tree/api/component.d.ts +30 -0
  135. package/dist/simple-tree/api/component.d.ts.map +1 -0
  136. package/dist/simple-tree/api/component.js +26 -0
  137. package/dist/simple-tree/api/component.js.map +1 -0
  138. package/dist/simple-tree/api/customTree.js +3 -3
  139. package/dist/simple-tree/api/customTree.js.map +1 -1
  140. package/dist/simple-tree/api/index.d.ts +2 -1
  141. package/dist/simple-tree/api/index.d.ts.map +1 -1
  142. package/dist/simple-tree/api/index.js +3 -1
  143. package/dist/simple-tree/api/index.js.map +1 -1
  144. package/dist/simple-tree/api/schemaCreationUtilities.js +1 -1
  145. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  146. package/dist/simple-tree/api/schemaFactory.d.ts +0 -8
  147. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  148. package/dist/simple-tree/api/schemaFactory.js +4 -25
  149. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  150. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  151. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  152. package/dist/simple-tree/api/simpleTreeIndex.js +3 -3
  153. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  154. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  155. package/dist/simple-tree/api/tree.js +2 -3
  156. package/dist/simple-tree/api/tree.js.map +1 -1
  157. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  158. package/dist/simple-tree/api/treeNodeApi.js +7 -18
  159. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  160. package/dist/simple-tree/api/typesUnsafe.d.ts +127 -19
  161. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  162. package/dist/simple-tree/api/typesUnsafe.js +17 -0
  163. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  164. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  165. package/dist/simple-tree/api/verboseTree.js +5 -4
  166. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  167. package/dist/simple-tree/api/view.js +1 -1
  168. package/dist/simple-tree/api/view.js.map +1 -1
  169. package/dist/simple-tree/arrayNode.d.ts +1 -1
  170. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  171. package/dist/simple-tree/arrayNode.js +2 -2
  172. package/dist/simple-tree/arrayNode.js.map +1 -1
  173. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  174. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  175. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  176. package/dist/simple-tree/core/schemaCaching.js +1 -1
  177. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  178. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  179. package/dist/simple-tree/core/treeNodeKernel.js +6 -6
  180. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  181. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  182. package/dist/simple-tree/core/unhydratedFlexTree.js +5 -5
  183. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  184. package/dist/simple-tree/flexList.d.ts +4 -5
  185. package/dist/simple-tree/flexList.d.ts.map +1 -1
  186. package/dist/simple-tree/flexList.js +1 -14
  187. package/dist/simple-tree/flexList.js.map +1 -1
  188. package/dist/simple-tree/index.d.ts +4 -4
  189. package/dist/simple-tree/index.d.ts.map +1 -1
  190. package/dist/simple-tree/index.js +6 -2
  191. package/dist/simple-tree/index.js.map +1 -1
  192. package/dist/simple-tree/objectNode.d.ts +25 -2
  193. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  194. package/dist/simple-tree/objectNode.js +4 -2
  195. package/dist/simple-tree/objectNode.js.map +1 -1
  196. package/dist/simple-tree/proxies.js +1 -1
  197. package/dist/simple-tree/proxies.js.map +1 -1
  198. package/dist/simple-tree/schemaTypes.d.ts +211 -9
  199. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  200. package/dist/simple-tree/schemaTypes.js +83 -2
  201. package/dist/simple-tree/schemaTypes.js.map +1 -1
  202. package/dist/simple-tree/toMapTree.js +3 -3
  203. package/dist/simple-tree/toMapTree.js.map +1 -1
  204. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  205. package/dist/simple-tree/toStoredSchema.js +3 -6
  206. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  207. package/dist/simple-tree/treeNodeValid.d.ts +7 -1
  208. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  209. package/dist/simple-tree/treeNodeValid.js +18 -7
  210. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  211. package/dist/util/idAllocator.js +1 -1
  212. package/dist/util/idAllocator.js.map +1 -1
  213. package/dist/util/index.d.ts +2 -2
  214. package/dist/util/index.d.ts.map +1 -1
  215. package/dist/util/index.js +5 -4
  216. package/dist/util/index.js.map +1 -1
  217. package/dist/util/nestedMap.d.ts +2 -10
  218. package/dist/util/nestedMap.d.ts.map +1 -1
  219. package/dist/util/nestedMap.js +9 -28
  220. package/dist/util/nestedMap.js.map +1 -1
  221. package/dist/util/utils.d.ts +23 -6
  222. package/dist/util/utils.d.ts.map +1 -1
  223. package/dist/util/utils.js +46 -13
  224. package/dist/util/utils.js.map +1 -1
  225. package/lib/alpha.d.ts +20 -0
  226. package/lib/beta.d.ts +15 -0
  227. package/lib/codec/codec.js +3 -3
  228. package/lib/codec/codec.js.map +1 -1
  229. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  230. package/lib/codec/discriminatedUnions.js +1 -1
  231. package/lib/codec/discriminatedUnions.js.map +1 -1
  232. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  233. package/lib/core/schema-stored/schema.js +3 -3
  234. package/lib/core/schema-stored/schema.js.map +1 -1
  235. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  236. package/lib/core/tree/anchorSet.js +19 -14
  237. package/lib/core/tree/anchorSet.js.map +1 -1
  238. package/lib/core/tree/treeTextFormat.js +1 -1
  239. package/lib/core/tree/treeTextFormat.js.map +1 -1
  240. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  241. package/lib/feature-libraries/chunked-forest/basicChunk.js +11 -8
  242. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  243. package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -2
  244. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  245. package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  246. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  247. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  248. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  249. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  250. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  251. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  252. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  253. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  254. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  255. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  256. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  257. package/lib/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  258. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  259. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  260. package/lib/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  261. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  262. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  263. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  264. package/lib/feature-libraries/default-schema/schemaChecker.js +1 -1
  265. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  266. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  267. package/lib/feature-libraries/flex-tree/lazyField.js +4 -3
  268. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  269. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  270. package/lib/feature-libraries/flex-tree/lazyNode.js +5 -4
  271. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  272. package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  273. package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  274. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  275. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  276. package/lib/feature-libraries/modular-schema/comparison.js +6 -4
  277. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  278. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  279. package/lib/feature-libraries/modular-schema/isNeverTree.js +4 -4
  280. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  281. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  282. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  283. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  284. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +11 -12
  285. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  286. package/lib/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  287. package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  288. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  289. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  290. package/lib/feature-libraries/schema-index/codec.js +1 -1
  291. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  292. package/lib/feature-libraries/sequence-field/compose.js +1 -1
  293. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  294. package/lib/feature-libraries/sequence-field/invert.js +1 -1
  295. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  296. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  297. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  298. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  299. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  300. package/lib/feature-libraries/sequence-field/utils.js +1 -1
  301. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  302. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  303. package/lib/feature-libraries/treeCursorUtils.js +6 -4
  304. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  305. package/lib/index.d.ts +4 -2
  306. package/lib/index.d.ts.map +1 -1
  307. package/lib/index.js +3 -1
  308. package/lib/index.js.map +1 -1
  309. package/lib/jsonDomainSchema.d.ts +113 -0
  310. package/lib/jsonDomainSchema.d.ts.map +1 -0
  311. package/lib/jsonDomainSchema.js +98 -0
  312. package/lib/jsonDomainSchema.js.map +1 -0
  313. package/lib/legacy.d.ts +15 -0
  314. package/lib/packageVersion.d.ts +1 -1
  315. package/lib/packageVersion.d.ts.map +1 -1
  316. package/lib/packageVersion.js +1 -1
  317. package/lib/packageVersion.js.map +1 -1
  318. package/lib/public.d.ts +15 -0
  319. package/lib/serializableDomainSchema.d.ts +108 -0
  320. package/lib/serializableDomainSchema.d.ts.map +1 -0
  321. package/lib/serializableDomainSchema.js +87 -0
  322. package/lib/serializableDomainSchema.js.map +1 -0
  323. package/lib/shared-tree/index.d.ts +1 -1
  324. package/lib/shared-tree/index.d.ts.map +1 -1
  325. package/lib/shared-tree/index.js.map +1 -1
  326. package/lib/shared-tree/schematizeTree.js +1 -1
  327. package/lib/shared-tree/schematizeTree.js.map +1 -1
  328. package/lib/shared-tree/sharedTree.d.ts +37 -20
  329. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  330. package/lib/shared-tree/sharedTree.js +18 -18
  331. package/lib/shared-tree/sharedTree.js.map +1 -1
  332. package/lib/shared-tree/sharedTreeChangeFamily.js +1 -1
  333. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  334. package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
  335. package/lib/shared-tree/treeApiAlpha.js +4 -4
  336. package/lib/shared-tree/treeApiAlpha.js.map +1 -1
  337. package/lib/shared-tree/treeCheckout.js +1 -1
  338. package/lib/shared-tree/treeCheckout.js.map +1 -1
  339. package/lib/shared-tree-core/editManager.d.ts +11 -2
  340. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  341. package/lib/shared-tree-core/editManager.js +70 -34
  342. package/lib/shared-tree-core/editManager.js.map +1 -1
  343. package/lib/shared-tree-core/resubmitMachine.d.ts +2 -0
  344. package/lib/shared-tree-core/resubmitMachine.d.ts.map +1 -1
  345. package/lib/shared-tree-core/resubmitMachine.js.map +1 -1
  346. package/lib/shared-tree-core/sharedTreeCore.d.ts +10 -3
  347. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  348. package/lib/shared-tree-core/sharedTreeCore.js +42 -7
  349. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  350. package/lib/simple-tree/api/component.d.ts +30 -0
  351. package/lib/simple-tree/api/component.d.ts.map +1 -0
  352. package/lib/simple-tree/api/component.js +23 -0
  353. package/lib/simple-tree/api/component.js.map +1 -0
  354. package/lib/simple-tree/api/customTree.js +3 -3
  355. package/lib/simple-tree/api/customTree.js.map +1 -1
  356. package/lib/simple-tree/api/index.d.ts +2 -1
  357. package/lib/simple-tree/api/index.d.ts.map +1 -1
  358. package/lib/simple-tree/api/index.js +1 -0
  359. package/lib/simple-tree/api/index.js.map +1 -1
  360. package/lib/simple-tree/api/schemaCreationUtilities.js +1 -1
  361. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  362. package/lib/simple-tree/api/schemaFactory.d.ts +0 -8
  363. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  364. package/lib/simple-tree/api/schemaFactory.js +2 -22
  365. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  366. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  367. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  368. package/lib/simple-tree/api/simpleTreeIndex.js +3 -3
  369. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  370. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  371. package/lib/simple-tree/api/tree.js +3 -4
  372. package/lib/simple-tree/api/tree.js.map +1 -1
  373. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  374. package/lib/simple-tree/api/treeNodeApi.js +9 -20
  375. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  376. package/lib/simple-tree/api/typesUnsafe.d.ts +127 -19
  377. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  378. package/lib/simple-tree/api/typesUnsafe.js +15 -1
  379. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  380. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  381. package/lib/simple-tree/api/verboseTree.js +5 -4
  382. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  383. package/lib/simple-tree/api/view.js +1 -1
  384. package/lib/simple-tree/api/view.js.map +1 -1
  385. package/lib/simple-tree/arrayNode.d.ts +1 -1
  386. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  387. package/lib/simple-tree/arrayNode.js +2 -2
  388. package/lib/simple-tree/arrayNode.js.map +1 -1
  389. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  390. package/lib/simple-tree/core/getOrCreateNode.js +1 -1
  391. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  392. package/lib/simple-tree/core/schemaCaching.js +1 -1
  393. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  394. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  395. package/lib/simple-tree/core/treeNodeKernel.js +6 -6
  396. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  397. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  398. package/lib/simple-tree/core/unhydratedFlexTree.js +5 -5
  399. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  400. package/lib/simple-tree/flexList.d.ts +4 -5
  401. package/lib/simple-tree/flexList.d.ts.map +1 -1
  402. package/lib/simple-tree/flexList.js +0 -12
  403. package/lib/simple-tree/flexList.js.map +1 -1
  404. package/lib/simple-tree/index.d.ts +4 -4
  405. package/lib/simple-tree/index.d.ts.map +1 -1
  406. package/lib/simple-tree/index.js +2 -2
  407. package/lib/simple-tree/index.js.map +1 -1
  408. package/lib/simple-tree/objectNode.d.ts +25 -2
  409. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  410. package/lib/simple-tree/objectNode.js +4 -2
  411. package/lib/simple-tree/objectNode.js.map +1 -1
  412. package/lib/simple-tree/proxies.js +1 -1
  413. package/lib/simple-tree/proxies.js.map +1 -1
  414. package/lib/simple-tree/schemaTypes.d.ts +211 -9
  415. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  416. package/lib/simple-tree/schemaTypes.js +81 -3
  417. package/lib/simple-tree/schemaTypes.js.map +1 -1
  418. package/lib/simple-tree/toMapTree.js +3 -3
  419. package/lib/simple-tree/toMapTree.js.map +1 -1
  420. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  421. package/lib/simple-tree/toStoredSchema.js +5 -8
  422. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  423. package/lib/simple-tree/treeNodeValid.d.ts +7 -1
  424. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  425. package/lib/simple-tree/treeNodeValid.js +18 -7
  426. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  427. package/lib/util/idAllocator.js +1 -1
  428. package/lib/util/idAllocator.js.map +1 -1
  429. package/lib/util/index.d.ts +2 -2
  430. package/lib/util/index.d.ts.map +1 -1
  431. package/lib/util/index.js +2 -2
  432. package/lib/util/index.js.map +1 -1
  433. package/lib/util/nestedMap.d.ts +2 -10
  434. package/lib/util/nestedMap.d.ts.map +1 -1
  435. package/lib/util/nestedMap.js +5 -23
  436. package/lib/util/nestedMap.js.map +1 -1
  437. package/lib/util/utils.d.ts +23 -6
  438. package/lib/util/utils.d.ts.map +1 -1
  439. package/lib/util/utils.js +42 -11
  440. package/lib/util/utils.js.map +1 -1
  441. package/package.json +27 -23
  442. package/src/codec/codec.ts +3 -3
  443. package/src/codec/discriminatedUnions.ts +2 -1
  444. package/src/core/schema-stored/schema.ts +5 -3
  445. package/src/core/tree/anchorSet.ts +37 -26
  446. package/src/core/tree/treeTextFormat.ts +1 -1
  447. package/src/feature-libraries/chunked-forest/basicChunk.ts +11 -8
  448. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  449. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  450. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -2
  451. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +4 -3
  452. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +2 -2
  453. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +4 -3
  454. package/src/feature-libraries/chunked-forest/emptyChunk.ts +14 -14
  455. package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
  456. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -1
  457. package/src/feature-libraries/default-schema/schemaChecker.ts +1 -1
  458. package/src/feature-libraries/flex-tree/lazyField.ts +6 -8
  459. package/src/feature-libraries/flex-tree/lazyNode.ts +6 -4
  460. package/src/feature-libraries/indexing/anchorTreeIndex.ts +2 -1
  461. package/src/feature-libraries/modular-schema/comparison.ts +7 -5
  462. package/src/feature-libraries/modular-schema/isNeverTree.ts +6 -4
  463. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -4
  464. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +16 -12
  465. package/src/feature-libraries/node-key/mockNodeKeyManager.ts +1 -1
  466. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  467. package/src/feature-libraries/schema-index/codec.ts +1 -1
  468. package/src/feature-libraries/sequence-field/compose.ts +1 -1
  469. package/src/feature-libraries/sequence-field/invert.ts +1 -1
  470. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
  471. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
  472. package/src/feature-libraries/sequence-field/utils.ts +1 -1
  473. package/src/feature-libraries/treeCursorUtils.ts +6 -4
  474. package/src/index.ts +22 -1
  475. package/src/jsonDomainSchema.ts +129 -0
  476. package/src/packageVersion.ts +1 -1
  477. package/src/serializableDomainSchema.ts +121 -0
  478. package/src/shared-tree/index.ts +0 -1
  479. package/src/shared-tree/schematizeTree.ts +1 -1
  480. package/src/shared-tree/sharedTree.ts +31 -41
  481. package/src/shared-tree/sharedTreeChangeFamily.ts +1 -1
  482. package/src/shared-tree/treeApiAlpha.ts +12 -4
  483. package/src/shared-tree/treeCheckout.ts +1 -1
  484. package/src/shared-tree-core/editManager.ts +85 -47
  485. package/src/shared-tree-core/resubmitMachine.ts +2 -0
  486. package/src/shared-tree-core/sharedTreeCore.ts +62 -14
  487. package/src/simple-tree/api/component.ts +42 -0
  488. package/src/simple-tree/api/customTree.ts +3 -3
  489. package/src/simple-tree/api/index.ts +7 -0
  490. package/src/simple-tree/api/schemaCreationUtilities.ts +1 -1
  491. package/src/simple-tree/api/schemaFactory.ts +1 -28
  492. package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -1
  493. package/src/simple-tree/api/simpleTreeIndex.ts +3 -3
  494. package/src/simple-tree/api/tree.ts +3 -3
  495. package/src/simple-tree/api/treeNodeApi.ts +10 -18
  496. package/src/simple-tree/api/typesUnsafe.ts +193 -18
  497. package/src/simple-tree/api/verboseTree.ts +8 -4
  498. package/src/simple-tree/api/view.ts +1 -1
  499. package/src/simple-tree/arrayNode.ts +2 -2
  500. package/src/simple-tree/core/getOrCreateNode.ts +2 -1
  501. package/src/simple-tree/core/schemaCaching.ts +1 -1
  502. package/src/simple-tree/core/treeNodeKernel.ts +9 -6
  503. package/src/simple-tree/core/unhydratedFlexTree.ts +7 -5
  504. package/src/simple-tree/flexList.ts +4 -14
  505. package/src/simple-tree/index.ts +25 -1
  506. package/src/simple-tree/objectNode.ts +50 -5
  507. package/src/simple-tree/proxies.ts +1 -1
  508. package/src/simple-tree/schemaTypes.ts +322 -23
  509. package/src/simple-tree/toMapTree.ts +3 -3
  510. package/src/simple-tree/toStoredSchema.ts +5 -7
  511. package/src/simple-tree/treeNodeValid.ts +21 -7
  512. package/src/util/idAllocator.ts +1 -1
  513. package/src/util/index.ts +3 -2
  514. package/src/util/nestedMap.ts +9 -33
  515. package/src/util/utils.ts +52 -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.22.1";
9
+ export const pkgVersion = "2.23.0-325054";
@@ -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";
@@ -29,6 +29,7 @@ import type {
29
29
  ITelemetryContext,
30
30
  IExperimentalIncrementalSummaryContext,
31
31
  ISummaryTreeWithStats,
32
+ IRuntimeMessageCollection,
32
33
  } from "@fluidframework/runtime-definitions/internal";
33
34
  import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
34
35
 
@@ -100,13 +101,7 @@ import { SharedTreeChangeFamily } from "./sharedTreeChangeFamily.js";
100
101
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
101
102
  import type { SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
102
103
  import { type TreeCheckout, type BranchableTree, createTreeCheckout } from "./treeCheckout.js";
103
- import {
104
- Breakable,
105
- breakingClass,
106
- fail,
107
- throwIfBroken,
108
- type WithBreakable,
109
- } from "../util/index.js";
104
+ import { Breakable, breakingClass, fail, throwIfBroken } from "../util/index.js";
110
105
 
111
106
  /**
112
107
  * Copy of data from an {@link ITreePrivate} at some point in time.
@@ -132,14 +127,6 @@ export interface SharedTreeContentSnapshot {
132
127
  readonly removed: [string | number | undefined, number, JsonableTree][];
133
128
  }
134
129
 
135
- /**
136
- * Information about a Fluid channel.
137
- * @privateRemarks
138
- * 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.
139
- * @internal
140
- */
141
- export type IChannelView = Pick<IChannel, "id" | "attributes" | "isAttached">;
142
-
143
130
  /**
144
131
  * {@link ITree} extended with some non-public APIs.
145
132
  * @internal
@@ -161,6 +148,11 @@ export interface ITreePrivate extends ITreeInternal {
161
148
  * This does not include everything that is included in a tree summary, since information about how to merge future edits is omitted.
162
149
  */
163
150
  contentSnapshot(): SharedTreeContentSnapshot;
151
+
152
+ /**
153
+ * Access to internals for testing.
154
+ */
155
+ readonly kernel: SharedTreeKernel;
164
156
  }
165
157
 
166
158
  /**
@@ -215,17 +207,10 @@ function getCodecVersions(formatVersion: number): ExplicitCodecVersions {
215
207
  /**
216
208
  * Shared object wrapping {@link SharedTreeKernel}.
217
209
  */
218
- export class SharedTree extends SharedObject implements ISharedTree, WithBreakable {
219
- 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");
220
212
 
221
- public get checkout(): TreeCheckout {
222
- return this.kernel.checkout;
223
- }
224
- public get storedSchema(): TreeStoredSchemaRepository {
225
- return this.checkout.storedSchema;
226
- }
227
-
228
- private readonly kernel: SharedTreeKernel;
213
+ public readonly kernel: SharedTreeKernel;
229
214
 
230
215
  public constructor(
231
216
  id: string,
@@ -250,10 +235,6 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
250
235
  );
251
236
  }
252
237
 
253
- public get editor(): SharedTreeEditBuilder {
254
- return this.kernel.getEditor();
255
- }
256
-
257
238
  public summarizeCore(
258
239
  serializer: IFluidSerializer,
259
240
  telemetryContext?: ITelemetryContext,
@@ -270,7 +251,13 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
270
251
  this.kernel.processCore(message, local, localOpMetadata);
271
252
  }
272
253
 
273
- protected onDisconnect(): void {}
254
+ protected override processMessagesCore(messagesCollection: IRuntimeMessageCollection): void {
255
+ this.kernel.processMessagesCore(messagesCollection);
256
+ }
257
+
258
+ protected onDisconnect(): void {
259
+ this.kernel.onDisconnect();
260
+ }
274
261
 
275
262
  public exportVerbose(): VerboseTree | undefined {
276
263
  return this.kernel.exportVerbose();
@@ -483,7 +470,7 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
483
470
  cursor.enterNode(0);
484
471
  return verboseFromCursor(cursor, this.storedSchema.nodeSchema);
485
472
  } else {
486
- fail("Invalid document root length");
473
+ fail(0xac8 /* Invalid document root length */);
487
474
  }
488
475
  } finally {
489
476
  cursor.free();
@@ -581,6 +568,8 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
581
568
  super.submitCommit(commit, schemaAndPolicy, isResubmit),
582
569
  );
583
570
  }
571
+
572
+ public onDisconnect(): void {}
584
573
  }
585
574
 
586
575
  /**
@@ -607,13 +596,13 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
607
596
  export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
608
597
  treeOrView: ITree | TreeViewAlpha<T>,
609
598
  ): BranchableTree {
610
- assert(
611
- treeOrView instanceof SharedTree || treeOrView instanceof SchematizingSimpleTreeView,
612
- 0xa48 /* Unsupported implementation */,
613
- );
614
- 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 */);
615
604
  // This cast is safe so long as TreeCheckout supports all the operations on the branch interface.
616
- return checkout as unknown as BranchableTree;
605
+ return kernel.checkout as unknown as BranchableTree;
617
606
  }
618
607
 
619
608
  /**
@@ -778,7 +767,8 @@ function verboseFromCursor(
778
767
  schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
779
768
  ): VerboseTree {
780
769
  const fields = customFromCursorStored(reader, schema, verboseFromCursor);
781
- 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 */);
782
772
  if (nodeSchema instanceof LeafNodeStoredSchema) {
783
773
  return fields as CustomTreeValue<IFluidHandle>;
784
774
  }
@@ -806,7 +796,7 @@ function exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFie
806
796
  assert(schema.types.size === 0, 0xa94 /* invalid forbidden field */);
807
797
  break;
808
798
  default:
809
- fail("invalid field kind");
799
+ fail(0xaca /* invalid field kind */);
810
800
  }
811
801
  return { kind, allowedTypes: schema.types };
812
802
  }
@@ -833,5 +823,5 @@ function exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeS
833
823
  if (schema instanceof LeafNodeStoredSchema) {
834
824
  return { kind: NodeKind.Leaf, leafKind: schema.leafValue };
835
825
  }
836
- fail("invalid schema kind");
826
+ fail(0xacb /* invalid schema kind */);
837
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
  }