@fluidframework/tree 2.63.0-358419 → 2.63.0-359286

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 (345) hide show
  1. package/.eslintrc.cjs +4 -0
  2. package/api-report/tree.alpha.api.md +31 -5
  3. package/api-report/tree.beta.api.md +26 -0
  4. package/api-report/tree.legacy.beta.api.md +26 -0
  5. package/dist/alpha.d.ts +4 -3
  6. package/dist/beta.d.ts +3 -0
  7. package/dist/codec/codec.d.ts +32 -0
  8. package/dist/codec/codec.d.ts.map +1 -1
  9. package/dist/codec/codec.js +32 -1
  10. package/dist/codec/codec.js.map +1 -1
  11. package/dist/codec/index.d.ts +1 -1
  12. package/dist/codec/index.d.ts.map +1 -1
  13. package/dist/codec/index.js +3 -1
  14. package/dist/codec/index.js.map +1 -1
  15. package/dist/core/index.d.ts +2 -2
  16. package/dist/core/index.d.ts.map +1 -1
  17. package/dist/core/index.js +4 -3
  18. package/dist/core/index.js.map +1 -1
  19. package/dist/core/schema-stored/index.d.ts +1 -1
  20. package/dist/core/schema-stored/index.d.ts.map +1 -1
  21. package/dist/core/schema-stored/index.js.map +1 -1
  22. package/dist/core/schema-stored/schema.d.ts +5 -7
  23. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  24. package/dist/core/schema-stored/schema.js +3 -6
  25. package/dist/core/schema-stored/schema.js.map +1 -1
  26. package/dist/core/tree/detachedFieldIndexCodecs.d.ts +4 -1
  27. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndexCodecs.js +5 -1
  29. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  30. package/dist/core/tree/index.d.ts +1 -0
  31. package/dist/core/tree/index.d.ts.map +1 -1
  32. package/dist/core/tree/index.js +3 -1
  33. package/dist/core/tree/index.js.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +3 -2
  35. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  36. package/dist/feature-libraries/chunked-forest/codec/codecs.js +5 -1
  37. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +2 -0
  39. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  40. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  42. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
  44. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  46. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/index.js +2 -1
  48. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  49. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
  50. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  51. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +19 -5
  52. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  53. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  54. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  55. package/dist/feature-libraries/default-schema/index.js +2 -1
  56. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  57. package/dist/feature-libraries/forest-summary/codec.d.ts +4 -1
  58. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  59. package/dist/feature-libraries/forest-summary/codec.js +5 -1
  60. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  61. package/dist/feature-libraries/forest-summary/index.d.ts +1 -0
  62. package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
  63. package/dist/feature-libraries/forest-summary/index.js +3 -1
  64. package/dist/feature-libraries/forest-summary/index.js.map +1 -1
  65. package/dist/feature-libraries/index.d.ts +5 -5
  66. package/dist/feature-libraries/index.d.ts.map +1 -1
  67. package/dist/feature-libraries/index.js +7 -2
  68. package/dist/feature-libraries/index.js.map +1 -1
  69. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  70. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  71. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  72. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  73. package/dist/feature-libraries/schema-edits/index.js +2 -1
  74. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  75. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +4 -1
  76. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  77. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +9 -1
  78. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  79. package/dist/feature-libraries/schema-index/codec.d.ts +2 -1
  80. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  81. package/dist/feature-libraries/schema-index/codec.js +5 -1
  82. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  83. package/dist/feature-libraries/schema-index/index.d.ts +1 -1
  84. package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
  85. package/dist/feature-libraries/schema-index/index.js +2 -1
  86. package/dist/feature-libraries/schema-index/index.js.map +1 -1
  87. package/dist/legacy.d.ts +3 -0
  88. package/dist/packageVersion.d.ts +1 -1
  89. package/dist/packageVersion.js +1 -1
  90. package/dist/packageVersion.js.map +1 -1
  91. package/dist/serializableDomainSchema.d.ts +12 -16
  92. package/dist/serializableDomainSchema.d.ts.map +1 -1
  93. package/dist/serializableDomainSchema.js +8 -8
  94. package/dist/serializableDomainSchema.js.map +1 -1
  95. package/dist/shared-tree/index.d.ts +2 -1
  96. package/dist/shared-tree/index.d.ts.map +1 -1
  97. package/dist/shared-tree/index.js +4 -1
  98. package/dist/shared-tree/index.js.map +1 -1
  99. package/dist/shared-tree/sharedTree.d.ts +18 -2
  100. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  101. package/dist/shared-tree/sharedTree.js +122 -8
  102. package/dist/shared-tree/sharedTree.js.map +1 -1
  103. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +17 -2
  104. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  105. package/dist/shared-tree/sharedTreeChangeCodecs.js +31 -18
  106. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  107. package/dist/shared-tree/treeCheckout.js.map +1 -1
  108. package/dist/shared-tree-core/defaultResubmitMachine.d.ts +7 -12
  109. package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  110. package/dist/shared-tree-core/defaultResubmitMachine.js +53 -73
  111. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  112. package/dist/shared-tree-core/editManagerCodecs.d.ts +7 -4
  113. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  114. package/dist/shared-tree-core/editManagerCodecs.js +42 -11
  115. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  116. package/dist/shared-tree-core/index.d.ts +2 -1
  117. package/dist/shared-tree-core/index.d.ts.map +1 -1
  118. package/dist/shared-tree-core/index.js +6 -1
  119. package/dist/shared-tree-core/index.js.map +1 -1
  120. package/dist/shared-tree-core/messageCodecs.d.ts +7 -4
  121. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  122. package/dist/shared-tree-core/messageCodecs.js +44 -23
  123. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  124. package/dist/shared-tree-core/resubmitMachine.d.ts +9 -18
  125. package/dist/shared-tree-core/resubmitMachine.d.ts.map +1 -1
  126. package/dist/shared-tree-core/resubmitMachine.js.map +1 -1
  127. package/dist/shared-tree-core/sharedTreeCore.d.ts +6 -4
  128. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  129. package/dist/shared-tree-core/sharedTreeCore.js +12 -13
  130. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  131. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +7 -166
  132. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  133. package/dist/simple-tree/api/schemaFactoryAlpha.js +11 -44
  134. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  135. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +90 -1
  136. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  137. package/dist/simple-tree/api/schemaFactoryBeta.js +55 -0
  138. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  139. package/dist/simple-tree/api/treeBeta.d.ts +12 -2
  140. package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
  141. package/dist/simple-tree/api/treeBeta.js +6 -0
  142. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  143. package/dist/simple-tree/api/typesUnsafe.d.ts +1 -1
  144. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  145. package/dist/simple-tree/core/treeNode.d.ts +3 -2
  146. package/dist/simple-tree/core/treeNode.d.ts.map +1 -1
  147. package/dist/simple-tree/core/treeNode.js +3 -2
  148. package/dist/simple-tree/core/treeNode.js.map +1 -1
  149. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  150. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  151. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  152. package/dist/util/brand.d.ts +1 -1
  153. package/dist/util/brand.js.map +1 -1
  154. package/docs/main/compatibility.md +8 -0
  155. package/lib/alpha.d.ts +4 -3
  156. package/lib/beta.d.ts +3 -0
  157. package/lib/codec/codec.d.ts +32 -0
  158. package/lib/codec/codec.d.ts.map +1 -1
  159. package/lib/codec/codec.js +28 -0
  160. package/lib/codec/codec.js.map +1 -1
  161. package/lib/codec/index.d.ts +1 -1
  162. package/lib/codec/index.d.ts.map +1 -1
  163. package/lib/codec/index.js +1 -1
  164. package/lib/codec/index.js.map +1 -1
  165. package/lib/core/index.d.ts +2 -2
  166. package/lib/core/index.d.ts.map +1 -1
  167. package/lib/core/index.js +1 -1
  168. package/lib/core/index.js.map +1 -1
  169. package/lib/core/schema-stored/index.d.ts +1 -1
  170. package/lib/core/schema-stored/index.d.ts.map +1 -1
  171. package/lib/core/schema-stored/index.js.map +1 -1
  172. package/lib/core/schema-stored/schema.d.ts +5 -7
  173. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  174. package/lib/core/schema-stored/schema.js +3 -6
  175. package/lib/core/schema-stored/schema.js.map +1 -1
  176. package/lib/core/tree/detachedFieldIndexCodecs.d.ts +4 -1
  177. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  178. package/lib/core/tree/detachedFieldIndexCodecs.js +3 -0
  179. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  180. package/lib/core/tree/index.d.ts +1 -0
  181. package/lib/core/tree/index.d.ts.map +1 -1
  182. package/lib/core/tree/index.js +1 -0
  183. package/lib/core/tree/index.js.map +1 -1
  184. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +3 -2
  185. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  186. package/lib/feature-libraries/chunked-forest/codec/codecs.js +3 -0
  187. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  188. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +2 -0
  189. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  190. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  191. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
  192. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  193. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  194. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  195. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  196. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  197. package/lib/feature-libraries/chunked-forest/index.js +1 -1
  198. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  199. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
  200. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  201. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +17 -4
  202. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  203. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  204. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  205. package/lib/feature-libraries/default-schema/index.js +1 -1
  206. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  207. package/lib/feature-libraries/forest-summary/codec.d.ts +4 -1
  208. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  209. package/lib/feature-libraries/forest-summary/codec.js +3 -0
  210. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  211. package/lib/feature-libraries/forest-summary/index.d.ts +1 -0
  212. package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
  213. package/lib/feature-libraries/forest-summary/index.js +1 -0
  214. package/lib/feature-libraries/forest-summary/index.js.map +1 -1
  215. package/lib/feature-libraries/index.d.ts +5 -5
  216. package/lib/feature-libraries/index.d.ts.map +1 -1
  217. package/lib/feature-libraries/index.js +5 -5
  218. package/lib/feature-libraries/index.js.map +1 -1
  219. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  220. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  221. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  222. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  223. package/lib/feature-libraries/schema-edits/index.js +1 -1
  224. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  225. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +4 -1
  226. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  227. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -1
  228. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  229. package/lib/feature-libraries/schema-index/codec.d.ts +2 -1
  230. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  231. package/lib/feature-libraries/schema-index/codec.js +3 -0
  232. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  233. package/lib/feature-libraries/schema-index/index.d.ts +1 -1
  234. package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
  235. package/lib/feature-libraries/schema-index/index.js +1 -1
  236. package/lib/feature-libraries/schema-index/index.js.map +1 -1
  237. package/lib/legacy.d.ts +3 -0
  238. package/lib/packageVersion.d.ts +1 -1
  239. package/lib/packageVersion.js +1 -1
  240. package/lib/packageVersion.js.map +1 -1
  241. package/lib/serializableDomainSchema.d.ts +12 -16
  242. package/lib/serializableDomainSchema.d.ts.map +1 -1
  243. package/lib/serializableDomainSchema.js +9 -9
  244. package/lib/serializableDomainSchema.js.map +1 -1
  245. package/lib/shared-tree/index.d.ts +2 -1
  246. package/lib/shared-tree/index.d.ts.map +1 -1
  247. package/lib/shared-tree/index.js +2 -1
  248. package/lib/shared-tree/index.js.map +1 -1
  249. package/lib/shared-tree/sharedTree.d.ts +18 -2
  250. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  251. package/lib/shared-tree/sharedTree.js +126 -13
  252. package/lib/shared-tree/sharedTree.js.map +1 -1
  253. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +17 -2
  254. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  255. package/lib/shared-tree/sharedTreeChangeCodecs.js +30 -18
  256. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  257. package/lib/shared-tree/treeCheckout.js.map +1 -1
  258. package/lib/shared-tree-core/defaultResubmitMachine.d.ts +7 -12
  259. package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  260. package/lib/shared-tree-core/defaultResubmitMachine.js +55 -75
  261. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  262. package/lib/shared-tree-core/editManagerCodecs.d.ts +7 -4
  263. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  264. package/lib/shared-tree-core/editManagerCodecs.js +40 -10
  265. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  266. package/lib/shared-tree-core/index.d.ts +2 -1
  267. package/lib/shared-tree-core/index.d.ts.map +1 -1
  268. package/lib/shared-tree-core/index.js +2 -1
  269. package/lib/shared-tree-core/index.js.map +1 -1
  270. package/lib/shared-tree-core/messageCodecs.d.ts +7 -4
  271. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  272. package/lib/shared-tree-core/messageCodecs.js +42 -22
  273. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  274. package/lib/shared-tree-core/resubmitMachine.d.ts +9 -18
  275. package/lib/shared-tree-core/resubmitMachine.d.ts.map +1 -1
  276. package/lib/shared-tree-core/resubmitMachine.js.map +1 -1
  277. package/lib/shared-tree-core/sharedTreeCore.d.ts +6 -4
  278. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  279. package/lib/shared-tree-core/sharedTreeCore.js +13 -14
  280. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  281. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +7 -166
  282. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  283. package/lib/simple-tree/api/schemaFactoryAlpha.js +12 -45
  284. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  285. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +90 -1
  286. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  287. package/lib/simple-tree/api/schemaFactoryBeta.js +56 -1
  288. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  289. package/lib/simple-tree/api/treeBeta.d.ts +12 -2
  290. package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
  291. package/lib/simple-tree/api/treeBeta.js +7 -1
  292. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  293. package/lib/simple-tree/api/typesUnsafe.d.ts +1 -1
  294. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  295. package/lib/simple-tree/core/treeNode.d.ts +3 -2
  296. package/lib/simple-tree/core/treeNode.d.ts.map +1 -1
  297. package/lib/simple-tree/core/treeNode.js +3 -2
  298. package/lib/simple-tree/core/treeNode.js.map +1 -1
  299. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  300. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  301. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  302. package/lib/util/brand.d.ts +1 -1
  303. package/lib/util/brand.js.map +1 -1
  304. package/package.json +21 -21
  305. package/src/codec/codec.ts +60 -0
  306. package/src/codec/index.ts +3 -0
  307. package/src/core/index.ts +3 -0
  308. package/src/core/schema-stored/index.ts +1 -0
  309. package/src/core/schema-stored/schema.ts +5 -6
  310. package/src/core/tree/detachedFieldIndexCodecs.ts +9 -0
  311. package/src/core/tree/index.ts +6 -0
  312. package/src/feature-libraries/chunked-forest/codec/codecs.ts +6 -1
  313. package/src/feature-libraries/chunked-forest/codec/format.ts +2 -0
  314. package/src/feature-libraries/chunked-forest/codec/index.ts +2 -1
  315. package/src/feature-libraries/chunked-forest/index.ts +2 -0
  316. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +29 -5
  317. package/src/feature-libraries/default-schema/index.ts +2 -0
  318. package/src/feature-libraries/forest-summary/codec.ts +7 -0
  319. package/src/feature-libraries/forest-summary/index.ts +1 -0
  320. package/src/feature-libraries/index.ts +12 -1
  321. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
  322. package/src/feature-libraries/schema-edits/index.ts +5 -1
  323. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +17 -1
  324. package/src/feature-libraries/schema-index/codec.ts +5 -0
  325. package/src/feature-libraries/schema-index/index.ts +1 -0
  326. package/src/packageVersion.ts +1 -1
  327. package/src/serializableDomainSchema.ts +12 -11
  328. package/src/shared-tree/index.ts +6 -0
  329. package/src/shared-tree/sharedTree.ts +151 -11
  330. package/src/shared-tree/sharedTreeChangeCodecs.ts +68 -30
  331. package/src/shared-tree/treeCheckout.ts +1 -1
  332. package/src/shared-tree-core/defaultResubmitMachine.ts +77 -120
  333. package/src/shared-tree-core/editManagerCodecs.ts +62 -9
  334. package/src/shared-tree-core/index.ts +12 -1
  335. package/src/shared-tree-core/messageCodecs.ts +70 -27
  336. package/src/shared-tree-core/resubmitMachine.ts +12 -20
  337. package/src/shared-tree-core/sharedTreeCore.ts +26 -18
  338. package/src/simple-tree/api/schemaFactoryAlpha.ts +16 -296
  339. package/src/simple-tree/api/schemaFactoryBeta.ts +269 -1
  340. package/src/simple-tree/api/treeBeta.ts +36 -1
  341. package/src/simple-tree/api/typesUnsafe.ts +1 -1
  342. package/src/simple-tree/core/treeNode.ts +3 -2
  343. package/src/simple-tree/core/treeNodeKernel.ts +1 -1
  344. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +2 -2
  345. package/src/util/brand.ts +1 -1
