@fluidframework/tree 2.81.0 → 2.82.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 (579) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/api-report/tree.alpha.api.md +54 -22
  3. package/api-report/tree.beta.api.md +150 -1
  4. package/api-report/tree.legacy.beta.api.md +150 -1
  5. package/api-report/tree.legacy.public.api.md +1 -0
  6. package/api-report/tree.public.api.md +1 -0
  7. package/dist/alpha.d.ts +8 -2
  8. package/dist/beta.d.ts +3 -0
  9. package/dist/codec/codec.d.ts +17 -8
  10. package/dist/codec/codec.d.ts.map +1 -1
  11. package/dist/codec/codec.js +8 -1
  12. package/dist/codec/codec.js.map +1 -1
  13. package/dist/codec/index.d.ts +1 -1
  14. package/dist/codec/index.d.ts.map +1 -1
  15. package/dist/codec/index.js +2 -1
  16. package/dist/codec/index.js.map +1 -1
  17. package/dist/codec/versioned/codec.d.ts +1 -1
  18. package/dist/codec/versioned/codec.d.ts.map +1 -1
  19. package/dist/codec/versioned/codec.js.map +1 -1
  20. package/dist/core/index.d.ts +1 -1
  21. package/dist/core/index.d.ts.map +1 -1
  22. package/dist/core/index.js +4 -2
  23. package/dist/core/index.js.map +1 -1
  24. package/dist/core/rebase/changeRebaser.d.ts +3 -2
  25. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  26. package/dist/core/rebase/changeRebaser.js.map +1 -1
  27. package/dist/core/rebase/index.d.ts +1 -1
  28. package/dist/core/rebase/index.d.ts.map +1 -1
  29. package/dist/core/rebase/index.js +4 -2
  30. package/dist/core/rebase/index.js.map +1 -1
  31. package/dist/core/rebase/types.d.ts +23 -3
  32. package/dist/core/rebase/types.d.ts.map +1 -1
  33. package/dist/core/rebase/types.js +30 -16
  34. package/dist/core/rebase/types.js.map +1 -1
  35. package/dist/core/schema-stored/formatV1.d.ts +2 -2
  36. package/dist/core/schema-stored/formatV1.d.ts.map +1 -1
  37. package/dist/core/schema-stored/formatV1.js +0 -5
  38. package/dist/core/schema-stored/formatV1.js.map +1 -1
  39. package/dist/core/schema-stored/formatV2.d.ts +11 -10
  40. package/dist/core/schema-stored/formatV2.d.ts.map +1 -1
  41. package/dist/core/schema-stored/formatV2.js +1 -6
  42. package/dist/core/schema-stored/formatV2.js.map +1 -1
  43. package/dist/core/schema-stored/index.d.ts.map +1 -1
  44. package/dist/core/schema-stored/index.js.map +1 -1
  45. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  46. package/dist/core/schema-stored/schema.js.map +1 -1
  47. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  48. package/dist/core/tree/anchorSet.js.map +1 -1
  49. package/dist/core/tree/delta.d.ts +9 -7
  50. package/dist/core/tree/delta.d.ts.map +1 -1
  51. package/dist/core/tree/delta.js.map +1 -1
  52. package/dist/core/tree/deltaUtil.js +1 -1
  53. package/dist/core/tree/deltaUtil.js.map +1 -1
  54. package/dist/core/tree/visitDelta.js +2 -2
  55. package/dist/core/tree/visitDelta.js.map +1 -1
  56. package/dist/extensibleSchemaUnion.d.ts +72 -0
  57. package/dist/extensibleSchemaUnion.d.ts.map +1 -0
  58. package/dist/extensibleSchemaUnion.js +79 -0
  59. package/dist/extensibleSchemaUnion.js.map +1 -0
  60. package/dist/feature-libraries/changeAtomIdBTree.d.ts +4 -2
  61. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  62. package/dist/feature-libraries/changeAtomIdBTree.js +9 -1
  63. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  64. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
  65. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  66. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +20 -21
  67. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  68. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  69. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  70. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  71. package/dist/feature-libraries/forest-summary/codec.d.ts +2 -1
  72. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  73. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  74. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  75. package/dist/feature-libraries/forest-summary/forestSummarizer.js +5 -2
  76. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  77. package/dist/feature-libraries/forest-summary/formatCommon.d.ts +1 -39
  78. package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  79. package/dist/feature-libraries/forest-summary/formatCommon.js +1 -2
  80. package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  81. package/dist/feature-libraries/forest-summary/formatV1.d.ts +1 -39
  82. package/dist/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
  83. package/dist/feature-libraries/forest-summary/formatV2.d.ts +1 -39
  84. package/dist/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
  85. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  86. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  87. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
  88. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  89. package/dist/feature-libraries/index.d.ts +3 -3
  90. package/dist/feature-libraries/index.d.ts.map +1 -1
  91. package/dist/feature-libraries/index.js +4 -3
  92. package/dist/feature-libraries/index.js.map +1 -1
  93. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
  94. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
  95. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +42 -22
  96. package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  97. package/dist/feature-libraries/modular-schema/genericFieldKind.js +1 -1
  98. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  99. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  100. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  101. package/dist/feature-libraries/modular-schema/index.js +2 -1
  102. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  103. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +1 -1
  104. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  105. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +9 -5
  106. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  107. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
  108. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  109. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +30 -7
  110. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  111. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  112. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +38 -27
  113. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  114. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
  115. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  116. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
  117. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  118. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
  119. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  120. package/dist/feature-libraries/optional-field/optionalField.js +1 -1
  121. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  122. package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  123. package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
  124. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
  125. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  126. package/dist/feature-libraries/schema-index/formatV2.d.ts +4 -4
  127. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -1
  128. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  129. package/dist/feature-libraries/sequence-field/invert.js +2 -2
  130. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  131. package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -16
  132. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  133. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
  134. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  135. package/dist/index.d.ts +5 -5
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +4 -1
  138. package/dist/index.js.map +1 -1
  139. package/dist/legacy.d.ts +3 -0
  140. package/dist/packageVersion.d.ts +1 -1
  141. package/dist/packageVersion.js +1 -1
  142. package/dist/packageVersion.js.map +1 -1
  143. package/dist/shared-tree/independentView.d.ts +36 -13
  144. package/dist/shared-tree/independentView.d.ts.map +1 -1
  145. package/dist/shared-tree/independentView.js +1 -0
  146. package/dist/shared-tree/independentView.js.map +1 -1
  147. package/dist/shared-tree/index.d.ts +1 -1
  148. package/dist/shared-tree/index.d.ts.map +1 -1
  149. package/dist/shared-tree/index.js.map +1 -1
  150. package/dist/shared-tree/schematizingTreeView.d.ts +10 -0
  151. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  152. package/dist/shared-tree/schematizingTreeView.js +25 -9
  153. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  154. package/dist/shared-tree/sharedTree.d.ts +3 -3
  155. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  156. package/dist/shared-tree/sharedTree.js +8 -32
  157. package/dist/shared-tree/sharedTree.js.map +1 -1
  158. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
  159. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  160. package/dist/shared-tree/sharedTreeChangeCodecs.js +38 -4
  161. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  162. package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
  163. package/dist/shared-tree/tree.js +1 -1
  164. package/dist/shared-tree/tree.js.map +1 -1
  165. package/dist/shared-tree/treeCheckout.d.ts +20 -0
  166. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  167. package/dist/shared-tree/treeCheckout.js +39 -3
  168. package/dist/shared-tree/treeCheckout.js.map +1 -1
  169. package/dist/shared-tree-core/editManagerSummarizer.js +1 -1
  170. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  171. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  172. package/dist/shared-tree-core/messageCodecV1ToV4.js +2 -2
  173. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  174. package/dist/shared-tree-core/transaction.d.ts +14 -3
  175. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  176. package/dist/shared-tree-core/transaction.js +59 -16
  177. package/dist/shared-tree-core/transaction.js.map +1 -1
  178. package/dist/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
  179. package/dist/shared-tree-core/versionedSummarizer.js +1 -1
  180. package/dist/shared-tree-core/versionedSummarizer.js.map +1 -1
  181. package/dist/simple-tree/api/index.d.ts +1 -1
  182. package/dist/simple-tree/api/index.d.ts.map +1 -1
  183. package/dist/simple-tree/api/index.js +3 -2
  184. package/dist/simple-tree/api/index.js.map +1 -1
  185. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
  186. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  187. package/dist/simple-tree/api/schemaCreationUtilities.js +16 -1
  188. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  189. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  190. package/dist/simple-tree/api/transactionTypes.d.ts +10 -0
  191. package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
  192. package/dist/simple-tree/api/transactionTypes.js.map +1 -1
  193. package/dist/simple-tree/api/tree.d.ts +81 -6
  194. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  195. package/dist/simple-tree/api/tree.js.map +1 -1
  196. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  197. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  198. package/dist/simple-tree/index.d.ts +2 -2
  199. package/dist/simple-tree/index.d.ts.map +1 -1
  200. package/dist/simple-tree/index.js +4 -2
  201. package/dist/simple-tree/index.js.map +1 -1
  202. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  203. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  204. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
  205. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  206. package/dist/simple-tree/node-kinds/array/arrayNode.js +43 -1
  207. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  208. package/dist/simple-tree/node-kinds/array/index.d.ts +1 -1
  209. package/dist/simple-tree/node-kinds/array/index.d.ts.map +1 -1
  210. package/dist/simple-tree/node-kinds/array/index.js +2 -1
  211. package/dist/simple-tree/node-kinds/array/index.js.map +1 -1
  212. package/dist/simple-tree/node-kinds/index.d.ts +1 -1
  213. package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
  214. package/dist/simple-tree/node-kinds/index.js +2 -1
  215. package/dist/simple-tree/node-kinds/index.js.map +1 -1
  216. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  217. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  218. package/dist/tableSchema.d.ts +71 -48
  219. package/dist/tableSchema.d.ts.map +1 -1
  220. package/dist/tableSchema.js +200 -98
  221. package/dist/tableSchema.js.map +1 -1
  222. package/dist/text/textDomainFormatted.js +1 -1
  223. package/dist/text/textDomainFormatted.js.map +1 -1
  224. package/dist/util/bTreeUtils.d.ts +30 -4
  225. package/dist/util/bTreeUtils.d.ts.map +1 -1
  226. package/dist/util/bTreeUtils.js +29 -17
  227. package/dist/util/bTreeUtils.js.map +1 -1
  228. package/dist/util/brand.d.ts.map +1 -1
  229. package/dist/util/brand.js.map +1 -1
  230. package/dist/util/brandedMap.d.ts.map +1 -1
  231. package/dist/util/brandedMap.js.map +1 -1
  232. package/dist/util/breakable.d.ts.map +1 -1
  233. package/dist/util/breakable.js +2 -1
  234. package/dist/util/breakable.js.map +1 -1
  235. package/dist/util/index.d.ts +2 -2
  236. package/dist/util/index.d.ts.map +1 -1
  237. package/dist/util/index.js +6 -3
  238. package/dist/util/index.js.map +1 -1
  239. package/dist/util/opaque.d.ts.map +1 -1
  240. package/dist/util/opaque.js.map +1 -1
  241. package/dist/util/rangeMap.d.ts +3 -2
  242. package/dist/util/rangeMap.d.ts.map +1 -1
  243. package/dist/util/rangeMap.js +7 -1
  244. package/dist/util/rangeMap.js.map +1 -1
  245. package/dist/util/readSnapshotBlob.d.ts +1 -1
  246. package/dist/util/readSnapshotBlob.d.ts.map +1 -1
  247. package/dist/util/readSnapshotBlob.js.map +1 -1
  248. package/dist/util/typeCheck.d.ts.map +1 -1
  249. package/dist/util/typeCheck.js.map +1 -1
  250. package/dist/util/utils.d.ts +20 -16
  251. package/dist/util/utils.d.ts.map +1 -1
  252. package/dist/util/utils.js +49 -17
  253. package/dist/util/utils.js.map +1 -1
  254. package/eslint.config.mts +0 -9
  255. package/lib/alpha.d.ts +8 -2
  256. package/lib/beta.d.ts +3 -0
  257. package/lib/codec/codec.d.ts +17 -8
  258. package/lib/codec/codec.d.ts.map +1 -1
  259. package/lib/codec/codec.js +6 -0
  260. package/lib/codec/codec.js.map +1 -1
  261. package/lib/codec/index.d.ts +1 -1
  262. package/lib/codec/index.d.ts.map +1 -1
  263. package/lib/codec/index.js +1 -1
  264. package/lib/codec/index.js.map +1 -1
  265. package/lib/codec/versioned/codec.d.ts +1 -1
  266. package/lib/codec/versioned/codec.d.ts.map +1 -1
  267. package/lib/codec/versioned/codec.js.map +1 -1
  268. package/lib/core/index.d.ts +1 -1
  269. package/lib/core/index.d.ts.map +1 -1
  270. package/lib/core/index.js +1 -1
  271. package/lib/core/index.js.map +1 -1
  272. package/lib/core/rebase/changeRebaser.d.ts +3 -2
  273. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  274. package/lib/core/rebase/changeRebaser.js.map +1 -1
  275. package/lib/core/rebase/index.d.ts +1 -1
  276. package/lib/core/rebase/index.d.ts.map +1 -1
  277. package/lib/core/rebase/index.js +1 -1
  278. package/lib/core/rebase/index.js.map +1 -1
  279. package/lib/core/rebase/types.d.ts +23 -3
  280. package/lib/core/rebase/types.d.ts.map +1 -1
  281. package/lib/core/rebase/types.js +27 -15
  282. package/lib/core/rebase/types.js.map +1 -1
  283. package/lib/core/schema-stored/formatV1.d.ts +2 -2
  284. package/lib/core/schema-stored/formatV1.d.ts.map +1 -1
  285. package/lib/core/schema-stored/formatV1.js +0 -5
  286. package/lib/core/schema-stored/formatV1.js.map +1 -1
  287. package/lib/core/schema-stored/formatV2.d.ts +11 -10
  288. package/lib/core/schema-stored/formatV2.d.ts.map +1 -1
  289. package/lib/core/schema-stored/formatV2.js +1 -6
  290. package/lib/core/schema-stored/formatV2.js.map +1 -1
  291. package/lib/core/schema-stored/index.d.ts.map +1 -1
  292. package/lib/core/schema-stored/index.js +2 -0
  293. package/lib/core/schema-stored/index.js.map +1 -1
  294. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  295. package/lib/core/schema-stored/schema.js.map +1 -1
  296. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  297. package/lib/core/tree/anchorSet.js.map +1 -1
  298. package/lib/core/tree/delta.d.ts +9 -7
  299. package/lib/core/tree/delta.d.ts.map +1 -1
  300. package/lib/core/tree/delta.js.map +1 -1
  301. package/lib/core/tree/deltaUtil.js +1 -1
  302. package/lib/core/tree/deltaUtil.js.map +1 -1
  303. package/lib/core/tree/visitDelta.js +2 -2
  304. package/lib/core/tree/visitDelta.js.map +1 -1
  305. package/lib/extensibleSchemaUnion.d.ts +72 -0
  306. package/lib/extensibleSchemaUnion.d.ts.map +1 -0
  307. package/lib/extensibleSchemaUnion.js +76 -0
  308. package/lib/extensibleSchemaUnion.js.map +1 -0
  309. package/lib/feature-libraries/changeAtomIdBTree.d.ts +4 -2
  310. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  311. package/lib/feature-libraries/changeAtomIdBTree.js +7 -0
  312. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
  313. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
  314. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  315. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +4 -5
  316. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  317. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  318. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  319. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  320. package/lib/feature-libraries/forest-summary/codec.d.ts +2 -1
  321. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  322. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  323. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  324. package/lib/feature-libraries/forest-summary/forestSummarizer.js +6 -3
  325. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  326. package/lib/feature-libraries/forest-summary/formatCommon.d.ts +1 -39
  327. package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
  328. package/lib/feature-libraries/forest-summary/formatCommon.js +2 -3
  329. package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
  330. package/lib/feature-libraries/forest-summary/formatV1.d.ts +1 -39
  331. package/lib/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
  332. package/lib/feature-libraries/forest-summary/formatV2.d.ts +1 -39
  333. package/lib/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
  334. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
  335. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  336. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
  337. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  338. package/lib/feature-libraries/index.d.ts +3 -3
  339. package/lib/feature-libraries/index.d.ts.map +1 -1
  340. package/lib/feature-libraries/index.js +3 -3
  341. package/lib/feature-libraries/index.js.map +1 -1
  342. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
  343. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
  344. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +41 -21
  345. package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
  346. package/lib/feature-libraries/modular-schema/genericFieldKind.js +1 -1
  347. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  348. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  349. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  350. package/lib/feature-libraries/modular-schema/index.js +1 -1
  351. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  352. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +1 -1
  353. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  354. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +10 -6
  355. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  356. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
  357. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  358. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +29 -6
  359. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  360. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  361. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +41 -30
  362. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  363. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
  364. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  365. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
  366. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  367. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
  368. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  369. package/lib/feature-libraries/optional-field/optionalField.js +1 -1
  370. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  371. package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  372. package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
  373. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
  374. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  375. package/lib/feature-libraries/schema-index/formatV2.d.ts +4 -4
  376. package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -1
  377. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  378. package/lib/feature-libraries/sequence-field/invert.js +2 -2
  379. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  380. package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -16
  381. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  382. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
  383. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  384. package/lib/index.d.ts +5 -5
  385. package/lib/index.d.ts.map +1 -1
  386. package/lib/index.js +4 -3
  387. package/lib/index.js.map +1 -1
  388. package/lib/legacy.d.ts +3 -0
  389. package/lib/packageVersion.d.ts +1 -1
  390. package/lib/packageVersion.js +1 -1
  391. package/lib/packageVersion.js.map +1 -1
  392. package/lib/shared-tree/independentView.d.ts +36 -13
  393. package/lib/shared-tree/independentView.d.ts.map +1 -1
  394. package/lib/shared-tree/independentView.js +1 -0
  395. package/lib/shared-tree/independentView.js.map +1 -1
  396. package/lib/shared-tree/index.d.ts +1 -1
  397. package/lib/shared-tree/index.d.ts.map +1 -1
  398. package/lib/shared-tree/index.js.map +1 -1
  399. package/lib/shared-tree/schematizingTreeView.d.ts +10 -0
  400. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  401. package/lib/shared-tree/schematizingTreeView.js +25 -9
  402. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  403. package/lib/shared-tree/sharedTree.d.ts +3 -3
  404. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  405. package/lib/shared-tree/sharedTree.js +10 -34
  406. package/lib/shared-tree/sharedTree.js.map +1 -1
  407. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
  408. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  409. package/lib/shared-tree/sharedTreeChangeCodecs.js +39 -5
  410. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  411. package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
  412. package/lib/shared-tree/tree.js +1 -1
  413. package/lib/shared-tree/tree.js.map +1 -1
  414. package/lib/shared-tree/treeCheckout.d.ts +20 -0
  415. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  416. package/lib/shared-tree/treeCheckout.js +39 -3
  417. package/lib/shared-tree/treeCheckout.js.map +1 -1
  418. package/lib/shared-tree-core/editManagerSummarizer.js +1 -1
  419. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  420. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  421. package/lib/shared-tree-core/messageCodecV1ToV4.js +2 -2
  422. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  423. package/lib/shared-tree-core/transaction.d.ts +14 -3
  424. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  425. package/lib/shared-tree-core/transaction.js +61 -18
  426. package/lib/shared-tree-core/transaction.js.map +1 -1
  427. package/lib/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
  428. package/lib/shared-tree-core/versionedSummarizer.js +1 -1
  429. package/lib/shared-tree-core/versionedSummarizer.js.map +1 -1
  430. package/lib/simple-tree/api/index.d.ts +1 -1
  431. package/lib/simple-tree/api/index.d.ts.map +1 -1
  432. package/lib/simple-tree/api/index.js +1 -1
  433. package/lib/simple-tree/api/index.js.map +1 -1
  434. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
  435. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  436. package/lib/simple-tree/api/schemaCreationUtilities.js +14 -0
  437. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  438. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  439. package/lib/simple-tree/api/transactionTypes.d.ts +10 -0
  440. package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
  441. package/lib/simple-tree/api/transactionTypes.js.map +1 -1
  442. package/lib/simple-tree/api/tree.d.ts +81 -6
  443. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  444. package/lib/simple-tree/api/tree.js.map +1 -1
  445. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  446. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  447. package/lib/simple-tree/index.d.ts +2 -2
  448. package/lib/simple-tree/index.d.ts.map +1 -1
  449. package/lib/simple-tree/index.js +2 -2
  450. package/lib/simple-tree/index.js.map +1 -1
  451. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  452. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  453. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
  454. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  455. package/lib/simple-tree/node-kinds/array/arrayNode.js +41 -0
  456. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  457. package/lib/simple-tree/node-kinds/array/index.d.ts +1 -1
  458. package/lib/simple-tree/node-kinds/array/index.d.ts.map +1 -1
  459. package/lib/simple-tree/node-kinds/array/index.js +1 -1
  460. package/lib/simple-tree/node-kinds/array/index.js.map +1 -1
  461. package/lib/simple-tree/node-kinds/index.d.ts +1 -1
  462. package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
  463. package/lib/simple-tree/node-kinds/index.js +1 -1
  464. package/lib/simple-tree/node-kinds/index.js.map +1 -1
  465. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  466. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  467. package/lib/tableSchema.d.ts +71 -48
  468. package/lib/tableSchema.d.ts.map +1 -1
  469. package/lib/tableSchema.js +201 -99
  470. package/lib/tableSchema.js.map +1 -1
  471. package/lib/text/textDomainFormatted.js +1 -1
  472. package/lib/text/textDomainFormatted.js.map +1 -1
  473. package/lib/util/bTreeUtils.d.ts +30 -4
  474. package/lib/util/bTreeUtils.d.ts.map +1 -1
  475. package/lib/util/bTreeUtils.js +27 -16
  476. package/lib/util/bTreeUtils.js.map +1 -1
  477. package/lib/util/brand.d.ts.map +1 -1
  478. package/lib/util/brand.js.map +1 -1
  479. package/lib/util/brandedMap.d.ts.map +1 -1
  480. package/lib/util/brandedMap.js.map +1 -1
  481. package/lib/util/breakable.d.ts.map +1 -1
  482. package/lib/util/breakable.js +2 -1
  483. package/lib/util/breakable.js.map +1 -1
  484. package/lib/util/index.d.ts +2 -2
  485. package/lib/util/index.d.ts.map +1 -1
  486. package/lib/util/index.js +2 -2
  487. package/lib/util/index.js.map +1 -1
  488. package/lib/util/opaque.d.ts.map +1 -1
  489. package/lib/util/opaque.js.map +1 -1
  490. package/lib/util/rangeMap.d.ts +3 -2
  491. package/lib/util/rangeMap.d.ts.map +1 -1
  492. package/lib/util/rangeMap.js +7 -1
  493. package/lib/util/rangeMap.js.map +1 -1
  494. package/lib/util/readSnapshotBlob.d.ts +1 -1
  495. package/lib/util/readSnapshotBlob.d.ts.map +1 -1
  496. package/lib/util/readSnapshotBlob.js.map +1 -1
  497. package/lib/util/typeCheck.d.ts.map +1 -1
  498. package/lib/util/typeCheck.js.map +1 -1
  499. package/lib/util/utils.d.ts +20 -16
  500. package/lib/util/utils.d.ts.map +1 -1
  501. package/lib/util/utils.js +44 -15
  502. package/lib/util/utils.js.map +1 -1
  503. package/package.json +23 -23
  504. package/src/codec/codec.ts +30 -11
  505. package/src/codec/index.ts +2 -0
  506. package/src/codec/versioned/codec.ts +9 -13
  507. package/src/core/index.ts +3 -1
  508. package/src/core/rebase/changeRebaser.ts +3 -2
  509. package/src/core/rebase/index.ts +3 -1
  510. package/src/core/rebase/types.ts +51 -13
  511. package/src/core/schema-stored/formatV1.ts +2 -4
  512. package/src/core/schema-stored/formatV2.ts +9 -7
  513. package/src/core/schema-stored/index.ts +2 -0
  514. package/src/core/schema-stored/schema.ts +4 -1
  515. package/src/core/tree/anchorSet.ts +1 -3
  516. package/src/core/tree/delta.ts +9 -7
  517. package/src/core/tree/deltaUtil.ts +1 -1
  518. package/src/core/tree/visitDelta.ts +2 -2
  519. package/src/extensibleSchemaUnion.ts +135 -0
  520. package/src/feature-libraries/changeAtomIdBTree.ts +17 -2
  521. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +5 -6
  522. package/src/feature-libraries/default-schema/index.ts +0 -1
  523. package/src/feature-libraries/forest-summary/codec.ts +7 -2
  524. package/src/feature-libraries/forest-summary/forestSummarizer.ts +15 -3
  525. package/src/feature-libraries/forest-summary/formatCommon.ts +2 -3
  526. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +4 -5
  527. package/src/feature-libraries/index.ts +3 -2
  528. package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +57 -31
  529. package/src/feature-libraries/modular-schema/genericFieldKind.ts +1 -1
  530. package/src/feature-libraries/modular-schema/index.ts +4 -1
  531. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +7 -6
  532. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +32 -7
  533. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +54 -33
  534. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +2 -4
  535. package/src/feature-libraries/optional-field/optionalField.ts +1 -1
  536. package/src/feature-libraries/optional-field/requiredField.ts +2 -4
  537. package/src/feature-libraries/schema-index/codec.ts +1 -1
  538. package/src/feature-libraries/schema-index/schemaSummarizer.ts +1 -1
  539. package/src/feature-libraries/sequence-field/invert.ts +2 -2
  540. package/src/feature-libraries/sequence-field/replaceRevisions.ts +17 -10
  541. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +1 -1
  542. package/src/index.ts +12 -7
  543. package/src/packageVersion.ts +1 -1
  544. package/src/shared-tree/independentView.ts +42 -6
  545. package/src/shared-tree/index.ts +2 -0
  546. package/src/shared-tree/schematizingTreeView.ts +63 -18
  547. package/src/shared-tree/sharedTree.ts +19 -37
  548. package/src/shared-tree/sharedTreeChangeCodecs.ts +43 -9
  549. package/src/shared-tree/tree.ts +1 -1
  550. package/src/shared-tree/treeCheckout.ts +50 -3
  551. package/src/shared-tree-core/editManagerSummarizer.ts +1 -1
  552. package/src/shared-tree-core/messageCodecV1ToV4.ts +4 -3
  553. package/src/shared-tree-core/transaction.ts +125 -23
  554. package/src/shared-tree-core/versionedSummarizer.ts +3 -2
  555. package/src/simple-tree/api/index.ts +1 -0
  556. package/src/simple-tree/api/schemaCreationUtilities.ts +35 -5
  557. package/src/simple-tree/api/simpleTreeIndex.ts +1 -1
  558. package/src/simple-tree/api/transactionTypes.ts +10 -0
  559. package/src/simple-tree/api/tree.ts +88 -6
  560. package/src/simple-tree/core/treeNodeSchema.ts +5 -8
  561. package/src/simple-tree/index.ts +3 -0
  562. package/src/simple-tree/leafNodeSchema.ts +3 -2
  563. package/src/simple-tree/node-kinds/array/arrayNode.ts +86 -0
  564. package/src/simple-tree/node-kinds/array/index.ts +2 -0
  565. package/src/simple-tree/node-kinds/index.ts +2 -0
  566. package/src/simple-tree/node-kinds/object/objectNode.ts +19 -18
  567. package/src/tableSchema.ts +280 -140
  568. package/src/text/textDomainFormatted.ts +1 -1
  569. package/src/util/bTreeUtils.ts +45 -26
  570. package/src/util/brand.ts +4 -12
  571. package/src/util/brandedMap.ts +2 -6
  572. package/src/util/breakable.ts +3 -2
  573. package/src/util/index.ts +9 -3
  574. package/src/util/opaque.ts +2 -6
  575. package/src/util/rangeMap.ts +11 -5
  576. package/src/util/readSnapshotBlob.ts +3 -3
  577. package/src/util/typeCheck.ts +11 -9
  578. package/src/util/utils.ts +57 -28
  579. package/biome.jsonc +0 -4
