@fluidframework/tree 2.81.1 → 2.83.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 (695) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/README.md +33 -5
  3. package/api-report/tree.alpha.api.md +75 -39
  4. package/api-report/tree.beta.api.md +164 -3
  5. package/api-report/tree.legacy.beta.api.md +164 -3
  6. package/api-report/tree.legacy.public.api.md +2 -1
  7. package/api-report/tree.public.api.md +2 -1
  8. package/dist/alpha.d.ts +10 -4
  9. package/dist/beta.d.ts +4 -0
  10. package/dist/codec/codec.d.ts +18 -45
  11. package/dist/codec/codec.d.ts.map +1 -1
  12. package/dist/codec/codec.js +12 -50
  13. package/dist/codec/codec.js.map +1 -1
  14. package/dist/codec/index.d.ts +1 -1
  15. package/dist/codec/index.d.ts.map +1 -1
  16. package/dist/codec/index.js +2 -2
  17. package/dist/codec/index.js.map +1 -1
  18. package/dist/codec/versioned/codec.d.ts +20 -7
  19. package/dist/codec/versioned/codec.d.ts.map +1 -1
  20. package/dist/codec/versioned/codec.js +56 -30
  21. package/dist/codec/versioned/codec.js.map +1 -1
  22. package/dist/core/index.d.ts +1 -1
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +4 -2
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/rebase/changeRebaser.d.ts +3 -2
  27. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  28. package/dist/core/rebase/changeRebaser.js.map +1 -1
  29. package/dist/core/rebase/index.d.ts +1 -1
  30. package/dist/core/rebase/index.d.ts.map +1 -1
  31. package/dist/core/rebase/index.js +4 -2
  32. package/dist/core/rebase/index.js.map +1 -1
  33. package/dist/core/rebase/types.d.ts +23 -3
  34. package/dist/core/rebase/types.d.ts.map +1 -1
  35. package/dist/core/rebase/types.js +30 -16
  36. package/dist/core/rebase/types.js.map +1 -1
  37. package/dist/core/schema-stored/formatV1.d.ts +2 -2
  38. package/dist/core/schema-stored/formatV1.d.ts.map +1 -1
  39. package/dist/core/schema-stored/formatV1.js +0 -5
  40. package/dist/core/schema-stored/formatV1.js.map +1 -1
  41. package/dist/core/schema-stored/formatV2.d.ts +11 -10
  42. package/dist/core/schema-stored/formatV2.d.ts.map +1 -1
  43. package/dist/core/schema-stored/formatV2.js +1 -6
  44. package/dist/core/schema-stored/formatV2.js.map +1 -1
  45. package/dist/core/schema-stored/index.d.ts.map +1 -1
  46. package/dist/core/schema-stored/index.js.map +1 -1
  47. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  48. package/dist/core/schema-stored/schema.js.map +1 -1
  49. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  50. package/dist/core/tree/anchorSet.js.map +1 -1
  51. package/dist/core/tree/delta.d.ts +9 -7
  52. package/dist/core/tree/delta.d.ts.map +1 -1
  53. package/dist/core/tree/delta.js.map +1 -1
  54. package/dist/core/tree/deltaUtil.js +1 -1
  55. package/dist/core/tree/deltaUtil.js.map +1 -1
  56. package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  57. package/dist/core/tree/detachedFieldIndexCodecs.js +6 -4
  58. package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  59. package/dist/core/tree/visitDelta.js +2 -2
  60. package/dist/core/tree/visitDelta.js.map +1 -1
  61. package/dist/extensibleUnionNode.d.ts +97 -0
  62. package/dist/extensibleUnionNode.d.ts.map +1 -0
  63. package/dist/extensibleUnionNode.js +89 -0
  64. package/dist/extensibleUnionNode.js.map +1 -0
  65. package/dist/feature-libraries/changeAtomIdBTree.d.ts +4 -2
  66. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  67. package/dist/feature-libraries/changeAtomIdBTree.js +9 -1
  68. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  69. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
  70. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  71. package/dist/feature-libraries/chunked-forest/codec/codecs.js +4 -4
  72. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  73. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
  74. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  75. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +20 -21
  76. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  77. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  78. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  79. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  80. package/dist/feature-libraries/forest-summary/codec.d.ts +2 -1
  81. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  82. package/dist/feature-libraries/forest-summary/codec.js +7 -1
  83. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  84. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  85. package/dist/feature-libraries/forest-summary/forestSummarizer.js +5 -2
  86. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  87. package/dist/feature-libraries/forest-summary/formatCommon.d.ts +4 -42
  88. package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  89. package/dist/feature-libraries/forest-summary/formatCommon.js +1 -2
  90. package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  91. package/dist/feature-libraries/forest-summary/formatV1.d.ts +2 -41
  92. package/dist/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
  93. package/dist/feature-libraries/forest-summary/formatV1.js +1 -2
  94. package/dist/feature-libraries/forest-summary/formatV1.js.map +1 -1
  95. package/dist/feature-libraries/forest-summary/formatV2.d.ts +2 -41
  96. package/dist/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
  97. package/dist/feature-libraries/forest-summary/formatV2.js +1 -2
  98. package/dist/feature-libraries/forest-summary/formatV2.js.map +1 -1
  99. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  100. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  101. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
  102. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  103. package/dist/feature-libraries/index.d.ts +3 -3
  104. package/dist/feature-libraries/index.d.ts.map +1 -1
  105. package/dist/feature-libraries/index.js +4 -3
  106. package/dist/feature-libraries/index.js.map +1 -1
  107. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
  108. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
  109. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +42 -22
  110. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  111. package/dist/feature-libraries/modular-schema/genericFieldKind.js +1 -1
  112. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  113. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  114. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  115. package/dist/feature-libraries/modular-schema/index.js +2 -1
  116. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  117. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +3 -3
  118. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  119. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +13 -9
  120. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  121. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
  122. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  123. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +30 -7
  124. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  125. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  126. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +38 -27
  127. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  128. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
  129. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  130. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
  131. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  132. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
  133. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  134. package/dist/feature-libraries/optional-field/optionalField.js +1 -1
  135. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  136. package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  137. package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
  138. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
  139. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  140. package/dist/feature-libraries/schema-index/codec.js +6 -4
  141. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  142. package/dist/feature-libraries/schema-index/formatV2.d.ts +4 -4
  143. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -1
  144. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  145. package/dist/feature-libraries/sequence-field/invert.js +2 -2
  146. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  147. package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -16
  148. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  149. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
  150. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  151. package/dist/index.d.ts +5 -5
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +5 -2
  154. package/dist/index.js.map +1 -1
  155. package/dist/legacy.d.ts +4 -0
  156. package/dist/packageVersion.d.ts +1 -1
  157. package/dist/packageVersion.js +1 -1
  158. package/dist/packageVersion.js.map +1 -1
  159. package/dist/shared-tree/independentView.d.ts +36 -13
  160. package/dist/shared-tree/independentView.d.ts.map +1 -1
  161. package/dist/shared-tree/independentView.js +1 -0
  162. package/dist/shared-tree/independentView.js.map +1 -1
  163. package/dist/shared-tree/index.d.ts +1 -1
  164. package/dist/shared-tree/index.d.ts.map +1 -1
  165. package/dist/shared-tree/index.js.map +1 -1
  166. package/dist/shared-tree/schematizingTreeView.d.ts +10 -0
  167. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  168. package/dist/shared-tree/schematizingTreeView.js +25 -9
  169. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  170. package/dist/shared-tree/sharedTree.d.ts +3 -3
  171. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  172. package/dist/shared-tree/sharedTree.js +8 -32
  173. package/dist/shared-tree/sharedTree.js.map +1 -1
  174. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
  175. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  176. package/dist/shared-tree/sharedTreeChangeCodecs.js +39 -5
  177. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  178. package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
  179. package/dist/shared-tree/tree.d.ts +1 -1
  180. package/dist/shared-tree/tree.js +1 -1
  181. package/dist/shared-tree/tree.js.map +1 -1
  182. package/dist/shared-tree/treeAlpha.d.ts +1 -1
  183. package/dist/shared-tree/treeAlpha.js.map +1 -1
  184. package/dist/shared-tree/treeCheckout.d.ts +20 -0
  185. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  186. package/dist/shared-tree/treeCheckout.js +41 -7
  187. package/dist/shared-tree/treeCheckout.js.map +1 -1
  188. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
  189. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  190. package/dist/shared-tree-core/editManagerCodecsCommons.js +2 -2
  191. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  192. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
  193. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  194. package/dist/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
  195. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  196. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
  197. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  198. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -1
  199. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  200. package/dist/shared-tree-core/editManagerSummarizer.js +1 -1
  201. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  202. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  203. package/dist/shared-tree-core/messageCodecV1ToV4.js +2 -2
  204. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  205. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  206. package/dist/shared-tree-core/messageCodecs.js +2 -2
  207. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  208. package/dist/shared-tree-core/transaction.d.ts +14 -3
  209. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  210. package/dist/shared-tree-core/transaction.js +59 -16
  211. package/dist/shared-tree-core/transaction.js.map +1 -1
  212. package/dist/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
  213. package/dist/shared-tree-core/versionedSummarizer.js +1 -1
  214. package/dist/shared-tree-core/versionedSummarizer.js.map +1 -1
  215. package/dist/simple-tree/api/index.d.ts +2 -2
  216. package/dist/simple-tree/api/index.d.ts.map +1 -1
  217. package/dist/simple-tree/api/index.js +4 -3
  218. package/dist/simple-tree/api/index.js.map +1 -1
  219. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
  220. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  221. package/dist/simple-tree/api/schemaCreationUtilities.js +16 -1
  222. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  223. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  224. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
  225. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  226. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +180 -99
  227. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  228. package/dist/simple-tree/api/transactionTypes.d.ts +10 -0
  229. package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
  230. package/dist/simple-tree/api/transactionTypes.js.map +1 -1
  231. package/dist/simple-tree/api/tree.d.ts +82 -7
  232. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  233. package/dist/simple-tree/api/tree.js.map +1 -1
  234. package/dist/simple-tree/api/treeBeta.d.ts +1 -1
  235. package/dist/simple-tree/api/treeBeta.js.map +1 -1
  236. package/dist/simple-tree/core/allowedTypes.d.ts +1 -1
  237. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  238. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  240. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -0
  241. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  242. package/dist/simple-tree/core/unhydratedFlexTree.js +29 -0
  243. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  244. package/dist/simple-tree/index.d.ts +2 -2
  245. package/dist/simple-tree/index.d.ts.map +1 -1
  246. package/dist/simple-tree/index.js +5 -3
  247. package/dist/simple-tree/index.js.map +1 -1
  248. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  249. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  250. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
  251. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  252. package/dist/simple-tree/node-kinds/array/arrayNode.js +47 -14
  253. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  254. package/dist/simple-tree/node-kinds/array/index.d.ts +1 -1
  255. package/dist/simple-tree/node-kinds/array/index.d.ts.map +1 -1
  256. package/dist/simple-tree/node-kinds/array/index.js +2 -1
  257. package/dist/simple-tree/node-kinds/array/index.js.map +1 -1
  258. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  259. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  260. package/dist/simple-tree/node-kinds/index.js +2 -1
  261. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  262. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  263. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  264. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  265. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +33 -7
  266. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  267. package/dist/tableSchema.d.ts +71 -48
  268. package/dist/tableSchema.d.ts.map +1 -1
  269. package/dist/tableSchema.js +200 -98
  270. package/dist/tableSchema.js.map +1 -1
  271. package/dist/text/textDomainFormatted.d.ts +3 -3
  272. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  273. package/dist/text/textDomainFormatted.js +48 -32
  274. package/dist/text/textDomainFormatted.js.map +1 -1
  275. package/dist/util/bTreeUtils.d.ts +30 -4
  276. package/dist/util/bTreeUtils.d.ts.map +1 -1
  277. package/dist/util/bTreeUtils.js +35 -23
  278. package/dist/util/bTreeUtils.js.map +1 -1
  279. package/dist/util/brand.d.ts.map +1 -1
  280. package/dist/util/brand.js.map +1 -1
  281. package/dist/util/brandedMap.d.ts.map +1 -1
  282. package/dist/util/brandedMap.js.map +1 -1
  283. package/dist/util/breakable.d.ts.map +1 -1
  284. package/dist/util/breakable.js +2 -1
  285. package/dist/util/breakable.js.map +1 -1
  286. package/dist/util/index.d.ts +2 -2
  287. package/dist/util/index.d.ts.map +1 -1
  288. package/dist/util/index.js +6 -3
  289. package/dist/util/index.js.map +1 -1
  290. package/dist/util/opaque.d.ts.map +1 -1
  291. package/dist/util/opaque.js.map +1 -1
  292. package/dist/util/rangeMap.d.ts +3 -2
  293. package/dist/util/rangeMap.d.ts.map +1 -1
  294. package/dist/util/rangeMap.js +12 -7
  295. package/dist/util/rangeMap.js.map +1 -1
  296. package/dist/util/readSnapshotBlob.d.ts +1 -1
  297. package/dist/util/readSnapshotBlob.d.ts.map +1 -1
  298. package/dist/util/readSnapshotBlob.js.map +1 -1
  299. package/dist/util/typeCheck.d.ts.map +1 -1
  300. package/dist/util/typeCheck.js.map +1 -1
  301. package/dist/util/utils.d.ts +20 -16
  302. package/dist/util/utils.d.ts.map +1 -1
  303. package/dist/util/utils.js +49 -17
  304. package/dist/util/utils.js.map +1 -1
  305. package/eslint.config.mts +0 -9
  306. package/lib/alpha.d.ts +10 -4
  307. package/lib/beta.d.ts +4 -0
  308. package/lib/codec/codec.d.ts +18 -45
  309. package/lib/codec/codec.d.ts.map +1 -1
  310. package/lib/codec/codec.js +10 -47
  311. package/lib/codec/codec.js.map +1 -1
  312. package/lib/codec/index.d.ts +1 -1
  313. package/lib/codec/index.d.ts.map +1 -1
  314. package/lib/codec/index.js +1 -1
  315. package/lib/codec/index.js.map +1 -1
  316. package/lib/codec/versioned/codec.d.ts +20 -7
  317. package/lib/codec/versioned/codec.d.ts.map +1 -1
  318. package/lib/codec/versioned/codec.js +59 -33
  319. package/lib/codec/versioned/codec.js.map +1 -1
  320. package/lib/core/index.d.ts +1 -1
  321. package/lib/core/index.d.ts.map +1 -1
  322. package/lib/core/index.js +1 -1
  323. package/lib/core/index.js.map +1 -1
  324. package/lib/core/rebase/changeRebaser.d.ts +3 -2
  325. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  326. package/lib/core/rebase/changeRebaser.js.map +1 -1
  327. package/lib/core/rebase/index.d.ts +1 -1
  328. package/lib/core/rebase/index.d.ts.map +1 -1
  329. package/lib/core/rebase/index.js +1 -1
  330. package/lib/core/rebase/index.js.map +1 -1
  331. package/lib/core/rebase/types.d.ts +23 -3
  332. package/lib/core/rebase/types.d.ts.map +1 -1
  333. package/lib/core/rebase/types.js +27 -15
  334. package/lib/core/rebase/types.js.map +1 -1
  335. package/lib/core/schema-stored/formatV1.d.ts +2 -2
  336. package/lib/core/schema-stored/formatV1.d.ts.map +1 -1
  337. package/lib/core/schema-stored/formatV1.js +0 -5
  338. package/lib/core/schema-stored/formatV1.js.map +1 -1
  339. package/lib/core/schema-stored/formatV2.d.ts +11 -10
  340. package/lib/core/schema-stored/formatV2.d.ts.map +1 -1
  341. package/lib/core/schema-stored/formatV2.js +1 -6
  342. package/lib/core/schema-stored/formatV2.js.map +1 -1
  343. package/lib/core/schema-stored/index.d.ts.map +1 -1
  344. package/lib/core/schema-stored/index.js +2 -0
  345. package/lib/core/schema-stored/index.js.map +1 -1
  346. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  347. package/lib/core/schema-stored/schema.js.map +1 -1
  348. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  349. package/lib/core/tree/anchorSet.js.map +1 -1
  350. package/lib/core/tree/delta.d.ts +9 -7
  351. package/lib/core/tree/delta.d.ts.map +1 -1
  352. package/lib/core/tree/delta.js.map +1 -1
  353. package/lib/core/tree/deltaUtil.js +1 -1
  354. package/lib/core/tree/deltaUtil.js.map +1 -1
  355. package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
  356. package/lib/core/tree/detachedFieldIndexCodecs.js +6 -4
  357. package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
  358. package/lib/core/tree/visitDelta.js +2 -2
  359. package/lib/core/tree/visitDelta.js.map +1 -1
  360. package/lib/extensibleUnionNode.d.ts +97 -0
  361. package/lib/extensibleUnionNode.d.ts.map +1 -0
  362. package/lib/extensibleUnionNode.js +86 -0
  363. package/lib/extensibleUnionNode.js.map +1 -0
  364. package/lib/feature-libraries/changeAtomIdBTree.d.ts +4 -2
  365. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  366. package/lib/feature-libraries/changeAtomIdBTree.js +7 -0
  367. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
  368. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
  369. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  370. package/lib/feature-libraries/chunked-forest/codec/codecs.js +5 -5
  371. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  372. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
  373. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  374. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +4 -5
  375. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  376. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  377. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  378. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  379. package/lib/feature-libraries/forest-summary/codec.d.ts +2 -1
  380. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  381. package/lib/feature-libraries/forest-summary/codec.js +8 -2
  382. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  383. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  384. package/lib/feature-libraries/forest-summary/forestSummarizer.js +6 -3
  385. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  386. package/lib/feature-libraries/forest-summary/formatCommon.d.ts +4 -42
  387. package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  388. package/lib/feature-libraries/forest-summary/formatCommon.js +2 -3
  389. package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  390. package/lib/feature-libraries/forest-summary/formatV1.d.ts +2 -41
  391. package/lib/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
  392. package/lib/feature-libraries/forest-summary/formatV1.js +1 -2
  393. package/lib/feature-libraries/forest-summary/formatV1.js.map +1 -1
  394. package/lib/feature-libraries/forest-summary/formatV2.d.ts +2 -41
  395. package/lib/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
  396. package/lib/feature-libraries/forest-summary/formatV2.js +1 -2
  397. package/lib/feature-libraries/forest-summary/formatV2.js.map +1 -1
  398. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  399. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  400. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
  401. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  402. package/lib/feature-libraries/index.d.ts +3 -3
  403. package/lib/feature-libraries/index.d.ts.map +1 -1
  404. package/lib/feature-libraries/index.js +3 -3
  405. package/lib/feature-libraries/index.js.map +1 -1
  406. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
  407. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
  408. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +41 -21
  409. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  410. package/lib/feature-libraries/modular-schema/genericFieldKind.js +1 -1
  411. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  412. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  413. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  414. package/lib/feature-libraries/modular-schema/index.js +1 -1
  415. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  416. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +3 -3
  417. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  418. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +14 -10
  419. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  420. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
  421. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  422. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +29 -6
  423. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  424. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  425. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +41 -30
  426. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  427. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
  428. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  429. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
  430. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  431. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
  432. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  433. package/lib/feature-libraries/optional-field/optionalField.js +1 -1
  434. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  435. package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  436. package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
  437. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
  438. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  439. package/lib/feature-libraries/schema-index/codec.js +6 -4
  440. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  441. package/lib/feature-libraries/schema-index/formatV2.d.ts +4 -4
  442. package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -1
  443. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  444. package/lib/feature-libraries/sequence-field/invert.js +2 -2
  445. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  446. package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -16
  447. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  448. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
  449. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  450. package/lib/index.d.ts +5 -5
  451. package/lib/index.d.ts.map +1 -1
  452. package/lib/index.js +4 -3
  453. package/lib/index.js.map +1 -1
  454. package/lib/legacy.d.ts +4 -0
  455. package/lib/packageVersion.d.ts +1 -1
  456. package/lib/packageVersion.js +1 -1
  457. package/lib/packageVersion.js.map +1 -1
  458. package/lib/shared-tree/independentView.d.ts +36 -13
  459. package/lib/shared-tree/independentView.d.ts.map +1 -1
  460. package/lib/shared-tree/independentView.js +1 -0
  461. package/lib/shared-tree/independentView.js.map +1 -1
  462. package/lib/shared-tree/index.d.ts +1 -1
  463. package/lib/shared-tree/index.d.ts.map +1 -1
  464. package/lib/shared-tree/index.js.map +1 -1
  465. package/lib/shared-tree/schematizingTreeView.d.ts +10 -0
  466. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  467. package/lib/shared-tree/schematizingTreeView.js +25 -9
  468. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  469. package/lib/shared-tree/sharedTree.d.ts +3 -3
  470. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  471. package/lib/shared-tree/sharedTree.js +10 -34
  472. package/lib/shared-tree/sharedTree.js.map +1 -1
  473. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
  474. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  475. package/lib/shared-tree/sharedTreeChangeCodecs.js +40 -6
  476. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  477. package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
  478. package/lib/shared-tree/tree.d.ts +1 -1
  479. package/lib/shared-tree/tree.js +1 -1
  480. package/lib/shared-tree/tree.js.map +1 -1
  481. package/lib/shared-tree/treeAlpha.d.ts +1 -1
  482. package/lib/shared-tree/treeAlpha.js.map +1 -1
  483. package/lib/shared-tree/treeCheckout.d.ts +20 -0
  484. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  485. package/lib/shared-tree/treeCheckout.js +41 -7
  486. package/lib/shared-tree/treeCheckout.js.map +1 -1
  487. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
  488. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  489. package/lib/shared-tree-core/editManagerCodecsCommons.js +2 -2
  490. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  491. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
  492. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  493. package/lib/shared-tree-core/editManagerCodecsV1toV4.js +2 -2
  494. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  495. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
  496. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  497. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +2 -2
  498. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  499. package/lib/shared-tree-core/editManagerSummarizer.js +1 -1
  500. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  501. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  502. package/lib/shared-tree-core/messageCodecV1ToV4.js +2 -2
  503. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  504. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  505. package/lib/shared-tree-core/messageCodecs.js +2 -2
  506. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  507. package/lib/shared-tree-core/transaction.d.ts +14 -3
  508. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  509. package/lib/shared-tree-core/transaction.js +61 -18
  510. package/lib/shared-tree-core/transaction.js.map +1 -1
  511. package/lib/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
  512. package/lib/shared-tree-core/versionedSummarizer.js +1 -1
  513. package/lib/shared-tree-core/versionedSummarizer.js.map +1 -1
  514. package/lib/simple-tree/api/index.d.ts +2 -2
  515. package/lib/simple-tree/api/index.d.ts.map +1 -1
  516. package/lib/simple-tree/api/index.js +2 -2
  517. package/lib/simple-tree/api/index.js.map +1 -1
  518. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
  519. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  520. package/lib/simple-tree/api/schemaCreationUtilities.js +14 -0
  521. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  522. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  523. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
  524. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  525. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +179 -98
  526. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  527. package/lib/simple-tree/api/transactionTypes.d.ts +10 -0
  528. package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
  529. package/lib/simple-tree/api/transactionTypes.js.map +1 -1
  530. package/lib/simple-tree/api/tree.d.ts +82 -7
  531. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  532. package/lib/simple-tree/api/tree.js.map +1 -1
  533. package/lib/simple-tree/api/treeBeta.d.ts +1 -1
  534. package/lib/simple-tree/api/treeBeta.js.map +1 -1
  535. package/lib/simple-tree/core/allowedTypes.d.ts +1 -1
  536. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  537. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  538. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  539. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -0
  540. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  541. package/lib/simple-tree/core/unhydratedFlexTree.js +29 -0
  542. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  543. package/lib/simple-tree/index.d.ts +2 -2
  544. package/lib/simple-tree/index.d.ts.map +1 -1
  545. package/lib/simple-tree/index.js +2 -2
  546. package/lib/simple-tree/index.js.map +1 -1
  547. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  548. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  549. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
  550. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  551. package/lib/simple-tree/node-kinds/array/arrayNode.js +46 -14
  552. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  553. package/lib/simple-tree/node-kinds/array/index.d.ts +1 -1
  554. package/lib/simple-tree/node-kinds/array/index.d.ts.map +1 -1
  555. package/lib/simple-tree/node-kinds/array/index.js +1 -1
  556. package/lib/simple-tree/node-kinds/array/index.js.map +1 -1
  557. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  558. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  559. package/lib/simple-tree/node-kinds/index.js +1 -1
  560. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  561. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  562. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  563. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  564. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +34 -8
  565. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  566. package/lib/tableSchema.d.ts +71 -48
  567. package/lib/tableSchema.d.ts.map +1 -1
  568. package/lib/tableSchema.js +201 -99
  569. package/lib/tableSchema.js.map +1 -1
  570. package/lib/text/textDomainFormatted.d.ts +3 -3
  571. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  572. package/lib/text/textDomainFormatted.js +30 -14
  573. package/lib/text/textDomainFormatted.js.map +1 -1
  574. package/lib/util/bTreeUtils.d.ts +30 -4
  575. package/lib/util/bTreeUtils.d.ts.map +1 -1
  576. package/lib/util/bTreeUtils.js +33 -22
  577. package/lib/util/bTreeUtils.js.map +1 -1
  578. package/lib/util/brand.d.ts.map +1 -1
  579. package/lib/util/brand.js.map +1 -1
  580. package/lib/util/brandedMap.d.ts.map +1 -1
  581. package/lib/util/brandedMap.js.map +1 -1
  582. package/lib/util/breakable.d.ts.map +1 -1
  583. package/lib/util/breakable.js +2 -1
  584. package/lib/util/breakable.js.map +1 -1
  585. package/lib/util/index.d.ts +2 -2
  586. package/lib/util/index.d.ts.map +1 -1
  587. package/lib/util/index.js +2 -2
  588. package/lib/util/index.js.map +1 -1
  589. package/lib/util/opaque.d.ts.map +1 -1
  590. package/lib/util/opaque.js.map +1 -1
  591. package/lib/util/rangeMap.d.ts +3 -2
  592. package/lib/util/rangeMap.d.ts.map +1 -1
  593. package/lib/util/rangeMap.js +12 -7
  594. package/lib/util/rangeMap.js.map +1 -1
  595. package/lib/util/readSnapshotBlob.d.ts +1 -1
  596. package/lib/util/readSnapshotBlob.d.ts.map +1 -1
  597. package/lib/util/readSnapshotBlob.js.map +1 -1
  598. package/lib/util/typeCheck.d.ts.map +1 -1
  599. package/lib/util/typeCheck.js.map +1 -1
  600. package/lib/util/utils.d.ts +20 -16
  601. package/lib/util/utils.d.ts.map +1 -1
  602. package/lib/util/utils.js +44 -15
  603. package/lib/util/utils.js.map +1 -1
  604. package/package.json +24 -24
  605. package/src/codec/codec.ts +33 -116
  606. package/src/codec/index.ts +2 -3
  607. package/src/codec/versioned/codec.ts +127 -95
  608. package/src/core/index.ts +3 -1
  609. package/src/core/rebase/changeRebaser.ts +3 -2
  610. package/src/core/rebase/index.ts +3 -1
  611. package/src/core/rebase/types.ts +51 -13
  612. package/src/core/schema-stored/formatV1.ts +2 -4
  613. package/src/core/schema-stored/formatV2.ts +9 -7
  614. package/src/core/schema-stored/index.ts +2 -0
  615. package/src/core/schema-stored/schema.ts +4 -1
  616. package/src/core/tree/anchorSet.ts +1 -3
  617. package/src/core/tree/delta.ts +9 -7
  618. package/src/core/tree/deltaUtil.ts +1 -1
  619. package/src/core/tree/detachedFieldIndexCodecs.ts +6 -4
  620. package/src/core/tree/visitDelta.ts +2 -2
  621. package/src/extensibleUnionNode.ts +177 -0
  622. package/src/feature-libraries/changeAtomIdBTree.ts +17 -2
  623. package/src/feature-libraries/chunked-forest/codec/codecs.ts +5 -11
  624. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +5 -6
  625. package/src/feature-libraries/default-schema/index.ts +0 -1
  626. package/src/feature-libraries/forest-summary/codec.ts +15 -9
  627. package/src/feature-libraries/forest-summary/forestSummarizer.ts +15 -3
  628. package/src/feature-libraries/forest-summary/formatCommon.ts +7 -6
  629. package/src/feature-libraries/forest-summary/formatV1.ts +1 -3
  630. package/src/feature-libraries/forest-summary/formatV2.ts +1 -3
  631. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +4 -5
  632. package/src/feature-libraries/index.ts +3 -2
  633. package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +57 -31
  634. package/src/feature-libraries/modular-schema/genericFieldKind.ts +1 -1
  635. package/src/feature-libraries/modular-schema/index.ts +4 -1
  636. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +12 -12
  637. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +32 -7
  638. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +54 -33
  639. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +2 -4
  640. package/src/feature-libraries/optional-field/optionalField.ts +1 -1
  641. package/src/feature-libraries/optional-field/requiredField.ts +2 -4
  642. package/src/feature-libraries/schema-index/codec.ts +7 -5
  643. package/src/feature-libraries/schema-index/schemaSummarizer.ts +1 -1
  644. package/src/feature-libraries/sequence-field/invert.ts +2 -2
  645. package/src/feature-libraries/sequence-field/replaceRevisions.ts +17 -10
  646. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +1 -1
  647. package/src/index.ts +14 -9
  648. package/src/packageVersion.ts +1 -1
  649. package/src/shared-tree/independentView.ts +42 -6
  650. package/src/shared-tree/index.ts +2 -0
  651. package/src/shared-tree/schematizingTreeView.ts +63 -18
  652. package/src/shared-tree/sharedTree.ts +19 -37
  653. package/src/shared-tree/sharedTreeChangeCodecs.ts +45 -11
  654. package/src/shared-tree/tree.ts +2 -2
  655. package/src/shared-tree/treeAlpha.ts +1 -1
  656. package/src/shared-tree/treeCheckout.ts +52 -7
  657. package/src/shared-tree-core/editManagerCodecsCommons.ts +7 -7
  658. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +3 -10
  659. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +3 -10
  660. package/src/shared-tree-core/editManagerSummarizer.ts +1 -1
  661. package/src/shared-tree-core/messageCodecV1ToV4.ts +4 -3
  662. package/src/shared-tree-core/messageCodecs.ts +2 -6
  663. package/src/shared-tree-core/transaction.ts +125 -23
  664. package/src/shared-tree-core/versionedSummarizer.ts +3 -2
  665. package/src/simple-tree/api/index.ts +3 -2
  666. package/src/simple-tree/api/schemaCreationUtilities.ts +35 -5
  667. package/src/simple-tree/api/simpleTreeIndex.ts +1 -1
  668. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +344 -142
  669. package/src/simple-tree/api/transactionTypes.ts +10 -0
  670. package/src/simple-tree/api/tree.ts +89 -7
  671. package/src/simple-tree/api/treeBeta.ts +1 -1
  672. package/src/simple-tree/core/allowedTypes.ts +1 -1
  673. package/src/simple-tree/core/treeNodeSchema.ts +5 -8
  674. package/src/simple-tree/core/unhydratedFlexTree.ts +43 -1
  675. package/src/simple-tree/index.ts +5 -2
  676. package/src/simple-tree/leafNodeSchema.ts +3 -2
  677. package/src/simple-tree/node-kinds/array/arrayNode.ts +99 -19
  678. package/src/simple-tree/node-kinds/array/index.ts +2 -0
  679. package/src/simple-tree/node-kinds/index.ts +2 -0
  680. package/src/simple-tree/node-kinds/object/objectNode.ts +19 -18
  681. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +51 -10
  682. package/src/tableSchema.ts +280 -140
  683. package/src/text/textDomainFormatted.ts +37 -17
  684. package/src/util/bTreeUtils.ts +55 -32
  685. package/src/util/brand.ts +4 -12
  686. package/src/util/brandedMap.ts +2 -6
  687. package/src/util/breakable.ts +3 -2
  688. package/src/util/index.ts +9 -3
  689. package/src/util/opaque.ts +2 -6
  690. package/src/util/rangeMap.ts +20 -11
  691. package/src/util/readSnapshotBlob.ts +3 -3
  692. package/src/util/typeCheck.ts +11 -9
  693. package/src/util/utils.ts +57 -28
  694. package/api-extractor-lint.json +0 -4
  695. package/biome.jsonc +0 -4