@@ -6,6 +6,7 @@
6
6
  import type { IIdCompressor } from "@fluidframework/id-compressor";
7
7
 
8
8
  import {
9
+ type CodecTree,
9
10
  type CodecWriteOptions,
10
11
  FluidClientVersion,
11
12
  type ICodecFamily,
@@ -20,6 +21,7 @@ import { version2 } from "./detachedFieldIndexFormatV2.js";
20
21
  import { makeDetachedNodeToFieldCodecV1 } from "./detachedFieldIndexCodecV1.js";
21
22
  import { makeDetachedNodeToFieldCodecV2 } from "./detachedFieldIndexCodecV2.js";
22
23
  import type { DetachedFieldSummaryData } from "./detachedFieldIndexTypes.js";
24
+ import type { Brand } from "../../util/index.js";
23
25
 
24
26
  export function makeDetachedFieldIndexCodec(
25
27
  revisionTagCodec: RevisionTagCodec,
@@ -42,3 +44,10 @@ export function makeDetachedFieldIndexCodecFamily(
42
44
  [version2, makeDetachedNodeToFieldCodecV2(revisionTagCodec, options, idCompressor)],
43
45
  ]);
44
46
  }
47
+
48
+ export type DetachedFieldIndexFormatVersion = Brand<1 | 2, "DetachedFieldIndexFormatVersion">;
49
+ export function getCodecTreeForDetachedFieldIndexFormat(
50
+ version: DetachedFieldIndexFormatVersion,
51
+ ): CodecTree {
52
+ return { name: "DetachedFieldIndex", version };
53
+ }
@@ -118,4 +118,10 @@ export {
118
118
  } from "./chunk.js";