@@ -46,6 +46,8 @@ import {
46
46
  type DeltaDetachedNodeRename,
47
47
  mapTaggedChange,
48
48
  type RevisionReplacer,
49
+ comparePartialRevisions,
50
+ comparePartialChangesetLocalIds,
49
51
  } from "../../core/index.js";
50
52
  import {
51
53
  type IdAllocationState,
@@ -56,14 +58,17 @@ import {
56
58
  idAllocatorFromState,
57
59
  type RangeQueryResult,
58
60
  getOrCreate,
59
- newTupleBTree,
60
61
  mergeTupleBTrees,
61
62
  type TupleBTree,
62
63
  RangeMap,
63
64
  balancedReduce,
65
+ newTupleBTree,
66
+ compareStrings,
67
+ createTupleComparator,
64
68
  } from "../../util/index.js";
65
69
  import {
66
70
  getFromChangeAtomIdMap,
71
+ newChangeAtomIdBTree,
67
72
  setInChangeAtomIdMap,
68
73
  type ChangeAtomIdBTree,
69
74
  } from "../changeAtomIdBTree.js";
@@ -732,7 +737,7 @@ export class ModularChangeFamily
732
737
  revisionForInvert,
733
738
  );
734
739
 
735
- const invertedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
740
+ const invertedNodes = newChangeAtomIdBTree<NodeChangeset>();
736
741
  change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