@@ -40,9 +40,9 @@ export function replaceRevisions(changeset: Changeset, replacer: RevisionReplace
40
40
  }
41
41
 
42
42
  function updateMark(mark: Mark, replacer: RevisionReplacer): Mark {
43
- const updatedMark = { ...updateEffect(mark, replacer) };
43
+ const updatedMark = { ...updateEffect(mark, mark.count, replacer) };
44
44
  if (mark.cellId !== undefined) {
45
- updatedMark.cellId = replacer.getUpdatedAtomId(mark.cellId);
45
+ updatedMark.cellId = replacer.getUpdatedAtomId(mark.cellId, mark.count);
46
46
  }
47
47
 
48
48
  if (mark.changes !== undefined) {
@@ -54,9 +54,11 @@ function updateMark(mark: Mark, replacer: RevisionReplacer): Mark {
54
54
 
55
55
  function updateEffect<TMark extends MarkEffect>(
56
56
  input: TMark,
57
+ count: number,
57
58
  replacer: RevisionReplacer,
58
59
  ): TMark {
59
- const mark = isDetach(input) || isRename(input) ? updateIdOverride(input, replacer) : input;
60
+ const mark =
61
+ isDetach(input) || isRename(input) ? updateIdOverride(input, count, replacer) : input;
60
62
  const type = mark.type;
61
63
  switch (type) {
62
64
  case "Rename":
@@ -66,8 +68,8 @@ function updateEffect<TMark extends MarkEffect>(
66
68
  case "AttachAndDetach": {
67
69
  return {
68
70
  ...mark,
69
- attach: updateEffect(mark.attach, replacer),
70
- detach: updateEffect(mark.detach, replacer),
71
+ attach: updateEffect(mark.attach, count, replacer),
72
+ detach: updateEffect(mark.detach, count, replacer),
71
73
  };
72
74
  }
73
75
  case "MoveIn":
@@ -75,12 +77,13 @@ function updateEffect<TMark extends MarkEffect>(
75
77
  return updateMoveEffect<TMark & MoveMarkEffect>(
76
78
  // For some reason, TypeScript is not able to infer that `mark` cannot be a `NoopMark` here.
77
79
  mark as MoveMarkEffect,
80
+ count,
78
81
  replacer,
79
82
  );
80
83
  }
81
84
  case "Insert":
82
85
  case "Remove": {
83
- return updateRevisionAndId(mark as (TMark & Insert) | (TMark & Remove), replacer);
86
+ return updateRevisionAndId(mark as (TMark & Insert) | (TMark & Remove), count, replacer);
84
87
  }
85
88
  default: {
86
89
  unreachableCase(type);
@@ -90,38 +93,42 @@ function updateEffect<TMark extends MarkEffect>(
90
93
 
91
94
  function updateIdOverride<TEffect extends Detach | Rename>(
92
95
  effect: TEffect,
96
+ count: number,
93
97
  replacer: RevisionReplacer,
94
98
  ): TEffect {
95
99
  if (effect.idOverride === undefined) {
96
100
  return effect;
97
101
  }
98
- const idOverride = replacer.getUpdatedAtomId(effect.idOverride);
102
+ const idOverride = replacer.getUpdatedAtomId(effect.idOverride, count);
99
103
  return { ...effect, idOverride };
100
104
  }
101
105
 
102
106
  function updateMoveEffect<TEffect extends HasMoveFields>(
103
107
  effect: TEffect,
108
+ count: number,
104
109
  replacer: RevisionReplacer,
105
110
  ): TEffect {
106
111
  return effect.finalEndpoint === undefined
107
- ? updateRevisionAndId(effect, replacer)
112
+ ? updateRevisionAndId(effect, count, replacer)
108
113
  : updateRevisionAndId(
109
114
  {
110
115
  ...effect,
111
- finalEndpoint: replacer.getUpdatedAtomId(effect.finalEndpoint),
116
+ finalEndpoint: replacer.getUpdatedAtomId(effect.finalEndpoint, count),
112
117
  },
118
+ count,
113
119
  replacer,
114
120
  );
115
121
  }
116
122
 
117
123
  function updateRevisionAndId<T extends HasRevisionTag & HasMoveId>(
118
124
  input: T,
125
+ count: number,
119
126
  replacer: RevisionReplacer,
120
127
  ): T {
121
128
  if (!replacer.isObsolete(input.revision)) {
122
129
  return input;
123
130
  }
124
- const newAtom = replacer.getUpdatedAtomId(makeChangeAtomId(input.id, input.revision));
131
+ const newAtom = replacer.getUpdatedAtomId(makeChangeAtomId(input.id, input.revision), count);
125
132
  return withRevisionAndId(input, newAtom.revision, newAtom.localId);
126
133
  }
127
134
 
@@ -191,7 +191,7 @@ export function sequenceFieldToDelta(
191
191
  }
192
192
  const delta: Mutable<FieldChangeDelta> = {};
193
193
  if (local.length > 0) {
194
- delta.local = local;
194
+ delta.local = { marks: local };
195
195
  }
196
196
  if (global.length > 0) {
197
197
  delta.global = global;
package/src/index.ts CHANGED
@@ -76,8 +76,10 @@ export {
76
76
  type ObservationResults,
77
77
  type TreeIdentifierUtils,
78
78
  independentView,
79
+ type IndependentViewOptions,
79
80
  createIndependentTreeBeta,
80
81
  createIndependentTreeAlpha,
82
+ type CreateIndependentTreeAlphaOptions,
81
83
  ForestTypeOptimized,
82
84
  ForestTypeExpensiveDebug,
83
85
  ForestTypeReference,
@@ -294,13 +296,15 @@ export {
294
296
  exportCompatibilitySchemaSnapshot,
295
297
  importCompatibilitySchemaSnapshot,
296
298
  checkCompatibility,
297
- checkSchemaCompatibilitySnapshots,
299
+ snapshotSchemaCompatibility,
298
300
  type SnapshotFileSystem,
299
301
  incrementalSummaryHint,
300
302
  incrementalEncodingPolicyForAllowedTypes,
301
303
  eraseSchemaDetails,
302
304
  eraseSchemaDetailsSubclassable,
303
- type SchemaCompatibilitySnapshotsOptions,
305
+ type SnapshotSchemaCompatibilityOptions,
306
+ type ArrayPlaceAnchor,
307
+ createArrayInsertionAnchor,
304
308
  } from "./simple-tree/index.js";
305
309
  export {
306
310
  SharedTree,
@@ -315,6 +319,7 @@ export { persistedToSimpleSchema } from "./shared-tree/index.js";
315
319
  export {
316
320
  type ICodecOptions,
317
321
  type CodecWriteOptions,
322
+ type CodecWriteOptionsBeta,
318
323
  FluidClientVersion,
319
324
  type FormatValidator,
320
325
  FormatValidatorNoOp,
@@ -348,13 +353,12 @@ export type {
348
353
  export { cloneWithReplacements } from "./util/index.js";
349
354
 
350
355
  import * as InternalTypes from "./internalTypes.js";
351
- export {
352
- /**
353
- * Contains types used by the API, but which serve mechanical purposes and do not represent semantic concepts.
354
- * They are used internally to implement API aspects, but are not intended for use by external consumers.
355
- */
356
- InternalTypes,
357
- };
356
+ /**
357
+ * Contains types used by the API, but which serve mechanical purposes and do not represent semantic concepts.
358
+ * They are used internally to implement API aspects, but are not intended for use by external consumers.
359
+ */
360
+ // eslint-disable-next-line unicorn/prefer-export-from -- fixing requires `export * as` (breaks API-Extractor)
361
+ export { InternalTypes };
358
362
 
359
363
  // Internal/System types:
360
364
  // These would be put in `internalTypes` except doing so tents to cause errors like:
@@ -367,3 +371,4 @@ export { TableSchema, type System_TableSchema } from "./tableSchema.js";
367
371
  export { asAlpha, asBeta } from "./api.js";
368
372
 
369
373
  export { TextAsTree, FormattedTextAsTree } from "./text/index.js";
374
+ export { ExtensibleUnionNode } from "./extensibleUnionNode.js";
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.81.1";
9
+ export const pkgVersion = "2.83.0";
@@ -61,6 +61,45 @@ import {
61
61
  } from "./sharedTree.js";
62
62
  import { createTreeCheckout } from "./treeCheckout.js";
63
63
 
64
+ /**
65
+ * {@link independentView} options.
66
+ * @alpha @input
67
+ */
68
+ export interface IndependentViewOptions extends ForestOptions, Partial<CodecWriteOptions> {
69
+ /**
70
+ * Optional ID compressor for generating and compressing identifiers.
71
+ * If not provided, a new one will be created.
72
+ */
73
+ idCompressor?: IIdCompressor | undefined;
74
+ }
75
+
76
+ /**
77
+ * {@link createIndependentTreeAlpha} options.
78
+ * @alpha
79
+ */
80
+ export type CreateIndependentTreeAlphaOptions = ForestOptions &
81
+ (
82
+ | (IndependentViewOptions & {
83
+ /**
84
+ * Optional content for initializing the tree.
85
+ * If not provided, the tree will be uninitialized.
86
+ */
87
+ content?: never;
88
+ })
89
+ | (ICodecOptions & {
90
+ /**
91
+ * Content for initializing the tree.
92
+ * The content includes the idCompressor, so idCompressor should not be provided at the top level.
93
+ */
94
+ content: ViewContent;
95
+ /**
96
+ * Should not be provided when content is specified.
97
+ * The idCompressor will be obtained from the content.
98
+ */
99
+ idCompressor?: never;
100
+ })
101
+ );
102
+
64
103
  /**
65
104
  * Create an uninitialized {@link TreeView} that is not tied to any {@link ITree} instance.
66
105
  *
@@ -72,7 +111,7 @@ import { createTreeCheckout } from "./treeCheckout.js";
72
111
  */
73
112
  export function independentView<const TSchema extends ImplicitFieldSchema>(
74
113
  config: TreeViewConfiguration<TSchema>,
75
- options?: ForestOptions & { idCompressor?: IIdCompressor | undefined },
114
+ options?: IndependentViewOptions,
76
115
  ): TreeViewAlpha<TSchema> {
77
116
  return createIndependentTreeAlpha(options).viewWith(config) as TreeViewAlpha<TSchema>;
78
117
  }
@@ -170,11 +209,7 @@ export function createIndependentTreeBeta<const TSchema extends ImplicitFieldSch
170
209
  * @alpha
171
210
  */
172
211
  export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSchema>(
173
- options?: ForestOptions &
174
- (
175
- | ({ idCompressor?: IIdCompressor | undefined } & { content?: undefined })
176
- | (ICodecOptions & { content: ViewContent } & { idCompressor?: undefined })
177
- ),
212
+ options?: CreateIndependentTreeAlphaOptions,
178
213
  ): ViewableTree & Pick<ITreeAlpha, "exportVerbose" | "exportSimpleSchema"> {
179
214
  const breaker = new Breakable("independentView");
180
215
  const idCompressor: IIdCompressor =
@@ -197,6 +232,7 @@ export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSc
197
232
  forest,
198
233
  schema: schemaRepository,
199
234
  breaker,
235
+ codecOptions: options,
200
236
  });
201
237
 
202
238
  if (options?.content !== undefined) {
@@ -59,8 +59,10 @@ export {
59
59
  independentInitializedView,
60
60
  type ViewContent,
61
61
  independentView,
62
+ type IndependentViewOptions,
62
63
  createIndependentTreeBeta,
63
64
  createIndependentTreeAlpha,
65
+ type CreateIndependentTreeAlphaOptions,
64
66
  } from "./independentView.js";
65
67
 
66
68
  export type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
@@ -227,21 +227,20 @@ export class SchematizingSimpleTreeView<
227
227
  },
228
228
  );
229
229
 
230
- this.checkout.transaction.start();
231
-
232
- initialize(
233
- this.checkout,
234
- schema,
235
- initializerFromChunk(this.checkout, () => {
236
- // This must be done after initial schema is set!
237
- return combineChunks(
238
- this.checkout.forest.chunkField(
239
- cursorForMapTreeField(mapTree === undefined ? [] : [mapTree]),
240
- ),
241
- );
242
- }),
243
- );
244
- this.checkout.transaction.commit();
230
+ this.runTransaction(() => {
231
+ initialize(
232
+ this.checkout,
233
+ schema,
234
+ initializerFromChunk(this.checkout, () => {
235
+ // This must be done after initial schema is set!
236
+ return combineChunks(
237
+ this.checkout.forest.chunkField(
238
+ cursorForMapTreeField(mapTree === undefined ? [] : [mapTree]),
239
+ ),
240
+ );
241
+ }),
242
+ );
243
+ });
245
244
  });
246
245
  }
247
246
 
@@ -294,9 +293,43 @@ export class SchematizingSimpleTreeView<
294
293
  | void,
295
294
  params?: RunTransactionParams,
296
295
  ): TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult {
296
+ this.mountTransaction(params, false);
297
+ const transactionCallbackStatus = transaction();
298
+ return this.unmountTransaction(transactionCallbackStatus, params);
299
+ }
300
+
301
+ /**
302
+ * {@inheritDoc @fluidframework/shared-tree#TreeViewAlpha.runTransactionAsync}
303
+ */
304
+ public runTransactionAsync<TSuccessValue, TFailureValue>(
305
+ transaction: () => Promise<TransactionCallbackStatus<TSuccessValue, TFailureValue>>,
306
+ params?: RunTransactionParams,
307
+ ): Promise<TransactionResultExt<TSuccessValue, TFailureValue>>;
308
+ /**
309
+ * {@inheritDoc @fluidframework/shared-tree#TreeViewAlpha.runTransactionAsync}
310
+ */
311
+ public runTransactionAsync(
312
+ transaction: () => Promise<VoidTransactionCallbackStatus | void>,
313
+ params?: RunTransactionParams,
314
+ ): Promise<TransactionResult>;
315
+ public async runTransactionAsync<TSuccessValue, TFailureValue>(
316
+ transaction: () => Promise<
317
+ | TransactionCallbackStatus<TSuccessValue, TFailureValue>
318
+ | VoidTransactionCallbackStatus
319
+ | void
320
+ >,
321
+ params: RunTransactionParams | undefined,
322
+ ): Promise<TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult> {
323
+ this.mountTransaction(params, true);
324
+ const transactionCallbackStatus = await transaction();
325
+ return this.unmountTransaction(transactionCallbackStatus, params);
326
+ }
327
+
328
+ private mountTransaction(params: RunTransactionParams | undefined, isAsync: boolean): void {
329
+ this.ensureUndisposed();
297
330
  const { checkout } = this;
298
331
 
299
- checkout.transaction.start();
332
+ checkout.transaction.start(isAsync);
300
333
 
301
334
  // Validate preconditions before running the transaction callback.
302
335
  addConstraintsToTransaction(
@@ -304,7 +337,17 @@ export class SchematizingSimpleTreeView<
304
337
  false /* constraintsOnRevert */,
305
338
  params?.preconditions,
306
339
  );
307
- const transactionCallbackStatus = transaction();
340
+ }
341
+
342
+ private unmountTransaction<TSuccessValue, TFailureValue>(
343
+ transactionCallbackStatus:
344
+ | TransactionCallbackStatus<TSuccessValue, TFailureValue>
345
+ | VoidTransactionCallbackStatus
346
+ | void,
347
+ params?: RunTransactionParams,
348
+ ): TransactionResultExt<TSuccessValue, TFailureValue> | TransactionResult {
349
+ this.ensureUndisposed();
350
+ const { checkout } = this;
308
351
  const rollback = transactionCallbackStatus?.rollback;
309
352
  const value = (
310
353
  transactionCallbackStatus as TransactionCallbackStatus<TSuccessValue, TFailureValue>
@@ -324,7 +367,9 @@ export class SchematizingSimpleTreeView<
324
367
  transactionCallbackStatus?.preconditionsOnRevert,
325
368
  );
326
369
 
327
- checkout.transaction.commit();
370
+ checkout.runWithTransactionLabel(() => {
371
+ checkout.transaction.commit();
372
+ }, params?.label);
328
373
  return value === undefined
329
374
  ? { success: true }
330
375
  : { success: true, value: value as TSuccessValue };
@@ -21,6 +21,7 @@ import {
21
21
  import {
22
22
  type CodecTree,
23
23
  type CodecWriteOptions,
24
+ type CodecWriteOptionsBeta,
24
25
  DependentFormatVersion,
25
26
  FluidClientVersion,
26
27
  FormatValidatorNoOp,
@@ -99,7 +100,6 @@ import {
99
100
  type SchemaType,
100
101
  } from "../simple-tree/index.js";
101
102
  import {
102
- brand,
103
103
  type Breakable,
104
104
  breakingClass,
105
105
  type JsonCompatible,
@@ -109,7 +109,7 @@ import {
109
109
  import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
110
110
  import {
111
111
  getCodecTreeForChangeFormat,
112
- type SharedTreeChangeFormatVersion,
112
+ SharedTreeChangeFormatVersion,
113
113
  } from "./sharedTreeChangeCodecs.js";
114
114
  import { SharedTreeChangeFamily } from "./sharedTreeChangeFamily.js";
115
115
  import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
@@ -550,23 +550,14 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
550
550
  * This is because the format for SharedTree changes are not explicitly versioned.
551
551
  */
552
552
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison -- intentional comparison
553
- export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([
554
- [
555
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.v3),
556
- brand<SharedTreeChangeFormatVersion>(3),
557
- ],
558
- [
559
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.v4),
560
- brand<SharedTreeChangeFormatVersion>(4),
561
- ],
562
- [
563
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.vSharedBranches),
564
- brand<SharedTreeChangeFormatVersion>(4),
565
- ],
566
- [
567
- brand<EditManagerFormatVersion>(EditManagerFormatVersion.v6),
568
- brand<SharedTreeChangeFormatVersion>(5),
569
- ],
553
+ export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs<
554
+ EditManagerFormatVersion,
555
+ SharedTreeChangeFormatVersion
556
+ >([
557
+ [EditManagerFormatVersion.v3, SharedTreeChangeFormatVersion.v3],
558
+ [EditManagerFormatVersion.v4, SharedTreeChangeFormatVersion.v4],
559
+ [EditManagerFormatVersion.vSharedBranches, SharedTreeChangeFormatVersion.v4],
560
+ [EditManagerFormatVersion.v6, SharedTreeChangeFormatVersion.v5],
570
561
  ]);
571
562
 
572
563
  /**
@@ -575,23 +566,14 @@ export const changeFormatVersionForEditManager = DependentFormatVersion.fromPair
575
566
  * Once an entry is defined and used in production, it cannot be changed.
576
567
  * This is because the format for SharedTree changes are not explicitly versioned.
577
568
  */
578
- export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([
579
- [
580
- brand<MessageFormatVersion>(MessageFormatVersion.v3),
581
- brand<SharedTreeChangeFormatVersion>(3),
582
- ],
583
- [
584
- brand<MessageFormatVersion>(MessageFormatVersion.v4),
585
- brand<SharedTreeChangeFormatVersion>(4),
586
- ],
587
- [
588
- brand<MessageFormatVersion>(MessageFormatVersion.vSharedBranches),
589
- brand<SharedTreeChangeFormatVersion>(4),
590
- ],
591
- [
592
- brand<MessageFormatVersion>(MessageFormatVersion.v6),
593
- brand<SharedTreeChangeFormatVersion>(5),
594
- ],
569
+ export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs<
570
+ MessageFormatVersion,
571
+ SharedTreeChangeFormatVersion
572
+ >([
573
+ [MessageFormatVersion.v3, SharedTreeChangeFormatVersion.v3],
574
+ [MessageFormatVersion.v4, SharedTreeChangeFormatVersion.v4],
575
+ [MessageFormatVersion.vSharedBranches, SharedTreeChangeFormatVersion.v4],
576
+ [MessageFormatVersion.v6, SharedTreeChangeFormatVersion.v5],
595
577
  ]);
596
578
 
597
579
  function getCodecTreeForEditManagerFormat(clientVersion: MinimumVersionForCollab): CodecTree {
@@ -631,7 +613,7 @@ export function getCodecTreeForSharedTreeFormat(
631
613
  * Configuration options for SharedTree.
632
614
  * @beta @input
633
615
  */
634
- export type SharedTreeOptionsBeta = ForestOptions;
616
+ export type SharedTreeOptionsBeta = ForestOptions & Partial<CodecWriteOptionsBeta>;
635
617
 
636
618
  /**
637
619
  * Configuration options for SharedTree with alpha features.
@@ -23,7 +23,7 @@ import {
23
23
  type TreeStoredSchema,
24
24
  } from "../core/index.js";
25
25
  import {
26
- type ModularChangeFormatVersion,
26
+ ModularChangeFormatVersion,
27
27
  type ModularChangeset,
28
28
  type SchemaChange,
29
29
  defaultSchemaPolicy,
@@ -32,10 +32,10 @@ import {
32
32
  makeSchemaChangeCodecs,
33
33
  } from "../feature-libraries/index.js";
34
34
  import {
35
- brand,
36
- type Brand,
35
+ strictEnum,
37
36
  type JsonCompatibleReadOnly,
38
37
  type Mutable,
38
+ type Values,
39
39
  } from "../util/index.js";
40
40
 
41
41
  import {
@@ -61,8 +61,8 @@ export function makeSharedTreeChangeCodecFamily(
61
61
  ([format, { modularChange, schemaChange }]) => [
62
62
  format,
63
63
  makeSharedTreeChangeCodec(
64
- modularChangeCodecFamily.resolve(modularChange).json,
65
- schemaChangeCodecs.resolve(schemaChange).json,
64
+ modularChangeCodecFamily.resolve(modularChange),
65
+ schemaChangeCodecs.resolve(schemaChange),
66
66
  options,
67
67
  ),
68
68
  ],
@@ -75,7 +75,32 @@ interface ChangeFormatDependencies {
75
75
  readonly schemaChange: SchemaFormatVersion;
76
76
  }
77
77
 
78
- export type SharedTreeChangeFormatVersion = Brand<3 | 4 | 5, "SharedTreeChangeFormatVersion">;
78
+ /**
79
+ * The format version for `SharedTreeChange`.
80
+ */
81
+ export const SharedTreeChangeFormatVersion = strictEnum("SharedTreeChangeFormatVersion", {
82
+ /**
83
+ * Introduced prior to 2.0 and used beyond.
84
+ * Reading capability must be maintained for backwards compatibility.
85
+ * Writing capability needs to be maintained so long as {@link lowestMinVersionForCollab} is less than 2.2.0.
86
+ */
87
+ v3: 3,
88
+ /**
89
+ * Introduced in 2.2.0.
90
+ * Was inadvertently made usable for writing in 2.43.0 (through configuredSharedTree) and remains available.
91
+ * Reading capability must be maintained for backwards compatibility.
92
+ * Writing capability could be dropped in favor of {@link SharedTreeChangeFormatVersion.v3},
93
+ * but doing so would make the pattern of writable versions more complex and gain little
94
+ * because the logic for this format is shared with {@link SharedTreeChangeFormatVersion.v3}.
95
+ */
96
+ v4: 4,
97
+ /**
98
+ * Introduced and made available for writing in 2.80.0
99
+ * Adds support for "no change" constraints.
100
+ */
101
+ v5: 5,
102
+ });
103
+ export type SharedTreeChangeFormatVersion = Values<typeof SharedTreeChangeFormatVersion>;
79
104
 
80
105
  /**
81
106
  * Defines for each SharedTree change format the corresponding dependent formats to use.
@@ -83,13 +108,22 @@ export type SharedTreeChangeFormatVersion = Brand<3 | 4 | 5, "SharedTreeChangeFo
83
108
  * Once an entry is defined and used in production, it cannot be changed.
84
109
  * This is because the format for the dependent formats are not explicitly versioned.
85
110
  */
86
- export const dependenciesForChangeFormat: Map<
111
+ export const dependenciesForChangeFormat = new Map<
87
112
  SharedTreeChangeFormatVersion,
88
113
  ChangeFormatDependencies
89
- > = new Map([
90
- [brand(3), { modularChange: brand(3), schemaChange: SchemaFormatVersion.v1 }],
91
- [brand(4), { modularChange: brand(4), schemaChange: SchemaFormatVersion.v1 }],
92
- [brand(5), { modularChange: brand(5), schemaChange: SchemaFormatVersion.v1 }],
114
+ >([
115
+ [
116
+ SharedTreeChangeFormatVersion.v3,
117
+ { modularChange: ModularChangeFormatVersion.v3, schemaChange: SchemaFormatVersion.v1 },
118
+ ],
119
+ [
120
+ SharedTreeChangeFormatVersion.v4,
121
+ { modularChange: ModularChangeFormatVersion.v4, schemaChange: SchemaFormatVersion.v1 },
122
+ ],
123
+ [
124
+ SharedTreeChangeFormatVersion.v5,
125
+ { modularChange: ModularChangeFormatVersion.v5, schemaChange: SchemaFormatVersion.v1 },
126
+ ],
93
127
  ]);
94
128
 
95
129
  export function getCodecTreeForChangeFormat(
@@ -28,7 +28,7 @@ import type { ITreeCheckout } from "./treeCheckout.js";
28
28
  * Provides various functions for interacting with {@link TreeNode}s.
29
29
  * @remarks
30
30
  * This type should only be used via the {@link (Tree:variable)} export.
31
- * @system @sealed @public
31
+ * @sealed @public
32
32
  */
33
33
  export interface Tree extends TreeNodeApi {
34
34
  /**
@@ -467,7 +467,7 @@ function runTransactionInCheckout<TResult>(
467
467
  transaction: () => TResult | typeof rollback,
468
468
  preconditions: readonly TransactionConstraint[],
469
469
  ): TResult | typeof rollback {
470
- checkout.transaction.start();
470
+ checkout.transaction.start(false);
471
471
  addConstraintsToTransaction(checkout, false, preconditions);
472
472
 
473
473
  let result: ReturnType<typeof transaction>;
@@ -226,7 +226,7 @@ export interface TreeIdentifierUtils {
226
226
  * There should be a way to provide a source for defaulted identifiers for unhydrated node creation, either via these APIs or some way to add them to its output later.
227
227
  * If an option were added to these APIs, it could also be used to enable unknown optional fields.
228
228
  *
229
- * @system @sealed @alpha
229
+ * @sealed @alpha
230
230
  */
231
231
  export interface TreeAlpha {
232
232
  /**