119
119
 
120
120
  export { DetachedFieldIndex } from "./detachedFieldIndex.js";
121
+
122
+ export {
123
+ type DetachedFieldIndexFormatVersion,
124
+ getCodecTreeForDetachedFieldIndexFormat,
125
+ } from "./detachedFieldIndexCodecs.js";
126
+
121
127
  export { type ForestRootId } from "./detachedFieldIndexTypes.js";
@@ -7,6 +7,7 @@ import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
7
7
  import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
8
8
 
9
9
  import {
10
+ type CodecTree,
10
11
  type FluidClientVersion,
11
12
  type ICodecOptions,
12
13
  type IJsonCodec,
@@ -33,7 +34,7 @@ import {
33
34
 
34
35
  import { decode } from "./chunkDecoding.js";
35
36
  import type { FieldBatch } from "./fieldBatch.js";
36
- import { EncodedFieldBatch, validVersions } from "./format.js";
37
+ import { EncodedFieldBatch, validVersions, type FieldBatchFormatVersion } from "./format.js";
37
38
  import { schemaCompressedEncode } from "./schemaBasedEncode.js";
38
39
  import { uncompressedEncode } from "./uncompressedEncode.js";
39
40
 
@@ -197,3 +198,7 @@ export function makeFieldBatchCodec(
197
198
  },
198
199
  });