737
742
  invertedNodes.set(
738
743
  [revision, localId],
@@ -897,12 +902,12 @@ export class ModularChangeFamily
897
902
  newChange: change,
898
903
  baseChange: over.change,
899
904
  baseFieldToContext: new Map(),
900
- baseToRebasedNodeId: newTupleBTree(),
905
+ baseToRebasedNodeId: newChangeAtomIdBTree(),
901
906
  rebasedFields: new Set(),
902
907
  rebasedNodeToParent: brand(change.nodeToParent.clone()),
903
908
  rebasedCrossFieldKeys: change.crossFieldKeys.clone(),
904
909
  nodeIdPairs: [],
905
- affectedBaseFields: newTupleBTree(),
910
+ affectedBaseFields: newFieldIdKeyBTree(),
906
911
  fieldsWithUnattachedChild: new Set(),
907
912
  };
908
913
 
@@ -1365,7 +1370,7 @@ export class ModularChangeFamily
1365
1370
  const change = nodeChangeFromId(crossFieldTable.newChange.nodeChanges, newId);
1366
1371
  const over = nodeChangeFromId(crossFieldTable.baseChange.nodeChanges, baseId);
1367
1372
 
1368
- const baseMap: FieldChangeMap = over?.fieldChanges ?? new Map();
1373
+ const baseMap: FieldChangeMap = over?.fieldChanges ?? new Map<FieldKey, FieldChange>();
1369
1374
 
1370
1375
  const fieldChanges =
1371
1376
  change.fieldChanges !== undefined && over.fieldChanges !== undefined
@@ -1522,8 +1527,11 @@ export class ModularChangeFamily
1522
1527
  }
1523
1528
 
1524
1529
  public getRevisions(change: ModularChangeset): Set<RevisionTag | undefined> {
1530
+ if (change.revisions === undefined || change.revisions.length === 0) {
1531
+ return new Set([undefined]);
1532
+ }
1525
1533
  const aggregated: Set<RevisionTag | undefined> = new Set();
1526
- for (const revInfo of change.revisions ?? [{ revision: undefined }]) {
1534
+ for (const revInfo of change.revisions) {
1527
1535
  aggregated.add(revInfo.revision);
1528
1536
  }
1529
1537
  return aggregated;
@@ -1551,7 +1559,7 @@ export class ModularChangeFamily
1551
1559
  nodeToParent: updatedNodeToParent,
1552
1560
 
1553
1561
  // We've updated all references to old node IDs, so we no longer need an alias table.
1554
- nodeAliases: newTupleBTree(),
1562
+ nodeAliases: newChangeAtomIdBTree(),
1555
1563
  crossFieldKeys: replaceCrossFieldKeyTableRevisions(
1556
1564
  change.crossFieldKeys,
1557
1565
  replacer,
@@ -1763,7 +1771,7 @@ function replaceCrossFieldKeyTableRevisions(
1763
1771
  const updated: CrossFieldKeyTable = newCrossFieldKeyTable();
1764
1772
  for (const entry of table.entries()) {
1765
1773
  const key = entry.start;
1766
- const updatedKey: CrossFieldKey = replacer.getUpdatedAtomId(key);
1774
+ const updatedKey: CrossFieldKey = replacer.getUpdatedAtomId(key, entry.length);
1767
1775
 
1768
1776
  const field = entry.value;
1769
1777
  const normalizedFieldId = normalizeFieldId(field, nodeAliases);
@@ -1788,7 +1796,7 @@ function replaceIdMapRevisions<T>(
1788
1796
  replacer: RevisionReplacer,
1789
1797
  valueMapper: (value: T) => T = (value) => value,
1790
1798
  ): ChangeAtomIdBTree<T> {
1791
- const updated: ChangeAtomIdBTree<T> = newTupleBTree();
1799
+ const updated = newChangeAtomIdBTree<T>();
1792
1800
  for (const [[revision, localId], value] of map.entries()) {
1793
1801
  const newAtom = replacer.getUpdatedAtomId({ revision, localId });
1794
1802
  updated.set([newAtom.revision, newAtom.localId], valueMapper(value));
@@ -1819,20 +1827,23 @@ function composeBuildsDestroysAndRefreshers(
1819
1827
  // care to support at this time.
1820
1828
  const allBuilds: ChangeAtomIdBTree<TreeChunk> = brand(
1821
1829
  mergeTupleBTrees(
1822
- change1.builds ?? newTupleBTree(),
1823
- change2.builds ?? newTupleBTree(),
1830
+ change1.builds ?? newChangeAtomIdBTree(),
1831
+ change2.builds ?? newChangeAtomIdBTree(),
1824
1832
  true,
1825
1833
  ),
1826
1834
  );
1827
1835
 
1828
1836
  const allDestroys: ChangeAtomIdBTree<number> = brand(
1829
- mergeTupleBTrees(change1.destroys ?? newTupleBTree(), change2.destroys ?? newTupleBTree()),
1837
+ mergeTupleBTrees(
1838
+ change1.destroys ?? newChangeAtomIdBTree(),
1839
+ change2.destroys ?? newChangeAtomIdBTree(),
1840
+ ),
1830
1841
  );
1831
1842
 
1832
1843
  const allRefreshers: ChangeAtomIdBTree<TreeChunk> = brand(
1833
1844
  mergeTupleBTrees(
1834
- change1.refreshers ?? newTupleBTree(),
1835
- change2.refreshers ?? newTupleBTree(),
1845
+ change1.refreshers ?? newChangeAtomIdBTree(),
1846
+ change2.refreshers ?? newChangeAtomIdBTree(),
1836
1847
  true,
1837
1848
  ),
1838
1849
  );
@@ -1942,7 +1953,7 @@ export function updateRefreshers(
1942
1953
  removedRoots: Iterable<DeltaDetachedNodeId>,
1943
1954
  requireRefreshers: boolean = true,
1944
1955
  ): ModularChangeset {
1945
- const refreshers: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
1956
+ const refreshers = newChangeAtomIdBTree<TreeChunk>();
1946
1957
  const chunkLengths: Map<RevisionTag | undefined, BTree<number, number>> = new Map();
1947
1958
 
1948
1959
  if (change.builds !== undefined) {
@@ -2103,7 +2114,7 @@ function intoDeltaImpl(
2103
2114
  return deltaFromNodeChange(nodeChange, nodeChanges, fieldKinds, global, rename);
2104
2115
  },
2105
2116
  );
2106
- if (fieldChanges !== undefined && fieldChanges.length > 0) {
2117
+ if (fieldChanges !== undefined && fieldChanges.marks.length > 0) {
2107
2118
  delta.set(field, fieldChanges);
2108
2119
  }
2109
2120
  for (const c of fieldGlobal ?? []) {
@@ -2235,7 +2246,7 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
2235
2246
  readonly fieldsWithUnattachedChild: Set<FieldChange>;
2236
2247
  }
2237
2248
 
2238
- type FieldIdKey = [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
2249
+ type FieldIdKey = readonly [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
2239
2250
 
2240
2251
  interface RebaseFieldContext {
2241
2252
  baseChange: FieldChange;
@@ -2261,13 +2272,13 @@ function newComposeTable(
2261
2272
  newChange,
2262
2273
  fieldToContext: new Map(),
2263
2274
  newFieldToBaseField: new Map(),
2264
- newToBaseNodeId: newTupleBTree(),
2275
+ newToBaseNodeId: newChangeAtomIdBTree(),
2265
2276
  composedNodes: new Set(),
2266
2277
  composedNodeToParent,
2267
2278
  pendingCompositions: {
2268
2279
  nodeIdsToCompose: [],
2269
- affectedBaseFields: newTupleBTree(),
2270
- affectedNewFields: newTupleBTree(),
2280
+ affectedBaseFields: newFieldIdKeyBTree(),
2281
+ affectedNewFields: newFieldIdKeyBTree(),
2271
2282
  },
2272
2283
  };
2273
2284
  }
@@ -2625,10 +2636,10 @@ function makeModularChangeset(props?: {
2625
2636
  }): ModularChangeset {
2626
2637
  const p = props ?? { maxId: -1 };
2627
2638
  const changeset: Mutable<ModularChangeset> = {
2628
- fieldChanges: p.fieldChanges ?? new Map(),
2629
- nodeChanges: p.nodeChanges ?? newTupleBTree(),
2630
- nodeToParent: p.nodeToParent ?? newTupleBTree(),
2631
- nodeAliases: p.nodeAliases ?? newTupleBTree(),
2639
+ fieldChanges: p.fieldChanges ?? new Map<FieldKey, FieldChange>(),
2640
+ nodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),
2641
+ nodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),
2642
+ nodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),
2632
2643
  crossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),
2633
2644
  };
2634
2645
 
@@ -2717,7 +2728,7 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2717
2728
  // This content will be added to a GlobalEditDescription whose lifetime exceeds the scope of this function.
2718
2729
  content.referenceAdded();
2719
2730
 
2720
- const builds: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
2731
+ const builds = newChangeAtomIdBTree<TreeChunk>();
2721
2732
  builds.set([revision, firstId], content);
2722
2733
 
2723
2734
  return {
@@ -2747,8 +2758,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2747
2758
  const modularChange = buildModularChangesetFromField({
2748
2759
  path: field,
2749
2760
  fieldChange: { fieldKind, change },
2750
- nodeChanges: newTupleBTree(),
2751
- nodeToParent: newTupleBTree(),
2761
+ nodeChanges: newChangeAtomIdBTree(),
2762
+ nodeToParent: newChangeAtomIdBTree(),
2752
2763
  crossFieldKeys: newCrossFieldKeyTable(),
2753
2764
  idAllocator: this.idAllocator,
2754
2765
  localCrossFieldKeys,
@@ -2779,8 +2790,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2779
2790
  fieldKind: change.fieldKind,
2780
2791
  change: change.change,
2781
2792
  },
2782
- nodeChanges: newTupleBTree(),
2783
- nodeToParent: newTupleBTree(),
2793
+ nodeChanges: newChangeAtomIdBTree(),
2794
+ nodeToParent: newChangeAtomIdBTree(),
2784
2795
  crossFieldKeys: newCrossFieldKeyTable(),
2785
2796
  idAllocator: this.idAllocator,
2786
2797
  localCrossFieldKeys: getChangeHandler(
@@ -2818,8 +2829,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2818
2829
  buildModularChangesetFromNode({
2819
2830
  path,
2820
2831
  nodeChange,
2821
- nodeChanges: newTupleBTree(),
2822
- nodeToParent: newTupleBTree(),
2832
+ nodeChanges: newChangeAtomIdBTree(),
2833
+ nodeToParent: newChangeAtomIdBTree(),
2823
2834
  crossFieldKeys: newCrossFieldKeyTable(),
2824
2835
  idAllocator: this.idAllocator,
2825
2836
  revision,
@@ -2839,8 +2850,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
2839
2850
  buildModularChangesetFromNode({
2840
2851
  path,
2841
2852
  nodeChange,
2842
- nodeChanges: newTupleBTree(),
2843
- nodeToParent: newTupleBTree(),
2853
+ nodeChanges: newChangeAtomIdBTree(),
2854
+ nodeToParent: newChangeAtomIdBTree(),
2844
2855
  crossFieldKeys: newCrossFieldKeyTable(),
2845
2856
  idAllocator: this.idAllocator,
2846
2857
  revision,
@@ -3197,3 +3208,13 @@ interface ModularChangesetContent {
3197
3208
  function areEqualFieldIds(a: FieldId, b: FieldId): boolean {
3198
3209
  return areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;
3199
3210
  }
3211
+
3212
+ function newFieldIdKeyBTree<V>(): TupleBTree<FieldIdKey, V> {
3213
+ return newTupleBTree(compareFieldIdKeys);
3214
+ }
3215
+
3216
+ const compareFieldIdKeys = createTupleComparator([
3217
+ comparePartialRevisions,
3218
+ comparePartialChangesetLocalIds,
3219
+ compareStrings<FieldKey>,
3220
+ ]);
@@ -11,7 +11,6 @@ import {
11
11
  JsonCompatibleReadOnlySchema,
12
12
  brandedNumberType,
13
13
  } from "../../util/index.js";
14
- import { EncodedFieldBatch } from "../chunked-forest/index.js";
15
14
 
16
15
  const noAdditionalProps: ObjectOptions = { additionalProperties: false };
17
16
 
@@ -115,10 +114,9 @@ export const EncodedBuilds = Type.Object(
115
114
  {
116
115
  builds: EncodedBuildsArray,
117
116
  /**
118
- * Fields indexed by the EncodedTreeIndexes above.
119
- * TODO: Strongly typing this here may result in redundant schema validation of this data.
117
+ * FieldBatch codec encoded data indexed by the EncodedTreeIndexes above.
120
118
  */
121
- trees: EncodedFieldBatch,
119
+ trees: JsonCompatibleReadOnlySchema,
122
120
  },
123
121
  noAdditionalProps,
124
122
  );
@@ -710,7 +710,7 @@ export function optionalFieldIntoDelta(
710
710
  }
711
711
 
712
712
  if (!markIsANoop) {
713
- delta.local = [mark];
713
+ delta.local = { marks: [mark] };
714
714
  }
715
715
 
716
716
  return delta;
@@ -36,10 +36,8 @@ export interface RequiredFieldEditor extends FieldEditor<OptionalChangeset> {
36
36
 
37
37
  export const requiredFieldEditor: RequiredFieldEditor = {
38
38
  ...optionalFieldEditor,
39
- set: (ids: {
40
- fill: ChangeAtomId;
41
- detach: ChangeAtomId;
42
- }): OptionalChangeset => optionalFieldEditor.set(false, ids),
39
+ set: (ids: { fill: ChangeAtomId; detach: ChangeAtomId }): OptionalChangeset =>
40
+ optionalFieldEditor.set(false, ids),
43
41
  };
44
42
 
45
43
  export const requiredFieldChangeHandler: FieldChangeHandler<
@@ -80,7 +80,7 @@ function encodeNodeSchema<TFormat>(
80
80
  repo: TreeStoredSchema,
81
81
  encodeValue: (schema: TreeNodeStoredSchema) => TFormat,
82
82
  ): Record<string, TFormat> {
83
- const nodeSchema: Record<string, TFormat> = Object.create(null);
83
+ const nodeSchema: Record<string, TFormat> = Object.create(null) as Record<string, TFormat>;
84
84
  for (const name of [...repo.nodeSchema.keys()].sort()) {
85
85
  const schema = repo.nodeSchema.get(name) ?? fail(0xb28 /* missing schema */);
86
86
  Object.defineProperty(nodeSchema, name, {
@@ -130,7 +130,7 @@ export class SchemaSummarizer
130
130
  0x3da /* there should not already be stored schema when loading stored schema */,
131
131
  );
132
132
 
133
- const schemaString = bufferToString(schemaBuffer, "utf-8");
133
+ const schemaString = bufferToString(schemaBuffer, "utf8");
134
134
  // Currently no Fluid handles are used, so just use JSON.parse.
135
135
  const decoded = this.codec.decode(JSON.parse(schemaString));
136
136
  this.schema.apply(decoded);
@@ -189,7 +189,7 @@ function invertMark(
189
189
  if (mark.finalEndpoint !== undefined) {
190
190
  moveIn.finalEndpoint = {
191
191
  localId: mark.finalEndpoint.localId,
192
- revision: mark.revision,
192
+ revision,
193
193
  };
194
194
  }
195
195
  let effect: MarkEffect = moveIn;
@@ -228,7 +228,7 @@ function invertMark(
228
228
  if (mark.finalEndpoint) {
229
229
  invertedMark.finalEndpoint = {
230
230
  localId: mark.finalEndpoint.localId,
231
- revision: mark.revision,
231
+ revision,
232
232
  };
233
233
  }
234
234
  return applyMovedChanges(invertedMark, mark.revision, crossFieldManager);
@@ -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,
@@ -301,6 +303,8 @@ export {
301
303
  eraseSchemaDetails,
302
304
  eraseSchemaDetailsSubclassable,
303
305
  type SchemaCompatibilitySnapshotsOptions,
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 { ExtensibleSchemaUnion } from "./extensibleSchemaUnion.js";
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/tree";
9
- export const pkgVersion = "2.81.0";
9
+ export const pkgVersion = "2.82.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";