199
200
  }
201
+
202
+ export function getCodecTreeForFieldBatchFormat(version: FieldBatchFormatVersion): CodecTree {
203
+ return { name: "FieldBatch", version };
204
+ }
@@ -13,8 +13,10 @@ import {
13
13
  IdentifierOrIndex,
14
14
  ShapeIndex,
15
15
  } from "./formatGeneric.js";
16
+ import type { Brand } from "../../../util/index.js";
16
17
 
17
18
  export const version = 1;
19
+ export type FieldBatchFormatVersion = Brand<1, "FieldBatchFormatVersion">;
18
20
 
19
21
  // Compatible versions used for format/version validation.
20
22
  // TODO: A proper version update policy will need to be documented.
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { EncodedFieldBatch } from "./format.js";
6
+ export { EncodedFieldBatch, type FieldBatchFormatVersion } from "./format.js";
7
7
  export type { FieldBatch } from "./fieldBatch.js";
8
8
  export {
9
9
  type FieldBatchCodec,
@@ -14,4 +14,5 @@ export {
14
14
  type IncrementalEncoder,
15
15
  type IncrementalDecoder,
16
16
  type ChunkReferenceId,
17
+ getCodecTreeForFieldBatchFormat,
17
18
  } from "./codecs.js";
@@ -16,6 +16,8 @@ export {
16
16
  export { buildChunkedForest } from "./chunkedForest.js";
17
17
  export {
18
18
  EncodedFieldBatch,
19
+ type FieldBatchFormatVersion,
20
+ getCodecTreeForFieldBatchFormat,
19
21
  type FieldBatch,
20
22
  type FieldBatchCodec,
21
23
  makeFieldBatchCodec,
@@ -32,6 +32,8 @@ import {
32
32
  import { sequenceFieldChangeHandler } from "../sequence-field/index.js";
33
33
 
34
34
  import { noChangeCodecFamily } from "./noChangeCodecs.js";
35
+ import type { CodecTree } from "../../codec/index.js";
36
+ import { brand, type Brand } from "../../util/index.js";
35
37
 
36
38
  /**
37
39
  * ChangeHandler that only handles no-op / identity changes.
@@ -205,9 +207,12 @@ export const forbidden = new FieldKindWithEditor(
205
207
  new Set(),
206
208
  );
207
209
 
208
- export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration> = new Map([
210
+ export const fieldKindConfigurations: ReadonlyMap<
211
+ ModularChangeFormatVersion,
212
+ FieldKindConfiguration
213
+ > = new Map([
209
214
  [
210
- 1,
215
+ brand(1),
211
216
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
212
217
  [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
213
218
  [required.identifier, { kind: required, formatVersion: 1 }],
@@ -218,7 +223,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
218
223
  ]),
219
224
  ],
220
225
  [
221
- 2,
226
+ brand(2),
222
227
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
223
228
  [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
224
229
  [required.identifier, { kind: required, formatVersion: 2 }],
@@ -229,7 +234,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
229
234
  ]),
230
235
  ],
231
236
  [
232
- 3,
237
+ brand(3),
233
238
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
234
239
  [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
235
240
  [required.identifier, { kind: required, formatVersion: 2 }],
@@ -240,7 +245,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
240
245
  ]),
241
246
  ],
242
247
  [
243
- 4,
248
+ brand(4),
244
249
  new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
245
250
  [nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
246
251
  [required.identifier, { kind: required, formatVersion: 2 }],
@@ -252,6 +257,25 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
252
257
  ],
253
258
  ]);
254
259
 
260
+ export type ModularChangeFormatVersion = Brand<1 | 2 | 3 | 4, "ModularChangeFormatVersion">;
261
+ export function getCodecTreeForModularChangeFormat(
262
+ version: ModularChangeFormatVersion,
263
+ ): CodecTree {
264
+ const dependencies =
265
+ fieldKindConfigurations.get(version) ?? fail("Unknown modular change format");
266
+ const children: CodecTree[] = Array.from(dependencies.entries()).map(
267
+ ([key, { formatVersion }]) => ({
268
+ name: `FieldKind:${key}`,
269
+ version: formatVersion,
270
+ }),
271
+ );
272
+ return {
273
+ name: "ModularChange",
274
+ version,
275
+ children,
276
+ };
277
+ }
278
+
255
279
  /**
256
280
  * All supported field kinds.
257
281
  *
@@ -12,6 +12,8 @@ export {
12
12
  type Forbidden,
13
13
  fieldKinds,
14
14
  fieldKindConfigurations,
15
+ getCodecTreeForModularChangeFormat,
16
+ type ModularChangeFormatVersion,
15
17
  } from "./defaultFieldKinds.js";
16
18
 
17
19
  export {
@@ -6,6 +6,7 @@
6
6
  import { assert, oob } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import {
9
+ type CodecTree,
9
10
  type ICodecOptions,
10
11
  type IJsonCodec,
11
12
  makeVersionedValidatedCodec,
@@ -14,6 +15,7 @@ import type { FieldKey, ITreeCursorSynchronous } from "../../core/index.js";
14
15
  import type { FieldBatchCodec, FieldBatchEncodingContext } from "../chunked-forest/index.js";
15
16
 
16
17
  import { Format } from "./format.js";
18
+ import type { Brand } from "../../util/index.js";
17
19
 
18
20
  /**
19
21
  * Uses field cursors
@@ -50,3 +52,8 @@ export function makeForestSummarizerCodec(
50
52
  },
51
53
  });
52
54
  }
55
+
56
+ export type ForestFormatVersion = Brand<1, "ForestFormatVersion">;
57
+ export function getCodecTreeForForestFormat(version: ForestFormatVersion): CodecTree {
58
+ return { name: "Forest", version };
59
+ }
@@ -4,3 +4,4 @@
4
4
  */
5
5
 
6
6
  export { forestSummaryKey, ForestSummarizer } from "./forestSummarizer.js";
7
+ export { getCodecTreeForForestFormat, type ForestFormatVersion } from "./codec.js";
@@ -9,7 +9,11 @@ export {
9
9
  } from "./editableTreeBinder.js";
10
10
  export { allowsValue, assertAllowedValue, isTreeValue } from "./valueUtilities.js";
11
11
 
12
- export { ForestSummarizer } from "./forest-summary/index.js";
12
+ export {
13
+ ForestSummarizer,
14
+ getCodecTreeForForestFormat,
15
+ type ForestFormatVersion,
16
+ } from "./forest-summary/index.js";
13
17
  export {
14
18
  cursorForMapTreeField,
15
19
  cursorForMapTreeNode,
@@ -28,6 +32,7 @@ export {
28
32
  encodeTreeSchema,
29
33
  makeSchemaCodec,
30
34
  makeSchemaCodecs,
35
+ getCodecTreeForSchemaFormat,
31
36
  } from "./schema-index/index.js";
32
37
  export {
33
38
  stackTreeNodeCursor,
@@ -98,6 +103,8 @@ export {
98
103
  defaultChunkPolicy,
99
104
  type FieldBatch,
100
105
  type FieldBatchCodec,
106
+ type FieldBatchFormatVersion,
107
+ getCodecTreeForFieldBatchFormat,
101
108
  makeTreeChunker,
102
109
  makeFieldBatchCodec,
103
110
  fluidVersionToFieldBatchCodecWriteVersion,
@@ -139,6 +146,8 @@ export {
139
146
  isNodeInSchema,
140
147
  isFieldInSchema,
141
148
  throwOutOfSchema,
149
+ getCodecTreeForModularChangeFormat,
150
+ type ModularChangeFormatVersion,
142
151
  } from "./default-schema/index.js";
143
152
 
144
153
  export {
@@ -190,6 +199,8 @@ export {
190
199
  type SchemaChange,
191
200
  makeSchemaChangeCodecs,
192
201
  EncodedSchemaChange,
202
+ getCodecTreeForSchemaChangeFormat,
203
+ type SchemaChangeFormatVersion,
193
204
  } from "./schema-edits/index.js";
194
205
 
195
206
  export { makeMitigatedChangeFamily } from "./mitigatedChangeFamily.js";
@@ -504,7 +504,7 @@ export class ModularChangeFamily
504
504
  }
505
505
 
506
506
  for (const [field, fieldChange2] of change2) {
507
- if (change1 === undefined || !change1.has(field)) {
507
+ if (!change1?.has(field)) {
508
508
  composedFields.set(field, fieldChange2);
509
509
  }
510
510
  }
@@ -3,6 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { makeSchemaChangeCodecs } from "./schemaChangeCodecs.js";
6
+ export {
7
+ makeSchemaChangeCodecs,
8
+ getCodecTreeForSchemaChangeFormat,
9
+ type SchemaChangeFormatVersion,
10
+ } from "./schemaChangeCodecs.js";
7
11
  export type { SchemaChange } from "./schemaChangeTypes.js";
8
12
  export { EncodedSchemaChange } from "./schemaChangeFormat.js";
@@ -6,6 +6,7 @@
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import {
9
+ type CodecTree,
9
10
  type ICodecFamily,
10
11
  type ICodecOptions,
11
12
  type IJsonCodec,
@@ -13,11 +14,12 @@ import {
13
14
  makeVersionDispatchingCodec,
14
15
  withSchemaValidation,
15
16
  } from "../../codec/index.js";
16
- import { makeSchemaCodec } from "../schema-index/index.js";
17
+ import { getCodecTreeForSchemaFormat, makeSchemaCodec } from "../schema-index/index.js";
17
18
 
18
19
  import { EncodedSchemaChange } from "./schemaChangeFormat.js";
19
20
  import type { SchemaChange } from "./schemaChangeTypes.js";
20
21
  import { SchemaVersion } from "../../core/index.js";
22
+ import type { Brand } from "../../util/index.js";
21
23
 
22
24
  /**
23
25
  * Create a family of schema change codecs.
@@ -31,6 +33,20 @@ export function makeSchemaChangeCodecs(options: ICodecOptions): ICodecFamily<Sch
31
33
  ]);
32
34
  }
33
35
 
36
+ export type SchemaChangeFormatVersion = Brand<
37
+ SchemaVersion.v1 | SchemaVersion.v2,
38
+ "SchemaChangeFormatVersion"
39
+ >;
40
+ export function getCodecTreeForSchemaChangeFormat(
41
+ version: SchemaChangeFormatVersion,
42
+ ): CodecTree {
43
+ return {
44
+ name: "SchemaChange",
45
+ version,
46
+ children: [getCodecTreeForSchemaFormat(version)],
47
+ };
48
+ }
49
+
34
50
  /**
35
51
  * Create a schema change codec.
36
52
  * @param options - Specifies common codec options, including which `validator` to use.
@@ -6,6 +6,7 @@
6
6
  import { fail, unreachableCase } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import {
9
+ type CodecTree,
9
10
  type FluidClientVersion,
10
11
  type ICodecFamily,
11
12
  type ICodecOptions,
@@ -41,6 +42,10 @@ export function clientVersionToSchemaVersion(
41
42
  return SchemaVersion.v1;
42
43
  }
43
44
 
45
+ export function getCodecTreeForSchemaFormat(version: SchemaVersion): CodecTree {
46
+ return { name: "Schema", version };
47
+ }
48
+
44
49
  /**
45
50
  * Create a schema codec.
46
51
  * @param options - Specifies common codec options, including which `validator` to use.
@@ -8,6 +8,7 @@ export {
8
8
  makeSchemaCodec,
9
9
  makeSchemaCodecs,
10
10
  clientVersionToSchemaVersion,
11
+ getCodecTreeForSchemaFormat,
11
12
  } from "./codec.js";
12
13
  export { Format as FormatV1 } from "./formatV1.js";
13
14
  export { Format as FormatV2 } from "./formatV2.js";
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.63.0-358419";
9
+ export const pkgVersion = "2.63.0-359286";
@@ -7,13 +7,14 @@ import type { IFluidHandle } from "@fluidframework/core-interfaces";
7
7
 
8
8
  import {
9
9
  SchemaFactory,
10
+ SchemaFactoryAlpha,
10
11
  type FixRecursiveArraySchema,
11
12
  type TreeNodeFromImplicitAllowedTypes,
12
13
  type ValidateRecursiveSchema,
13
14
  } from "./simple-tree/index.js";
14
15
  import type { JsonCompatible } from "./util/index.js";
15
16
 
16
- const sf = new SchemaFactory("com.fluidframework.serializable");
17
+ const sf = new SchemaFactoryAlpha("com.fluidframework.serializable");
17
18
 
18
19
  /**
19
20
  * Utilities for storing {@link FluidSerializableAsTree.Data|Fluid Serializable data} in {@link TreeNode}s.
@@ -23,14 +24,14 @@ const sf = new SchemaFactory("com.fluidframework.serializable");
23
24
  * Schema which replicate the Fluid Serializable data model with {@link TreeNode}s.
24
25
  *
25
26
  * Fluid Serializable data can be imported from the {@link FluidSerializableAsTree.Data|Fluid Serializable format} into this format using {@link (TreeAlpha:interface).importConcise} with the {@link FluidSerializableAsTree.(Tree:variable)} schema.
26
- * @internal
27
+ * @alpha
27
28
  */
28
29
  export namespace FluidSerializableAsTree {
29
30
  /**
30
31
  * Data which can be serialized by Fluid.
31
32
  * @remarks
32
33
  * Can be encoded as a {@link FluidSerializableAsTree.(Tree:type)} using {@link (TreeAlpha:interface).importConcise}.
33
- * @internal
34
+ * @alpha
34
35
  */
35
36
  export type Data = JsonCompatible<IFluidHandle>;
36
37
 
@@ -40,7 +41,7 @@ export namespace FluidSerializableAsTree {
40
41
  * ```typescript
41
42
  * const tree = TreeAlpha.importConcise(FluidSerializableAsTree.Tree, { example: { nested: true }, value: 5 });
42
43
  * ```
43
- * @internal
44
+ * @alpha
44
45
  */
45
46
  export const Tree = [
46
47
  () => FluidSerializableObject,
@@ -49,15 +50,15 @@ export namespace FluidSerializableAsTree {
49
50
  ] as const;
50
51
 
51
52
  /**
52
- * @internal
53
+ * @alpha
53
54
  */
54
55
  export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
55
56
 
56
57
  /**
57
58
  * 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}.
58
- * @system @internal
59
+ * @system @alpha
59
60
  */
60
- export const _APIExtractorWorkaroundObjectBase = sf.mapRecursive("object", Tree);
61
+ export const _APIExtractorWorkaroundObjectBase = sf.recordRecursive("object", Tree);
61
62
 
62
63
  /**
63
64
  * Arbitrary Fluid Serializable object as a {@link TreeNode}.
@@ -74,7 +75,7 @@ export namespace FluidSerializableAsTree {
74
75
  * ```
75
76
  * @privateRemarks
76
77
  * Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
77
- * @sealed @internal
78
+ * @sealed @alpha
78
79
  */
79
80
  export class FluidSerializableObject extends _APIExtractorWorkaroundObjectBase {}
80
81
  {
@@ -86,7 +87,7 @@ export namespace FluidSerializableAsTree {
86
87
  * @privateRemarks
87
88
  * In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
88
89
  * Testing for this in examples/utils/import-testing now shows it has to reference FluidSerializableAsTree.Array instead.
89
- * @system @internal
90
+ * @system @alpha
90
91
  */
91
92
  export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
92
93
  typeof Array
@@ -94,7 +95,7 @@ export namespace FluidSerializableAsTree {
94
95
 
95
96
  /**
96
97
  * 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}.
97
- * @system @internal
98
+ * @system @alpha
98
99
  */
99
100
  export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
100
101
 
@@ -113,7 +114,7 @@ export namespace FluidSerializableAsTree {
113
114
  * assert(Tree.is(inner, FluidSerializableAsTree.Array));
114
115
  * const leaf = inner[0];
115
116
  * ```
116
- * @sealed @internal
117
+ * @sealed @alpha
117
118
  */
118
119
  export class Array extends _APIExtractorWorkaroundArrayBase {}
119
120
  {
@@ -24,6 +24,7 @@ export {
24
24
  exportSimpleSchema,
25
25
  type SharedTreeKernelView,
26
26
  persistedToSimpleSchema,
27
+ getCodecTreeForSharedTreeFormat,
27
28
  } from "./sharedTree.js";
28
29
 
29
30
  export {
@@ -60,3 +61,8 @@ export {
60
61
  } from "./independentView.js";
61
62
 
62
63
  export type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
64
+
65
+ export {
66
+ getCodecTreeForChangeFormat,
67
+ type SharedTreeChangeFormatVersion,
68
+ } from "./sharedTreeChangeCodecs.js";