@fluidframework/tree 2.13.0 → 2.21.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 (360) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/api-report/tree.alpha.api.md +22 -12
  3. package/api-report/tree.beta.api.md +9 -5
  4. package/api-report/tree.legacy.alpha.api.md +15 -5
  5. package/api-report/tree.legacy.public.api.md +9 -5
  6. package/api-report/tree.public.api.md +9 -5
  7. package/assertTagging.config.mjs +14 -0
  8. package/dist/alpha.d.ts +3 -0
  9. package/dist/core/index.d.ts +2 -2
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +6 -4
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/rebase/index.d.ts +2 -2
  14. package/dist/core/rebase/index.d.ts.map +1 -1
  15. package/dist/core/rebase/index.js +5 -1
  16. package/dist/core/rebase/index.js.map +1 -1
  17. package/dist/core/rebase/types.d.ts +5 -4
  18. package/dist/core/rebase/types.d.ts.map +1 -1
  19. package/dist/core/rebase/types.js +29 -1
  20. package/dist/core/rebase/types.js.map +1 -1
  21. package/dist/core/rebase/utils.d.ts +10 -0
  22. package/dist/core/rebase/utils.d.ts.map +1 -1
  23. package/dist/core/rebase/utils.js +22 -1
  24. package/dist/core/rebase/utils.js.map +1 -1
  25. package/dist/core/tree/delta.d.ts +21 -26
  26. package/dist/core/tree/delta.d.ts.map +1 -1
  27. package/dist/core/tree/delta.js.map +1 -1
  28. package/dist/core/tree/deltaUtil.d.ts +1 -3
  29. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  30. package/dist/core/tree/deltaUtil.js +2 -14
  31. package/dist/core/tree/deltaUtil.js.map +1 -1
  32. package/dist/core/tree/index.d.ts +1 -1
  33. package/dist/core/tree/index.d.ts.map +1 -1
  34. package/dist/core/tree/index.js +1 -3
  35. package/dist/core/tree/index.js.map +1 -1
  36. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  37. package/dist/core/tree/visitDelta.js +82 -80
  38. package/dist/core/tree/visitDelta.js.map +1 -1
  39. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  40. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  41. package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
  42. package/dist/feature-libraries/deltaUtils.js +13 -0
  43. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  44. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  45. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -6
  46. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  47. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +5 -5
  48. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  49. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +2 -9
  50. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  51. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -2
  52. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  53. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  54. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  55. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  56. package/dist/feature-libraries/modular-schema/index.d.ts +2 -2
  57. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  58. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  59. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
  60. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  61. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -8
  62. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  63. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +4 -4
  64. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  65. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +105 -199
  66. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  67. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +11 -20
  68. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  69. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +20 -0
  70. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  71. package/dist/feature-libraries/optional-field/optionalField.d.ts +3 -3
  72. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  73. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  74. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +1 -1
  75. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  76. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  77. package/dist/feature-libraries/sequence-field/rebase.js +4 -4
  78. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  79. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  80. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  81. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  82. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  83. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +2 -3
  84. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  85. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  86. package/dist/feature-libraries/sequence-field/utils.js +36 -4
  87. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  88. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  89. package/dist/feature-libraries/treeCursorUtils.js +5 -2
  90. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  91. package/dist/index.d.ts +26 -2
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +6 -2
  94. package/dist/index.js.map +1 -1
  95. package/dist/legacy.d.ts +3 -1
  96. package/dist/package.json +2 -1
  97. package/dist/packageVersion.d.ts +1 -1
  98. package/dist/packageVersion.js +1 -1
  99. package/dist/packageVersion.js.map +1 -1
  100. package/dist/shared-tree/index.d.ts +2 -1
  101. package/dist/shared-tree/index.d.ts.map +1 -1
  102. package/dist/shared-tree/index.js +7 -2
  103. package/dist/shared-tree/index.js.map +1 -1
  104. package/dist/shared-tree/publicContracts.d.ts +18 -0
  105. package/dist/shared-tree/publicContracts.d.ts.map +1 -0
  106. package/dist/shared-tree/publicContracts.js +24 -0
  107. package/dist/shared-tree/publicContracts.js.map +1 -0
  108. package/dist/shared-tree/sharedTree.d.ts +38 -18
  109. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  110. package/dist/shared-tree/sharedTree.js +41 -40
  111. package/dist/shared-tree/sharedTree.js.map +1 -1
  112. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  113. package/dist/shared-tree/treeCheckout.js +12 -8
  114. package/dist/shared-tree/treeCheckout.js.map +1 -1
  115. package/dist/simple-tree/api/schemaFactory.d.ts +2 -0
  116. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  117. package/dist/simple-tree/api/schemaFactory.js +2 -0
  118. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  119. package/dist/simple-tree/api/tree.d.ts +4 -0
  120. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  121. package/dist/simple-tree/api/tree.js.map +1 -1
  122. package/dist/simple-tree/api/treeNodeApi.js +1 -1
  123. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  124. package/dist/simple-tree/arrayNode.js +1 -1
  125. package/dist/simple-tree/arrayNode.js.map +1 -1
  126. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  127. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  128. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  129. package/dist/simple-tree/core/index.d.ts +1 -1
  130. package/dist/simple-tree/core/index.d.ts.map +1 -1
  131. package/dist/simple-tree/core/index.js +2 -2
  132. package/dist/simple-tree/core/index.js.map +1 -1
  133. package/dist/simple-tree/core/treeNodeKernel.d.ts +2 -6
  134. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  135. package/dist/simple-tree/core/treeNodeKernel.js +10 -13
  136. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  137. package/dist/simple-tree/proxies.js +1 -1
  138. package/dist/simple-tree/proxies.js.map +1 -1
  139. package/dist/simple-tree/toMapTree.js +1 -1
  140. package/dist/simple-tree/toMapTree.js.map +1 -1
  141. package/dist/util/bTreeUtils.d.ts +10 -0
  142. package/dist/util/bTreeUtils.d.ts.map +1 -0
  143. package/dist/util/bTreeUtils.js +52 -0
  144. package/dist/util/bTreeUtils.js.map +1 -0
  145. package/dist/util/idAllocator.d.ts +0 -2
  146. package/dist/util/idAllocator.d.ts.map +1 -1
  147. package/dist/util/idAllocator.js +0 -2
  148. package/dist/util/idAllocator.js.map +1 -1
  149. package/dist/util/index.d.ts +2 -1
  150. package/dist/util/index.d.ts.map +1 -1
  151. package/dist/util/index.js +5 -1
  152. package/dist/util/index.js.map +1 -1
  153. package/dist/util/rangeMap.d.ts +61 -30
  154. package/dist/util/rangeMap.d.ts.map +1 -1
  155. package/dist/util/rangeMap.js +189 -117
  156. package/dist/util/rangeMap.js.map +1 -1
  157. package/dist/util/utils.d.ts +4 -1
  158. package/dist/util/utils.d.ts.map +1 -1
  159. package/dist/util/utils.js +7 -1
  160. package/dist/util/utils.js.map +1 -1
  161. package/lib/alpha.d.ts +3 -0
  162. package/lib/core/index.d.ts +2 -2
  163. package/lib/core/index.d.ts.map +1 -1
  164. package/lib/core/index.js +2 -2
  165. package/lib/core/index.js.map +1 -1
  166. package/lib/core/rebase/index.d.ts +2 -2
  167. package/lib/core/rebase/index.d.ts.map +1 -1
  168. package/lib/core/rebase/index.js +2 -2
  169. package/lib/core/rebase/index.js.map +1 -1
  170. package/lib/core/rebase/types.d.ts +5 -4
  171. package/lib/core/rebase/types.d.ts.map +1 -1
  172. package/lib/core/rebase/types.js +26 -1
  173. package/lib/core/rebase/types.js.map +1 -1
  174. package/lib/core/rebase/utils.d.ts +10 -0
  175. package/lib/core/rebase/utils.d.ts.map +1 -1
  176. package/lib/core/rebase/utils.js +20 -0
  177. package/lib/core/rebase/utils.js.map +1 -1
  178. package/lib/core/tree/delta.d.ts +21 -26
  179. package/lib/core/tree/delta.d.ts.map +1 -1
  180. package/lib/core/tree/delta.js.map +1 -1
  181. package/lib/core/tree/deltaUtil.d.ts +1 -3
  182. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  183. package/lib/core/tree/deltaUtil.js +1 -12
  184. package/lib/core/tree/deltaUtil.js.map +1 -1
  185. package/lib/core/tree/index.d.ts +1 -1
  186. package/lib/core/tree/index.d.ts.map +1 -1
  187. package/lib/core/tree/index.js +1 -1
  188. package/lib/core/tree/index.js.map +1 -1
  189. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  190. package/lib/core/tree/visitDelta.js +82 -80
  191. package/lib/core/tree/visitDelta.js.map +1 -1
  192. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  193. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  194. package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
  195. package/lib/feature-libraries/deltaUtils.js +13 -0
  196. package/lib/feature-libraries/deltaUtils.js.map +1 -1
  197. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  198. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -6
  199. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  200. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +5 -5
  201. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  202. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +2 -9
  203. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  204. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -2
  205. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  206. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  207. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  208. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  209. package/lib/feature-libraries/modular-schema/index.d.ts +2 -2
  210. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  211. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  212. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
  213. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  214. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  215. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  216. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +4 -4
  217. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  218. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +74 -166
  219. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  220. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +11 -20
  221. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  222. package/lib/feature-libraries/modular-schema/modularChangeTypes.js +18 -1
  223. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  224. package/lib/feature-libraries/optional-field/optionalField.d.ts +3 -3
  225. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  226. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  227. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +1 -1
  228. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  229. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  230. package/lib/feature-libraries/sequence-field/rebase.js +4 -4
  231. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  232. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  233. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  234. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  235. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  236. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +2 -3
  237. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  238. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  239. package/lib/feature-libraries/sequence-field/utils.js +36 -4
  240. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  241. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  242. package/lib/feature-libraries/treeCursorUtils.js +6 -3
  243. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  244. package/lib/index.d.ts +26 -2
  245. package/lib/index.d.ts.map +1 -1
  246. package/lib/index.js +1 -1
  247. package/lib/index.js.map +1 -1
  248. package/lib/legacy.d.ts +3 -1
  249. package/lib/packageVersion.d.ts +1 -1
  250. package/lib/packageVersion.js +1 -1
  251. package/lib/packageVersion.js.map +1 -1
  252. package/lib/shared-tree/index.d.ts +2 -1
  253. package/lib/shared-tree/index.d.ts.map +1 -1
  254. package/lib/shared-tree/index.js +2 -1
  255. package/lib/shared-tree/index.js.map +1 -1
  256. package/lib/shared-tree/publicContracts.d.ts +18 -0
  257. package/lib/shared-tree/publicContracts.d.ts.map +1 -0
  258. package/lib/shared-tree/publicContracts.js +21 -0
  259. package/lib/shared-tree/publicContracts.js.map +1 -0
  260. package/lib/shared-tree/sharedTree.d.ts +38 -18
  261. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  262. package/lib/shared-tree/sharedTree.js +40 -39
  263. package/lib/shared-tree/sharedTree.js.map +1 -1
  264. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  265. package/lib/shared-tree/treeCheckout.js +13 -9
  266. package/lib/shared-tree/treeCheckout.js.map +1 -1
  267. package/lib/simple-tree/api/schemaFactory.d.ts +2 -0
  268. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  269. package/lib/simple-tree/api/schemaFactory.js +2 -0
  270. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  271. package/lib/simple-tree/api/tree.d.ts +4 -0
  272. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  273. package/lib/simple-tree/api/tree.js.map +1 -1
  274. package/lib/simple-tree/api/treeNodeApi.js +1 -1
  275. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  276. package/lib/simple-tree/arrayNode.js +1 -1
  277. package/lib/simple-tree/arrayNode.js.map +1 -1
  278. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  279. package/lib/simple-tree/core/getOrCreateNode.js +2 -2
  280. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  281. package/lib/simple-tree/core/index.d.ts +1 -1
  282. package/lib/simple-tree/core/index.d.ts.map +1 -1
  283. package/lib/simple-tree/core/index.js +1 -1
  284. package/lib/simple-tree/core/index.js.map +1 -1
  285. package/lib/simple-tree/core/treeNodeKernel.d.ts +2 -6
  286. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  287. package/lib/simple-tree/core/treeNodeKernel.js +9 -11
  288. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  289. package/lib/simple-tree/proxies.js +2 -2
  290. package/lib/simple-tree/proxies.js.map +1 -1
  291. package/lib/simple-tree/toMapTree.js +1 -1
  292. package/lib/simple-tree/toMapTree.js.map +1 -1
  293. package/lib/util/bTreeUtils.d.ts +10 -0
  294. package/lib/util/bTreeUtils.d.ts.map +1 -0
  295. package/lib/util/bTreeUtils.js +47 -0
  296. package/lib/util/bTreeUtils.js.map +1 -0
  297. package/lib/util/idAllocator.d.ts +0 -2
  298. package/lib/util/idAllocator.d.ts.map +1 -1
  299. package/lib/util/idAllocator.js +0 -2
  300. package/lib/util/idAllocator.js.map +1 -1
  301. package/lib/util/index.d.ts +2 -1
  302. package/lib/util/index.d.ts.map +1 -1
  303. package/lib/util/index.js +2 -1
  304. package/lib/util/index.js.map +1 -1
  305. package/lib/util/rangeMap.d.ts +61 -30
  306. package/lib/util/rangeMap.d.ts.map +1 -1
  307. package/lib/util/rangeMap.js +188 -117
  308. package/lib/util/rangeMap.js.map +1 -1
  309. package/lib/util/utils.d.ts +4 -1
  310. package/lib/util/utils.d.ts.map +1 -1
  311. package/lib/util/utils.js +7 -1
  312. package/lib/util/utils.js.map +1 -1
  313. package/package.json +25 -25
  314. package/src/core/index.ts +5 -2
  315. package/src/core/rebase/index.ts +5 -0
  316. package/src/core/rebase/types.ts +33 -5
  317. package/src/core/rebase/utils.ts +27 -0
  318. package/src/core/tree/delta.ts +21 -26
  319. package/src/core/tree/deltaUtil.ts +1 -16
  320. package/src/core/tree/index.ts +0 -2
  321. package/src/core/tree/visitDelta.ts +108 -97
  322. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -2
  323. package/src/feature-libraries/deltaUtils.ts +13 -0
  324. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -6
  325. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +12 -13
  326. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +21 -1
  327. package/src/feature-libraries/modular-schema/genericFieldKind.ts +2 -2
  328. package/src/feature-libraries/modular-schema/index.ts +2 -0
  329. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +12 -11
  330. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +138 -225
  331. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +40 -27
  332. package/src/feature-libraries/optional-field/optionalField.ts +3 -3
  333. package/src/feature-libraries/sequence-field/moveEffectTable.ts +1 -1
  334. package/src/feature-libraries/sequence-field/rebase.ts +9 -3
  335. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
  336. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
  337. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +3 -4
  338. package/src/feature-libraries/sequence-field/utils.ts +36 -4
  339. package/src/feature-libraries/treeCursorUtils.ts +10 -3
  340. package/src/index.ts +36 -6
  341. package/src/packageVersion.ts +1 -1
  342. package/src/shared-tree/index.ts +9 -1
  343. package/src/shared-tree/publicContracts.ts +24 -0
  344. package/src/shared-tree/sharedTree.ts +63 -46
  345. package/src/shared-tree/treeCheckout.ts +19 -12
  346. package/src/simple-tree/api/schemaFactory.ts +2 -0
  347. package/src/simple-tree/api/tree.ts +4 -0
  348. package/src/simple-tree/api/treeNodeApi.ts +1 -1
  349. package/src/simple-tree/arrayNode.ts +1 -1
  350. package/src/simple-tree/core/getOrCreateNode.ts +6 -2
  351. package/src/simple-tree/core/index.ts +1 -1
  352. package/src/simple-tree/core/treeNodeKernel.ts +16 -14
  353. package/src/simple-tree/proxies.ts +2 -2
  354. package/src/simple-tree/toMapTree.ts +1 -1
  355. package/src/util/bTreeUtils.ts +60 -0
  356. package/src/util/idAllocator.ts +0 -2
  357. package/src/util/index.ts +3 -0
  358. package/src/util/rangeMap.ts +237 -143
  359. package/src/util/utils.ts +10 -3
  360. package/lib/package.json +0 -3
@@ -2,14 +2,14 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { ChangesetLocalId, RevisionTag } from "../../core/index.js";
6
- import { RangeMap, type RangeQueryResult } from "../../util/index.js";
5
+ import type { ChangeAtomId, ChangeAtomIdRangeMap, ChangesetLocalId, RevisionTag } from "../../core/index.js";
6
+ import type { RangeQueryResult } from "../../util/index.js";
7
7
  import type { NodeId } from "./modularChangeTypes.js";
8
- export type CrossFieldMap<T> = Map<RevisionTag | undefined, RangeMap<T>>;
8
+ export type CrossFieldMap<T> = ChangeAtomIdRangeMap<T>;
9
9
  export type CrossFieldQuerySet = CrossFieldMap<boolean>;
10
10
  export declare function addCrossFieldQuery(set: CrossFieldQuerySet, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number): void;
11
11
  export declare function setInCrossFieldMap<T>(map: CrossFieldMap<T>, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number, value: T): void;
12
- export declare function getFirstFromCrossFieldMap<T>(map: CrossFieldMap<T>, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number): RangeQueryResult<T>;
12
+ export declare function getFirstFromCrossFieldMap<T>(map: CrossFieldMap<T>, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number): RangeQueryResult<ChangeAtomId, T>;
13
13
  /**
14
14
  */
15
15
  export declare enum CrossFieldTarget {
@@ -25,7 +25,7 @@ export interface CrossFieldManager<T = unknown> {
25
25
  * Returns the first data range associated with the key of `target`, `revision`, between `id` and `id + count`.
26
26
  * Calling this records a dependency for the current field on this key if `addDependency` is true.
27
27
  */
28
- get(target: CrossFieldTarget, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number, addDependency: boolean): RangeQueryResult<T>;
28
+ get(target: CrossFieldTarget, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number, addDependency: boolean): RangeQueryResult<ChangeAtomId, T>;
29
29
  /**
30
30
  * Sets the range of keys to `newValue`.
31
31
  * If `invalidateDependents` is true, all fields which took a dependency on this key will be considered invalidated
@@ -1 +1 @@
1
- {"version":3,"file":"crossFieldQueries.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/crossFieldQueries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAExD,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EACnC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,GACN,IAAI,CAON;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAC1C,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,gBAAgB,CAAC,CAAC,CAAC,CAGrB;AAED;GACG;AACH,oBAAY,gBAAgB;IAC3B,MAAM,IAAA;IACN,WAAW,IAAA;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC7C;;;OAGG;IACH,GAAG,CACF,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,GACpB,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEvB;;;;OAIG;IACH,GAAG,CACF,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,EACX,oBAAoB,EAAE,OAAO,GAC3B,IAAI,CAAC;IAER;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;OAGG;IACH,OAAO,CACN,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,IAAI,CAAC;CACR"}
1
+ {"version":3,"file":"crossFieldQueries.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/crossFieldQueries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAExD,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EACnC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,GACN,IAAI,CAEN;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAC1C,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAEnC;AAED;GACG;AACH,oBAAY,gBAAgB;IAC3B,MAAM,IAAA;IACN,WAAW,IAAA;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC7C;;;OAGG;IACH,GAAG,CACF,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,GACpB,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAErC;;;;OAIG;IACH,GAAG,CACF,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,EACX,oBAAoB,EAAE,OAAO,GAC3B,IAAI,CAAC;IAER;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;OAGG;IACH,OAAO,CACN,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACX,IAAI,CAAC;CACR"}
@@ -5,23 +5,16 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.CrossFieldTarget = exports.getFirstFromCrossFieldMap = exports.setInCrossFieldMap = exports.addCrossFieldQuery = void 0;
8
- const index_js_1 = require("../../util/index.js");
9
8
  function addCrossFieldQuery(set, revision, id, count) {
10
9
  setInCrossFieldMap(set, revision, id, count, true);
11
10
  }
12
11
  exports.addCrossFieldQuery = addCrossFieldQuery;
13
12
  function setInCrossFieldMap(map, revision, id, count, value) {
14
- let rangeMap = map.get(revision);
15
- if (rangeMap === undefined) {
16
- rangeMap = new index_js_1.RangeMap();
17
- map.set(revision, rangeMap);
18
- }
19
- rangeMap.set(id, count, value);
13
+ map.set({ revision, localId: id }, count, value);
20
14
  }
21
15
  exports.setInCrossFieldMap = setInCrossFieldMap;
22
16
  function getFirstFromCrossFieldMap(map, revision, id, count) {
23
- const rangeMap = map.has(revision) ? map.get(revision) : new index_js_1.RangeMap();
24
- return rangeMap.get(id, count);
17
+ return map.getFirst({ revision, localId: id }, count);
25
18
  }
26
19
  exports.getFirstFromCrossFieldMap = getFirstFromCrossFieldMap;
27
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"crossFieldQueries.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/crossFieldQueries.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kDAAsE;AAMtE,SAAgB,kBAAkB,CACjC,GAAuB,EACvB,QAAiC,EACjC,EAAoB,EACpB,KAAa;IAEb,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAPD,gDAOC;AAED,SAAgB,kBAAkB,CACjC,GAAqB,EACrB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,KAAQ;IAER,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAbD,gDAaC;AAED,SAAgB,yBAAyB,CACxC,GAAqB,EACrB,QAAiC,EACjC,EAAoB,EACpB,KAAa;IAEb,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC,CAAC,CAAC,IAAI,mBAAQ,EAAK,CAAC;IAC5F,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AARD,8DAQC;AAED;GACG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC3B,2DAAM,CAAA;IACN,qEAAW,CAAA;AACZ,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ChangesetLocalId, RevisionTag } from \"../../core/index.js\";\nimport { RangeMap, type RangeQueryResult } from \"../../util/index.js\";\nimport type { NodeId } from \"./modularChangeTypes.js\";\n\nexport type CrossFieldMap<T> = Map<RevisionTag | undefined, RangeMap<T>>;\nexport type CrossFieldQuerySet = CrossFieldMap<boolean>;\n\nexport function addCrossFieldQuery(\n\tset: CrossFieldQuerySet,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n): void {\n\tsetInCrossFieldMap(set, revision, id, count, true);\n}\n\nexport function setInCrossFieldMap<T>(\n\tmap: CrossFieldMap<T>,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n\tvalue: T,\n): void {\n\tlet rangeMap = map.get(revision);\n\tif (rangeMap === undefined) {\n\t\trangeMap = new RangeMap();\n\t\tmap.set(revision, rangeMap);\n\t}\n\trangeMap.set(id, count, value);\n}\n\nexport function getFirstFromCrossFieldMap<T>(\n\tmap: CrossFieldMap<T>,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n): RangeQueryResult<T> {\n\tconst rangeMap = map.has(revision) ? (map.get(revision) as RangeMap<T>) : new RangeMap<T>();\n\treturn rangeMap.get(id, count);\n}\n\n/**\n */\nexport enum CrossFieldTarget {\n\tSource,\n\tDestination,\n}\n\n/**\n * Used by {@link FieldChangeHandler} implementations for exchanging information across other fields\n * while rebasing, composing, or inverting a change.\n */\nexport interface CrossFieldManager<T = unknown> {\n\t/**\n\t * Returns the first data range associated with the key of `target`, `revision`, between `id` and `id + count`.\n\t * Calling this records a dependency for the current field on this key if `addDependency` is true.\n\t */\n\tget(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\taddDependency: boolean,\n\t): RangeQueryResult<T>;\n\n\t/**\n\t * Sets the range of keys to `newValue`.\n\t * If `invalidateDependents` is true, all fields which took a dependency on this key will be considered invalidated\n\t * and will be given a chance to address the new data in `amendCompose`, or a second pass of `rebase` or `invert` as appropriate.\n\t */\n\tset(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\tnewValue: T,\n\t\tinvalidateDependents: boolean,\n\t): void;\n\n\t/**\n\t * This must be called whenever a new node is moved into this field as part of the current rebase, compose, or invert.\n\t * Calling this for a node which was already in the field is tolerated.\n\t */\n\tonMoveIn(id: NodeId): void;\n\n\t/**\n\t * This must be called whenever a new cross field key is moved into this field as part of the current rebase or compose.\n\t * Calling this for a key which was already in the field is tolerated.\n\t */\n\tmoveKey(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t): void;\n}\n"]}
1
+ {"version":3,"file":"crossFieldQueries.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/crossFieldQueries.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,SAAgB,kBAAkB,CACjC,GAAuB,EACvB,QAAiC,EACjC,EAAoB,EACpB,KAAa;IAEb,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAPD,gDAOC;AAED,SAAgB,kBAAkB,CACjC,GAAqB,EACrB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,KAAQ;IAER,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AARD,gDAQC;AAED,SAAgB,yBAAyB,CACxC,GAAqB,EACrB,QAAiC,EACjC,EAAoB,EACpB,KAAa;IAEb,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAPD,8DAOC;AAED;GACG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC3B,2DAAM,CAAA;IACN,qEAAW,CAAA;AACZ,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tChangeAtomId,\n\tChangeAtomIdRangeMap,\n\tChangesetLocalId,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport type { RangeQueryResult } from \"../../util/index.js\";\nimport type { NodeId } from \"./modularChangeTypes.js\";\n\nexport type CrossFieldMap<T> = ChangeAtomIdRangeMap<T>;\nexport type CrossFieldQuerySet = CrossFieldMap<boolean>;\n\nexport function addCrossFieldQuery(\n\tset: CrossFieldQuerySet,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n): void {\n\tsetInCrossFieldMap(set, revision, id, count, true);\n}\n\nexport function setInCrossFieldMap<T>(\n\tmap: CrossFieldMap<T>,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n\tvalue: T,\n): void {\n\tmap.set({ revision, localId: id }, count, value);\n}\n\nexport function getFirstFromCrossFieldMap<T>(\n\tmap: CrossFieldMap<T>,\n\trevision: RevisionTag | undefined,\n\tid: ChangesetLocalId,\n\tcount: number,\n): RangeQueryResult<ChangeAtomId, T> {\n\treturn map.getFirst({ revision, localId: id }, count);\n}\n\n/**\n */\nexport enum CrossFieldTarget {\n\tSource,\n\tDestination,\n}\n\n/**\n * Used by {@link FieldChangeHandler} implementations for exchanging information across other fields\n * while rebasing, composing, or inverting a change.\n */\nexport interface CrossFieldManager<T = unknown> {\n\t/**\n\t * Returns the first data range associated with the key of `target`, `revision`, between `id` and `id + count`.\n\t * Calling this records a dependency for the current field on this key if `addDependency` is true.\n\t */\n\tget(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\taddDependency: boolean,\n\t): RangeQueryResult<ChangeAtomId, T>;\n\n\t/**\n\t * Sets the range of keys to `newValue`.\n\t * If `invalidateDependents` is true, all fields which took a dependency on this key will be considered invalidated\n\t * and will be given a chance to address the new data in `amendCompose`, or a second pass of `rebase` or `invert` as appropriate.\n\t */\n\tset(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\tnewValue: T,\n\t\tinvalidateDependents: boolean,\n\t): void;\n\n\t/**\n\t * This must be called whenever a new node is moved into this field as part of the current rebase, compose, or invert.\n\t * Calling this for a node which was already in the field is tolerated.\n\t */\n\tonMoveIn(id: NodeId): void;\n\n\t/**\n\t * This must be called whenever a new cross field key is moved into this field as part of the current rebase or compose.\n\t * Calling this for a key which was already in the field is tolerated.\n\t */\n\tmoveKey(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t): void;\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import type { ICodecFamily, IJsonCodec } from "../../codec/index.js";
6
- import type { ChangeEncodingContext, DeltaDetachedNodeId, DeltaFieldChanges, DeltaFieldMap, EncodedRevisionTag, RevisionMetadataSource, RevisionTag } from "../../core/index.js";
6
+ import type { ChangeEncodingContext, DeltaDetachedNodeChanges, DeltaDetachedNodeId, DeltaDetachedNodeRename, DeltaFieldChanges, DeltaFieldMap, EncodedRevisionTag, RevisionMetadataSource, RevisionTag } from "../../core/index.js";
7
7
  import type { IdAllocator, Invariant } from "../../util/index.js";
8
8
  import type { CrossFieldManager } from "./crossFieldQueries.js";
9
9
  import type { CrossFieldKeyRange, NodeId } from "./modularChangeTypes.js";
@@ -13,6 +13,23 @@ export type NestedChangesIndices = [
13
13
  number | undefined,
14
14
  number | undefined
15
15
  ][];
16
+ /**
17
+ * The return value of calling {@link FieldChangeHandler.intoDelta}.
18
+ */
19
+ export interface FieldChangeDelta {
20
+ /**
21
+ * {@inheritdoc DeltaFieldChanges}
22
+ */
23
+ readonly local?: DeltaFieldChanges;
24
+ /**
25
+ * {@inheritdoc DeltaRoot.global}
26
+ */
27
+ readonly global?: readonly DeltaDetachedNodeChanges[];
28
+ /**
29
+ * {@inheritdoc DeltaRoot.rename}
30
+ */
31
+ readonly rename?: readonly DeltaDetachedNodeRename[];
32
+ }
16
33
  /**
17
34
  * Functionality provided by a field kind which will be composed with other `FieldChangeHandler`s to
18
35
  * implement a unified ChangeFamily supporting documents with multiple field kinds.
@@ -22,7 +39,7 @@ export interface FieldChangeHandler<TChangeset, TEditor extends FieldEditor<TCha
22
39
  readonly rebaser: FieldChangeRebaser<TChangeset>;
23
40
  readonly codecsFactory: (revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>) => ICodecFamily<TChangeset, FieldChangeEncodingContext>;
24
41
  readonly editor: TEditor;
25
- intoDelta(change: TChangeset, deltaFromChild: ToDelta): DeltaFieldChanges;
42
+ intoDelta(change: TChangeset, deltaFromChild: ToDelta): FieldChangeDelta;
26
43
  /**
27
44
  * Returns the set of removed roots that should be in memory for the given change to be applied.
28
45
  * A removed root is relevant if any of the following is true:
@@ -1 +1 @@
1
- {"version":3,"file":"fieldChangeHandler.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/fieldChangeHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fieldChangeHandler.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/fieldChangeHandler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fieldChangeHandler.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/fieldChangeHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsJH;;;GAGG;AACH,SAAgB,+BAA+B,CAAa,IAI3D;IACA,OAAO,0BAA0B,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QACpF,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7D,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;KACzE,CAAC,CAAC;AACJ,CAAC;AAVD,0EAUC;AAED,SAAgB,0BAA0B,CAAa,IAItD;IACA,OAAO;QACN,GAAG,IAAI;QACP,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;QACzB,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC;AACH,CAAC;AAVD,gEAUC;AAmBD;GACG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IAC1B,6DAAQ,CAAA;IACR,6DAAQ,CAAA;AACT,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ICodecFamily, IJsonCodec } from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tDeltaDetachedNodeId,\n\tDeltaFieldChanges,\n\tDeltaFieldMap,\n\tEncodedRevisionTag,\n\tRevisionMetadataSource,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport type { IdAllocator, Invariant } from \"../../util/index.js\";\n\nimport type { CrossFieldManager } from \"./crossFieldQueries.js\";\nimport type { CrossFieldKeyRange, NodeId } from \"./modularChangeTypes.js\";\nimport type { EncodedNodeChangeset } from \"./modularChangeFormat.js\";\n\nexport type NestedChangesIndices = [\n\tNodeId,\n\tnumber | undefined /* inputIndex */,\n\tnumber | undefined /* outputIndex */,\n][];\n\n/**\n * Functionality provided by a field kind which will be composed with other `FieldChangeHandler`s to\n * implement a unified ChangeFamily supporting documents with multiple field kinds.\n */\nexport interface FieldChangeHandler<\n\tTChangeset,\n\tTEditor extends FieldEditor<TChangeset> = FieldEditor<TChangeset>,\n> {\n\t_typeCheck?: Invariant<TChangeset>;\n\treadonly rebaser: FieldChangeRebaser<TChangeset>;\n\treadonly codecsFactory: (\n\t\trevisionTagCodec: IJsonCodec<\n\t\t\tRevisionTag,\n\t\t\tEncodedRevisionTag,\n\t\t\tEncodedRevisionTag,\n\t\t\tChangeEncodingContext\n\t\t>,\n\t) => ICodecFamily<TChangeset, FieldChangeEncodingContext>;\n\treadonly editor: TEditor;\n\tintoDelta(change: TChangeset, deltaFromChild: ToDelta): DeltaFieldChanges;\n\t/**\n\t * Returns the set of removed roots that should be in memory for the given change to be applied.\n\t * A removed root is relevant if any of the following is true:\n\t * - It is being inserted\n\t * - It is being restored\n\t * - It is being edited\n\t * - The ID it is associated with is being changed\n\t *\n\t * Implementations are allowed to be conservative by returning more removed roots than strictly necessary\n\t * (though they should, for the sake of performance, try to avoid doing so).\n\t *\n\t * Implementations are not allowed to return IDs for non-root trees, even if they are removed.\n\t *\n\t * @param change - The change to be applied.\n\t * @param relevantRemovedRootsFromChild - Delegate for collecting relevant removed roots from child changes.\n\t */\n\treadonly relevantRemovedRoots: (\n\t\tchange: TChangeset,\n\t\trelevantRemovedRootsFromChild: RelevantRemovedRootsFromChild,\n\t) => Iterable<DeltaDetachedNodeId>;\n\n\t/**\n\t * Returns whether this change is empty, meaning that it represents no modifications to the field\n\t * and could be removed from the ModularChangeset tree without changing its behavior.\n\t */\n\tisEmpty(change: TChangeset): boolean;\n\n\t/**\n\t * @param change - The field change to get the child changes from.\n\t *\n\t * @returns The set of `NodeId`s that correspond to nested changes in the given `change`.\n\t * Each `NodeId` is associated with the following:\n\t * - index of the node in the field in the input context of the changeset (or `undefined` if the node is not\n\t * attached in the input context).\n\t * - index of the node in the field in the output context of the changeset (or `undefined` if the node is not\n\t * attached in the output context).\n\t * For all returned entries where the index is defined,\n\t * the indices are are ordered from smallest to largest (with no duplicates).\n\t * The returned array is owned by the caller.\n\t */\n\tgetNestedChanges(change: TChangeset): NestedChangesIndices;\n\n\t/**\n\t * @returns A list of all cross-field keys contained in the change.\n\t * This should not include cross-field keys in descendant fields.\n\t */\n\tgetCrossFieldKeys(change: TChangeset): CrossFieldKeyRange[];\n\n\tcreateEmpty(): TChangeset;\n}\n\nexport interface FieldChangeRebaser<TChangeset> {\n\t/**\n\t * Compose a collection of changesets into a single one.\n\t * For each node which has a change in both changesets, `composeChild` must be called\n\t * and the result used as the composite node change.\n\t * Calling `composeChild` when one of the changesets has no node change is unnecessary but tolerated.\n\t * See `ChangeRebaser` for more details.\n\t */\n\tcompose(\n\t\tchange1: TChangeset,\n\t\tchange2: TChangeset,\n\t\tcomposeChild: NodeChangeComposer,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\t/**\n\t * @returns the inverse of `changes`.\n\t * See `ChangeRebaser` for details.\n\t */\n\tinvert(\n\t\tchange: TChangeset,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\trevision: RevisionTag | undefined,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\t/**\n\t * Rebase `change` over `over`.\n\t * See `ChangeRebaser` for details.\n\t */\n\trebase(\n\t\tchange: TChangeset,\n\t\tover: TChangeset,\n\t\trebaseChild: NodeChangeRebaser,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t): TChangeset;\n\n\t/**\n\t * @returns `change` with any empty child node changesets removed.\n\t */\n\tprune(change: TChangeset, pruneChild: NodeChangePruner): TChangeset;\n\n\treplaceRevisions(\n\t\tchange: TChangeset,\n\t\toldRevisions: Set<RevisionTag | undefined>,\n\t\tnewRevisions: RevisionTag | undefined,\n\t): TChangeset;\n}\n\n/**\n * Helper for creating a {@link FieldChangeRebaser} which does not need access to revision tags.\n * This should only be used for fields where the child nodes cannot be edited.\n */\nexport function referenceFreeFieldChangeRebaser<TChangeset>(data: {\n\tcompose: (change1: TChangeset, change2: TChangeset) => TChangeset;\n\tinvert: (change: TChangeset) => TChangeset;\n\trebase: (change: TChangeset, over: TChangeset) => TChangeset;\n}): FieldChangeRebaser<TChangeset> {\n\treturn isolatedFieldChangeRebaser({\n\t\tcompose: (change1, change2, _composeChild, _genId) => data.compose(change1, change2),\n\t\tinvert: (change, _invertChild, _genId) => data.invert(change),\n\t\trebase: (change, over, _rebaseChild, _genId) => data.rebase(change, over),\n\t});\n}\n\nexport function isolatedFieldChangeRebaser<TChangeset>(data: {\n\tcompose: FieldChangeRebaser<TChangeset>[\"compose\"];\n\tinvert: FieldChangeRebaser<TChangeset>[\"invert\"];\n\trebase: FieldChangeRebaser<TChangeset>[\"rebase\"];\n}): FieldChangeRebaser<TChangeset> {\n\treturn {\n\t\t...data,\n\t\tprune: (change) => change,\n\t\treplaceRevisions: (change) => change,\n\t};\n}\n\nexport interface FieldEditor<TChangeset> {\n\t/**\n\t * Creates a changeset which represents the given `change` to the child at `childIndex` of this editor's field.\n\t */\n\tbuildChildChange(childIndex: number, change: NodeId): TChangeset;\n}\n\n/**\n * The `index` represents the index of the child node in the input context.\n * The `index` should be `undefined` iff the child node does not exist in the input context (e.g., an inserted node).\n */\nexport type ToDelta = (child: NodeId) => DeltaFieldMap;\n\n/**\n */\nexport type NodeChangeInverter = (change: NodeId) => NodeId;\n\n/**\n */\nexport enum NodeAttachState {\n\tAttached,\n\tDetached,\n}\n\n/**\n */\nexport type NodeChangeRebaser = (\n\tchange: NodeId | undefined,\n\tbaseChange: NodeId | undefined,\n\t/**\n\t * Whether the node is attached to this field in the output context of the base change.\n\t * Defaults to attached if undefined.\n\t */\n\tstate?: NodeAttachState,\n) => NodeId | undefined;\n\n/**\n */\nexport type NodeChangeComposer = (\n\tchange1: NodeId | undefined,\n\tchange2: NodeId | undefined,\n) => NodeId;\n\n/**\n */\nexport type NodeChangePruner = (change: NodeId) => NodeId | undefined;\n\n/**\n * A function that returns the set of removed roots that should be in memory for a given node changeset to be applied.\n */\nexport type RelevantRemovedRootsFromChild = (child: NodeId) => Iterable<DeltaDetachedNodeId>;\n\nexport interface RebaseRevisionMetadata extends RevisionMetadataSource {\n\treadonly getRevisionToRebase: () => RevisionTag | undefined;\n\treadonly getBaseRevisions: () => RevisionTag[];\n}\n\nexport interface FieldChangeEncodingContext {\n\treadonly baseContext: ChangeEncodingContext;\n\tencodeNode(nodeId: NodeId): EncodedNodeChangeset;\n\tdecodeNode(encodedNode: EncodedNodeChangeset): NodeId;\n}\n"]}
1
+ {"version":3,"file":"fieldChangeHandler.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/fieldChangeHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA0KH;;;GAGG;AACH,SAAgB,+BAA+B,CAAa,IAI3D;IACA,OAAO,0BAA0B,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QACpF,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7D,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;KACzE,CAAC,CAAC;AACJ,CAAC;AAVD,0EAUC;AAED,SAAgB,0BAA0B,CAAa,IAItD;IACA,OAAO;QACN,GAAG,IAAI;QACP,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;QACzB,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC;AACH,CAAC;AAVD,gEAUC;AAmBD;GACG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IAC1B,6DAAQ,CAAA;IACR,6DAAQ,CAAA;AACT,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ICodecFamily, IJsonCodec } from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tDeltaDetachedNodeChanges,\n\tDeltaDetachedNodeId,\n\tDeltaDetachedNodeRename,\n\tDeltaFieldChanges,\n\tDeltaFieldMap,\n\tEncodedRevisionTag,\n\tRevisionMetadataSource,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport type { IdAllocator, Invariant } from \"../../util/index.js\";\n\nimport type { CrossFieldManager } from \"./crossFieldQueries.js\";\nimport type { CrossFieldKeyRange, NodeId } from \"./modularChangeTypes.js\";\nimport type { EncodedNodeChangeset } from \"./modularChangeFormat.js\";\n\nexport type NestedChangesIndices = [\n\tNodeId,\n\tnumber | undefined /* inputIndex */,\n\tnumber | undefined /* outputIndex */,\n][];\n\n/**\n * The return value of calling {@link FieldChangeHandler.intoDelta}.\n */\nexport interface FieldChangeDelta {\n\t/**\n\t * {@inheritdoc DeltaFieldChanges}\n\t */\n\treadonly local?: DeltaFieldChanges;\n\t/**\n\t * {@inheritdoc DeltaRoot.global}\n\t */\n\treadonly global?: readonly DeltaDetachedNodeChanges[];\n\t/**\n\t * {@inheritdoc DeltaRoot.rename}\n\t */\n\treadonly rename?: readonly DeltaDetachedNodeRename[];\n}\n\n/**\n * Functionality provided by a field kind which will be composed with other `FieldChangeHandler`s to\n * implement a unified ChangeFamily supporting documents with multiple field kinds.\n */\nexport interface FieldChangeHandler<\n\tTChangeset,\n\tTEditor extends FieldEditor<TChangeset> = FieldEditor<TChangeset>,\n> {\n\t_typeCheck?: Invariant<TChangeset>;\n\treadonly rebaser: FieldChangeRebaser<TChangeset>;\n\treadonly codecsFactory: (\n\t\trevisionTagCodec: IJsonCodec<\n\t\t\tRevisionTag,\n\t\t\tEncodedRevisionTag,\n\t\t\tEncodedRevisionTag,\n\t\t\tChangeEncodingContext\n\t\t>,\n\t) => ICodecFamily<TChangeset, FieldChangeEncodingContext>;\n\treadonly editor: TEditor;\n\tintoDelta(change: TChangeset, deltaFromChild: ToDelta): FieldChangeDelta;\n\t/**\n\t * Returns the set of removed roots that should be in memory for the given change to be applied.\n\t * A removed root is relevant if any of the following is true:\n\t * - It is being inserted\n\t * - It is being restored\n\t * - It is being edited\n\t * - The ID it is associated with is being changed\n\t *\n\t * Implementations are allowed to be conservative by returning more removed roots than strictly necessary\n\t * (though they should, for the sake of performance, try to avoid doing so).\n\t *\n\t * Implementations are not allowed to return IDs for non-root trees, even if they are removed.\n\t *\n\t * @param change - The change to be applied.\n\t * @param relevantRemovedRootsFromChild - Delegate for collecting relevant removed roots from child changes.\n\t */\n\treadonly relevantRemovedRoots: (\n\t\tchange: TChangeset,\n\t\trelevantRemovedRootsFromChild: RelevantRemovedRootsFromChild,\n\t) => Iterable<DeltaDetachedNodeId>;\n\n\t/**\n\t * Returns whether this change is empty, meaning that it represents no modifications to the field\n\t * and could be removed from the ModularChangeset tree without changing its behavior.\n\t */\n\tisEmpty(change: TChangeset): boolean;\n\n\t/**\n\t * @param change - The field change to get the child changes from.\n\t *\n\t * @returns The set of `NodeId`s that correspond to nested changes in the given `change`.\n\t * Each `NodeId` is associated with the following:\n\t * - index of the node in the field in the input context of the changeset (or `undefined` if the node is not\n\t * attached in the input context).\n\t * - index of the node in the field in the output context of the changeset (or `undefined` if the node is not\n\t * attached in the output context).\n\t * For all returned entries where the index is defined,\n\t * the indices are are ordered from smallest to largest (with no duplicates).\n\t * The returned array is owned by the caller.\n\t */\n\tgetNestedChanges(change: TChangeset): NestedChangesIndices;\n\n\t/**\n\t * @returns A list of all cross-field keys contained in the change.\n\t * This should not include cross-field keys in descendant fields.\n\t */\n\tgetCrossFieldKeys(change: TChangeset): CrossFieldKeyRange[];\n\n\tcreateEmpty(): TChangeset;\n}\n\nexport interface FieldChangeRebaser<TChangeset> {\n\t/**\n\t * Compose a collection of changesets into a single one.\n\t * For each node which has a change in both changesets, `composeChild` must be called\n\t * and the result used as the composite node change.\n\t * Calling `composeChild` when one of the changesets has no node change is unnecessary but tolerated.\n\t * See `ChangeRebaser` for more details.\n\t */\n\tcompose(\n\t\tchange1: TChangeset,\n\t\tchange2: TChangeset,\n\t\tcomposeChild: NodeChangeComposer,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\t/**\n\t * @returns the inverse of `changes`.\n\t * See `ChangeRebaser` for details.\n\t */\n\tinvert(\n\t\tchange: TChangeset,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\trevision: RevisionTag | undefined,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\t/**\n\t * Rebase `change` over `over`.\n\t * See `ChangeRebaser` for details.\n\t */\n\trebase(\n\t\tchange: TChangeset,\n\t\tover: TChangeset,\n\t\trebaseChild: NodeChangeRebaser,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldManager: CrossFieldManager,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t): TChangeset;\n\n\t/**\n\t * @returns `change` with any empty child node changesets removed.\n\t */\n\tprune(change: TChangeset, pruneChild: NodeChangePruner): TChangeset;\n\n\treplaceRevisions(\n\t\tchange: TChangeset,\n\t\toldRevisions: Set<RevisionTag | undefined>,\n\t\tnewRevisions: RevisionTag | undefined,\n\t): TChangeset;\n}\n\n/**\n * Helper for creating a {@link FieldChangeRebaser} which does not need access to revision tags.\n * This should only be used for fields where the child nodes cannot be edited.\n */\nexport function referenceFreeFieldChangeRebaser<TChangeset>(data: {\n\tcompose: (change1: TChangeset, change2: TChangeset) => TChangeset;\n\tinvert: (change: TChangeset) => TChangeset;\n\trebase: (change: TChangeset, over: TChangeset) => TChangeset;\n}): FieldChangeRebaser<TChangeset> {\n\treturn isolatedFieldChangeRebaser({\n\t\tcompose: (change1, change2, _composeChild, _genId) => data.compose(change1, change2),\n\t\tinvert: (change, _invertChild, _genId) => data.invert(change),\n\t\trebase: (change, over, _rebaseChild, _genId) => data.rebase(change, over),\n\t});\n}\n\nexport function isolatedFieldChangeRebaser<TChangeset>(data: {\n\tcompose: FieldChangeRebaser<TChangeset>[\"compose\"];\n\tinvert: FieldChangeRebaser<TChangeset>[\"invert\"];\n\trebase: FieldChangeRebaser<TChangeset>[\"rebase\"];\n}): FieldChangeRebaser<TChangeset> {\n\treturn {\n\t\t...data,\n\t\tprune: (change) => change,\n\t\treplaceRevisions: (change) => change,\n\t};\n}\n\nexport interface FieldEditor<TChangeset> {\n\t/**\n\t * Creates a changeset which represents the given `change` to the child at `childIndex` of this editor's field.\n\t */\n\tbuildChildChange(childIndex: number, change: NodeId): TChangeset;\n}\n\n/**\n * The `index` represents the index of the child node in the input context.\n * The `index` should be `undefined` iff the child node does not exist in the input context (e.g., an inserted node).\n */\nexport type ToDelta = (child: NodeId) => DeltaFieldMap;\n\n/**\n */\nexport type NodeChangeInverter = (change: NodeId) => NodeId;\n\n/**\n */\nexport enum NodeAttachState {\n\tAttached,\n\tDetached,\n}\n\n/**\n */\nexport type NodeChangeRebaser = (\n\tchange: NodeId | undefined,\n\tbaseChange: NodeId | undefined,\n\t/**\n\t * Whether the node is attached to this field in the output context of the base change.\n\t * Defaults to attached if undefined.\n\t */\n\tstate?: NodeAttachState,\n) => NodeId | undefined;\n\n/**\n */\nexport type NodeChangeComposer = (\n\tchange1: NodeId | undefined,\n\tchange2: NodeId | undefined,\n) => NodeId;\n\n/**\n */\nexport type NodeChangePruner = (change: NodeId) => NodeId | undefined;\n\n/**\n * A function that returns the set of removed roots that should be in memory for a given node changeset to be applied.\n */\nexport type RelevantRemovedRootsFromChild = (child: NodeId) => Iterable<DeltaDetachedNodeId>;\n\nexport interface RebaseRevisionMetadata extends RevisionMetadataSource {\n\treadonly getRevisionToRebase: () => RevisionTag | undefined;\n\treadonly getBaseRevisions: () => RevisionTag[];\n}\n\nexport interface FieldChangeEncodingContext {\n\treadonly baseContext: ChangeEncodingContext;\n\tencodeNode(nodeId: NodeId): EncodedNodeChangeset;\n\tdecodeNode(encodedNode: EncodedNodeChangeset): NodeId;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"genericFieldKind.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/genericFieldKind.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIN,KAAK,sBAAsB,EAI3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,WAAW,EAAQ,MAAM,qBAAqB,CAAC;AAG7D,OAAO,KAAK,EACX,kBAAkB,EAElB,kBAAkB,EAKlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIxF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,gBAAgB,CAiCrE,CAAC;AA+FF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAM9B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAC3C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EACnC,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,sBAAsB,GACtC,OAAO,CAoBT"}
1
+ {"version":3,"file":"genericFieldKind.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/genericFieldKind.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGN,KAAK,sBAAsB,EAI3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,WAAW,EAAQ,MAAM,qBAAqB,CAAC;AAG7D,OAAO,KAAK,EAEX,kBAAkB,EAElB,kBAAkB,EAKlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIxF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,gBAAgB,CAiCrE,CAAC;AA+FF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAM9B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAC3C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EACnC,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,sBAAsB,GACtC,OAAO,CAoBT"}
@@ -1 +1 @@
1
- {"version":3,"file":"genericFieldKind.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/genericFieldKind.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype DeltaDetachedNodeId,\n\ttype DeltaFieldChanges,\n\ttype DeltaMark,\n\ttype RevisionMetadataSource,\n\tMultiplicity,\n\ttype RevisionTag,\n\treplaceAtomRevisions,\n} from \"../../core/index.js\";\nimport { type IdAllocator, fail } from \"../../util/index.js\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { CrossFieldManager } from \"./crossFieldQueries.js\";\nimport type {\n\tFieldChangeHandler,\n\tNestedChangesIndices,\n\tNodeChangeComposer,\n\tNodeChangePruner,\n\tNodeChangeRebaser,\n\tRelevantRemovedRootsFromChild,\n\tToDelta,\n} from \"./fieldChangeHandler.js\";\nimport { FieldKindWithEditor } from \"./fieldKindWithEditor.js\";\nimport { makeGenericChangeCodec } from \"./genericFieldKindCodecs.js\";\nimport { newGenericChangeset, type GenericChangeset } from \"./genericFieldKindTypes.js\";\nimport type { NodeId } from \"./modularChangeTypes.js\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\n\n/**\n * {@link FieldChangeHandler} implementation for {@link GenericChangeset}.\n */\nexport const genericChangeHandler: FieldChangeHandler<GenericChangeset> = {\n\trebaser: {\n\t\tcompose,\n\t\tinvert: (change: GenericChangeset): GenericChangeset => change,\n\t\trebase: rebaseGenericChange,\n\t\tprune: pruneGenericChange,\n\t\treplaceRevisions,\n\t},\n\tcodecsFactory: makeGenericChangeCodec,\n\teditor: {\n\t\tbuildChildChange(index, change): GenericChangeset {\n\t\t\treturn newGenericChangeset([[index, change]]);\n\t\t},\n\t},\n\tintoDelta: (change: GenericChangeset, deltaFromChild: ToDelta): DeltaFieldChanges => {\n\t\tlet nodeIndex = 0;\n\t\tconst markList: DeltaMark[] = [];\n\t\tfor (const [index, nodeChange] of change.entries()) {\n\t\t\tif (nodeIndex < index) {\n\t\t\t\tconst offset = index - nodeIndex;\n\t\t\t\tmarkList.push({ count: offset });\n\t\t\t\tnodeIndex = index;\n\t\t\t}\n\t\t\tmarkList.push({ count: 1, fields: deltaFromChild(nodeChange) });\n\t\t\tnodeIndex += 1;\n\t\t}\n\t\treturn { local: markList };\n\t},\n\trelevantRemovedRoots,\n\tisEmpty: (change: GenericChangeset): boolean => change.length === 0,\n\tgetNestedChanges,\n\tcreateEmpty: newGenericChangeset,\n\tgetCrossFieldKeys: (_change) => [],\n};\n\nfunction compose(\n\tchange1: GenericChangeset,\n\tchange2: GenericChangeset,\n\tcomposeChildren: NodeChangeComposer,\n): GenericChangeset {\n\tconst composed = change1.clone();\n\tfor (const [index, id2] of change2.entries()) {\n\t\tconst id1 = composed.get(index);\n\t\tconst idComposed = id1 !== undefined ? composeChildren(id1, id2) : id2;\n\t\tcomposed.set(index, idComposed);\n\t}\n\n\treturn composed;\n}\n\nfunction getNestedChanges(change: GenericChangeset): NestedChangesIndices {\n\t// For generic changeset, the indices in the input and output contexts are the same.\n\treturn change.toArray().map(([index, nodeChange]) => [nodeChange, index, index]);\n}\n\nfunction rebaseGenericChange(\n\tchange: GenericChangeset,\n\tover: GenericChangeset,\n\trebaseChild: NodeChangeRebaser,\n): GenericChangeset {\n\tconst rebased: GenericChangeset = new BTree();\n\tlet nextIndex = 0;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst newEntry = change.getPairOrNextHigher(nextIndex);\n\t\tconst baseEntry = over.getPairOrNextHigher(nextIndex);\n\n\t\tif (baseEntry === undefined && newEntry === undefined) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst newIndex = newEntry?.[0] ?? Number.POSITIVE_INFINITY;\n\t\tconst baseIndex = baseEntry?.[0] ?? Number.POSITIVE_INFINITY;\n\t\tlet newNodeChange: NodeId | undefined;\n\t\tlet baseNodeChange: NodeId | undefined;\n\t\tlet index: number;\n\t\tif (newIndex === baseIndex) {\n\t\t\tassert(\n\t\t\t\tnewEntry !== undefined && baseEntry !== undefined,\n\t\t\t\t0xa0d /* Entries should be defined */,\n\t\t\t);\n\t\t\tindex = newIndex;\n\t\t\tnewNodeChange = newEntry[1];\n\t\t\tbaseNodeChange = baseEntry[1];\n\t\t} else if (newIndex < baseIndex) {\n\t\t\tassert(newEntry !== undefined, 0xa0e /* Entry should be defined */);\n\t\t\tindex = newIndex;\n\t\t\tnewNodeChange = newEntry[1];\n\t\t} else {\n\t\t\tassert(baseEntry !== undefined, 0xa0f /* Entry should be defined */);\n\t\t\tindex = baseIndex;\n\t\t\tbaseNodeChange = baseEntry[1];\n\t\t}\n\n\t\tconst nodeChange = rebaseChild(newNodeChange, baseNodeChange);\n\t\tif (nodeChange !== undefined) {\n\t\t\trebased.set(index, nodeChange);\n\t\t}\n\n\t\tnextIndex = index + 1;\n\t}\n\n\treturn rebased;\n}\n\nfunction pruneGenericChange(\n\tchangeset: GenericChangeset,\n\tpruneChild: NodeChangePruner,\n): GenericChangeset {\n\tconst pruned: GenericChangeset = new BTree();\n\tfor (const [index, node] of changeset.entries()) {\n\t\tconst prunedNode = pruneChild(node);\n\t\tif (prunedNode !== undefined) {\n\t\t\tpruned.set(index, node);\n\t\t}\n\t}\n\treturn pruned;\n}\n\nfunction replaceRevisions(\n\tchangeset: GenericChangeset,\n\toldRevisions: Set<RevisionTag | undefined>,\n\tnewRevision: RevisionTag | undefined,\n): GenericChangeset {\n\treturn changeset.mapValues((node) => replaceAtomRevisions(node, oldRevisions, newRevision));\n}\n\n/**\n * {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.\n */\nexport const genericFieldKind: FieldKindWithEditor = new FieldKindWithEditor(\n\t\"ModularEditBuilder.Generic\",\n\tMultiplicity.Sequence,\n\tgenericChangeHandler,\n\t(types, other) => false,\n\tnew Set(),\n);\n\n/**\n * Converts a {@link GenericChangeset} into a field-kind-specific `TChange`.\n * @param changeset - The generic changeset to convert.\n * @param target - The {@link FieldChangeHandler} for the `FieldKind` that the returned change should target.\n * @param composeChild - A delegate to compose {@link NodeChangeset}s.\n * @returns An equivalent changeset as represented by the `target` field-kind.\n */\nexport function convertGenericChange<TChange>(\n\tchangeset: GenericChangeset,\n\ttarget: FieldChangeHandler<TChange>,\n\tcomposeChild: NodeChangeComposer,\n\tgenId: IdAllocator,\n\trevisionMetadata: RevisionMetadataSource,\n): TChange {\n\tconst perIndex: TChange[] = [];\n\tfor (const [index, nodeChange] of changeset.entries()) {\n\t\tperIndex.push(target.editor.buildChildChange(index, nodeChange));\n\t}\n\n\tif (perIndex.length === 0) {\n\t\treturn target.createEmpty();\n\t}\n\n\treturn perIndex.reduce((a, b) =>\n\t\ttarget.rebaser.compose(\n\t\t\ta,\n\t\t\tb,\n\t\t\tcomposeChild,\n\t\t\tgenId,\n\t\t\tinvalidCrossFieldManager,\n\t\t\trevisionMetadata,\n\t\t),\n\t);\n}\n\nconst invalidFunc = (): never => fail(\"Should not be called when converting generic changes\");\nconst invalidCrossFieldManager: CrossFieldManager = {\n\tset: invalidFunc,\n\tget: invalidFunc,\n\tonMoveIn: invalidFunc,\n\tmoveKey: invalidFunc,\n};\n\nfunction* relevantRemovedRoots(\n\tchange: GenericChangeset,\n\trelevantRemovedRootsFromChild: RelevantRemovedRootsFromChild,\n): Iterable<DeltaDetachedNodeId> {\n\tfor (const nodeChange of change.values()) {\n\t\tyield* relevantRemovedRootsFromChild(nodeChange);\n\t}\n}\n"]}
1
+ {"version":3,"file":"genericFieldKind.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/genericFieldKind.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype DeltaDetachedNodeId,\n\ttype DeltaMark,\n\ttype RevisionMetadataSource,\n\tMultiplicity,\n\ttype RevisionTag,\n\treplaceAtomRevisions,\n} from \"../../core/index.js\";\nimport { type IdAllocator, fail } from \"../../util/index.js\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { CrossFieldManager } from \"./crossFieldQueries.js\";\nimport type {\n\tFieldChangeDelta,\n\tFieldChangeHandler,\n\tNestedChangesIndices,\n\tNodeChangeComposer,\n\tNodeChangePruner,\n\tNodeChangeRebaser,\n\tRelevantRemovedRootsFromChild,\n\tToDelta,\n} from \"./fieldChangeHandler.js\";\nimport { FieldKindWithEditor } from \"./fieldKindWithEditor.js\";\nimport { makeGenericChangeCodec } from \"./genericFieldKindCodecs.js\";\nimport { newGenericChangeset, type GenericChangeset } from \"./genericFieldKindTypes.js\";\nimport type { NodeId } from \"./modularChangeTypes.js\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\n\n/**\n * {@link FieldChangeHandler} implementation for {@link GenericChangeset}.\n */\nexport const genericChangeHandler: FieldChangeHandler<GenericChangeset> = {\n\trebaser: {\n\t\tcompose,\n\t\tinvert: (change: GenericChangeset): GenericChangeset => change,\n\t\trebase: rebaseGenericChange,\n\t\tprune: pruneGenericChange,\n\t\treplaceRevisions,\n\t},\n\tcodecsFactory: makeGenericChangeCodec,\n\teditor: {\n\t\tbuildChildChange(index, change): GenericChangeset {\n\t\t\treturn newGenericChangeset([[index, change]]);\n\t\t},\n\t},\n\tintoDelta: (change: GenericChangeset, deltaFromChild: ToDelta): FieldChangeDelta => {\n\t\tlet nodeIndex = 0;\n\t\tconst markList: DeltaMark[] = [];\n\t\tfor (const [index, nodeChange] of change.entries()) {\n\t\t\tif (nodeIndex < index) {\n\t\t\t\tconst offset = index - nodeIndex;\n\t\t\t\tmarkList.push({ count: offset });\n\t\t\t\tnodeIndex = index;\n\t\t\t}\n\t\t\tmarkList.push({ count: 1, fields: deltaFromChild(nodeChange) });\n\t\t\tnodeIndex += 1;\n\t\t}\n\t\treturn { local: markList };\n\t},\n\trelevantRemovedRoots,\n\tisEmpty: (change: GenericChangeset): boolean => change.length === 0,\n\tgetNestedChanges,\n\tcreateEmpty: newGenericChangeset,\n\tgetCrossFieldKeys: (_change) => [],\n};\n\nfunction compose(\n\tchange1: GenericChangeset,\n\tchange2: GenericChangeset,\n\tcomposeChildren: NodeChangeComposer,\n): GenericChangeset {\n\tconst composed = change1.clone();\n\tfor (const [index, id2] of change2.entries()) {\n\t\tconst id1 = composed.get(index);\n\t\tconst idComposed = id1 !== undefined ? composeChildren(id1, id2) : id2;\n\t\tcomposed.set(index, idComposed);\n\t}\n\n\treturn composed;\n}\n\nfunction getNestedChanges(change: GenericChangeset): NestedChangesIndices {\n\t// For generic changeset, the indices in the input and output contexts are the same.\n\treturn change.toArray().map(([index, nodeChange]) => [nodeChange, index, index]);\n}\n\nfunction rebaseGenericChange(\n\tchange: GenericChangeset,\n\tover: GenericChangeset,\n\trebaseChild: NodeChangeRebaser,\n): GenericChangeset {\n\tconst rebased: GenericChangeset = new BTree();\n\tlet nextIndex = 0;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst newEntry = change.getPairOrNextHigher(nextIndex);\n\t\tconst baseEntry = over.getPairOrNextHigher(nextIndex);\n\n\t\tif (baseEntry === undefined && newEntry === undefined) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst newIndex = newEntry?.[0] ?? Number.POSITIVE_INFINITY;\n\t\tconst baseIndex = baseEntry?.[0] ?? Number.POSITIVE_INFINITY;\n\t\tlet newNodeChange: NodeId | undefined;\n\t\tlet baseNodeChange: NodeId | undefined;\n\t\tlet index: number;\n\t\tif (newIndex === baseIndex) {\n\t\t\tassert(\n\t\t\t\tnewEntry !== undefined && baseEntry !== undefined,\n\t\t\t\t0xa0d /* Entries should be defined */,\n\t\t\t);\n\t\t\tindex = newIndex;\n\t\t\tnewNodeChange = newEntry[1];\n\t\t\tbaseNodeChange = baseEntry[1];\n\t\t} else if (newIndex < baseIndex) {\n\t\t\tassert(newEntry !== undefined, 0xa0e /* Entry should be defined */);\n\t\t\tindex = newIndex;\n\t\t\tnewNodeChange = newEntry[1];\n\t\t} else {\n\t\t\tassert(baseEntry !== undefined, 0xa0f /* Entry should be defined */);\n\t\t\tindex = baseIndex;\n\t\t\tbaseNodeChange = baseEntry[1];\n\t\t}\n\n\t\tconst nodeChange = rebaseChild(newNodeChange, baseNodeChange);\n\t\tif (nodeChange !== undefined) {\n\t\t\trebased.set(index, nodeChange);\n\t\t}\n\n\t\tnextIndex = index + 1;\n\t}\n\n\treturn rebased;\n}\n\nfunction pruneGenericChange(\n\tchangeset: GenericChangeset,\n\tpruneChild: NodeChangePruner,\n): GenericChangeset {\n\tconst pruned: GenericChangeset = new BTree();\n\tfor (const [index, node] of changeset.entries()) {\n\t\tconst prunedNode = pruneChild(node);\n\t\tif (prunedNode !== undefined) {\n\t\t\tpruned.set(index, node);\n\t\t}\n\t}\n\treturn pruned;\n}\n\nfunction replaceRevisions(\n\tchangeset: GenericChangeset,\n\toldRevisions: Set<RevisionTag | undefined>,\n\tnewRevision: RevisionTag | undefined,\n): GenericChangeset {\n\treturn changeset.mapValues((node) => replaceAtomRevisions(node, oldRevisions, newRevision));\n}\n\n/**\n * {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.\n */\nexport const genericFieldKind: FieldKindWithEditor = new FieldKindWithEditor(\n\t\"ModularEditBuilder.Generic\",\n\tMultiplicity.Sequence,\n\tgenericChangeHandler,\n\t(types, other) => false,\n\tnew Set(),\n);\n\n/**\n * Converts a {@link GenericChangeset} into a field-kind-specific `TChange`.\n * @param changeset - The generic changeset to convert.\n * @param target - The {@link FieldChangeHandler} for the `FieldKind` that the returned change should target.\n * @param composeChild - A delegate to compose {@link NodeChangeset}s.\n * @returns An equivalent changeset as represented by the `target` field-kind.\n */\nexport function convertGenericChange<TChange>(\n\tchangeset: GenericChangeset,\n\ttarget: FieldChangeHandler<TChange>,\n\tcomposeChild: NodeChangeComposer,\n\tgenId: IdAllocator,\n\trevisionMetadata: RevisionMetadataSource,\n): TChange {\n\tconst perIndex: TChange[] = [];\n\tfor (const [index, nodeChange] of changeset.entries()) {\n\t\tperIndex.push(target.editor.buildChildChange(index, nodeChange));\n\t}\n\n\tif (perIndex.length === 0) {\n\t\treturn target.createEmpty();\n\t}\n\n\treturn perIndex.reduce((a, b) =>\n\t\ttarget.rebaser.compose(\n\t\t\ta,\n\t\t\tb,\n\t\t\tcomposeChild,\n\t\t\tgenId,\n\t\t\tinvalidCrossFieldManager,\n\t\t\trevisionMetadata,\n\t\t),\n\t);\n}\n\nconst invalidFunc = (): never => fail(\"Should not be called when converting generic changes\");\nconst invalidCrossFieldManager: CrossFieldManager = {\n\tset: invalidFunc,\n\tget: invalidFunc,\n\tonMoveIn: invalidFunc,\n\tmoveKey: invalidFunc,\n};\n\nfunction* relevantRemovedRoots(\n\tchange: GenericChangeset,\n\trelevantRemovedRootsFromChild: RelevantRemovedRootsFromChild,\n): Iterable<DeltaDetachedNodeId> {\n\tfor (const nodeChange of change.values()) {\n\t\tyield* relevantRemovedRootsFromChild(nodeChange);\n\t}\n}\n"]}
@@ -8,8 +8,8 @@ export { addCrossFieldQuery, type CrossFieldManager, type CrossFieldMap, type Cr
8
8
  export { ChangesetLocalIdSchema, EncodedChangeAtomId, EncodedRevisionInfo, EncodedModularChangeset, EncodedNodeChangeset, } from "./modularChangeFormat.js";
9
9
  export { FlexFieldKind, type FullSchemaPolicy } from "./fieldKind.js";
10
10
  export { FieldKindWithEditor } from "./fieldKindWithEditor.js";
11
- export { type FieldChangeHandler, type FieldChangeRebaser, type FieldEditor, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, referenceFreeFieldChangeRebaser, type RebaseRevisionMetadata, type RelevantRemovedRootsFromChild, type ToDelta, NodeAttachState, type FieldChangeEncodingContext, type NestedChangesIndices, } from "./fieldChangeHandler.js";
12
- export type { CrossFieldKeyRange, FieldChange, FieldChangeMap, FieldChangeset, HasFieldChanges, ModularChangeset, NodeExistsConstraint, NodeId, } from "./modularChangeTypes.js";
11
+ export { type FieldChangeHandler, type FieldChangeDelta, type FieldChangeRebaser, type FieldEditor, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, referenceFreeFieldChangeRebaser, type RebaseRevisionMetadata, type RelevantRemovedRootsFromChild, type ToDelta, NodeAttachState, type FieldChangeEncodingContext, type NestedChangesIndices, } from "./fieldChangeHandler.js";
12
+ export type { CrossFieldKey, CrossFieldKeyRange, FieldChange, FieldChangeMap, FieldChangeset, HasFieldChanges, ModularChangeset, NodeExistsConstraint, NodeId, } from "./modularChangeTypes.js";
13
13
  export { convertGenericChange, genericChangeHandler, genericFieldKind, } from "./genericFieldKind.js";
14
14
  export type { GenericChangeset } from "./genericFieldKindTypes.js";
15
15
  export { ModularChangeFamily, ModularEditBuilder, type EditDescription, type GlobalEditDescription, type FieldEditDescription, rebaseRevisionMetadataFromInfo, intoDelta, relevantRemovedRoots, updateRefreshers, } from "./modularChangeFamily.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,kCAAkC,EAClC,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,OAAO,EACZ,eAAe,EACf,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,GACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EACX,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,8BAA8B,EAC9B,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,GACR,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,kCAAkC,EAClC,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,OAAO,EACZ,eAAe,EACf,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,GACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EACX,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,8BAA8B,EAC9B,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,GACR,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAKyB;AAJxB,mHAAA,kBAAkB,OAAA;AAClB,mIAAA,kCAAkC,OAAA;AAClC,oHAAA,mBAAmB,OAAA;AACnB,mHAAA,kBAAkB,OAAA;AAEnB,mDAA6D;AAApD,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAClC,+DAOgC;AAN/B,0HAAA,kBAAkB,OAAA;AAIlB,wHAAA,gBAAgB,OAAA;AAChB,0HAAA,kBAAkB,OAAA;AAEnB,mEAMkC;AALjC,gIAAA,sBAAsB,OAAA;AACtB,6HAAA,mBAAmB,OAAA;AACnB,6HAAA,mBAAmB,OAAA;AACnB,iIAAA,uBAAuB,OAAA;AACvB,8HAAA,oBAAoB,OAAA;AAErB,+CAAsE;AAA7D,6GAAA,aAAa,OAAA;AACtB,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,iEAeiC;AAPhC,wIAAA,+BAA+B,OAAA;AAI/B,wHAAA,eAAe,OAAA;AAchB,6DAI+B;AAH9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,uHAAA,gBAAgB,OAAA;AAGjB,mEAUkC;AATjC,6HAAA,mBAAmB,OAAA;AACnB,4HAAA,kBAAkB,OAAA;AAIlB,wIAAA,8BAA8B,OAAA;AAC9B,mHAAA,SAAS,OAAA;AACT,8HAAA,oBAAoB,OAAA;AACpB,0HAAA,gBAAgB,OAAA;AAEjB,mEAAwE;AAA/D,sIAAA,4BAA4B,OAAA;AAKrC,uDAgB4B;AAf3B,kIAAA,8BAA8B,OAAA;AAC9B,kHAAA,cAAc,OAAA;AAUd,iHAAA,aAAa,OAAA;AACb,yHAAA,qBAAqB,OAAA;AACrB,wHAAA,oBAAoB,OAAA;AACpB,4GAAA,QAAQ,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tallowsRepoSuperset,\n\tallowsTreeSchemaIdentifierSuperset,\n\tallowsFieldSuperset,\n\tallowsTreeSuperset,\n} from \"./comparison.js\";\nexport { isNeverField, isNeverTree } from \"./isNeverTree.js\";\nexport {\n\taddCrossFieldQuery,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n\ttype CrossFieldQuerySet,\n\tCrossFieldTarget,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nexport {\n\tChangesetLocalIdSchema,\n\tEncodedChangeAtomId,\n\tEncodedRevisionInfo,\n\tEncodedModularChangeset,\n\tEncodedNodeChangeset,\n} from \"./modularChangeFormat.js\";\nexport { FlexFieldKind, type FullSchemaPolicy } from \"./fieldKind.js\";\nexport { FieldKindWithEditor } from \"./fieldKindWithEditor.js\";\nexport {\n\ttype FieldChangeHandler,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\treferenceFreeFieldChangeRebaser,\n\ttype RebaseRevisionMetadata,\n\ttype RelevantRemovedRootsFromChild,\n\ttype ToDelta,\n\tNodeAttachState,\n\ttype FieldChangeEncodingContext,\n\ttype NestedChangesIndices,\n} from \"./fieldChangeHandler.js\";\nexport type {\n\tCrossFieldKeyRange,\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tHasFieldChanges,\n\tModularChangeset,\n\tNodeExistsConstraint,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nexport {\n\tconvertGenericChange,\n\tgenericChangeHandler,\n\tgenericFieldKind,\n} from \"./genericFieldKind.js\";\nexport type { GenericChangeset } from \"./genericFieldKindTypes.js\";\nexport {\n\tModularChangeFamily,\n\tModularEditBuilder,\n\ttype EditDescription,\n\ttype GlobalEditDescription,\n\ttype FieldEditDescription,\n\trebaseRevisionMetadataFromInfo,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers,\n} from \"./modularChangeFamily.js\";\nexport { makeModularChangeCodecFamily } from \"./modularChangeCodecs.js\";\nexport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nexport {\n\tgetAllowedContentDiscrepancies,\n\tisRepoSuperset,\n\ttype AllowedTypeDiscrepancy,\n\ttype FieldKindDiscrepancy,\n\ttype ValueSchemaDiscrepancy,\n\ttype FieldDiscrepancy,\n\ttype NodeDiscrepancy,\n\ttype NodeKindDiscrepancy,\n\ttype NodeFieldsDiscrepancy,\n\ttype LinearExtension,\n\ttype Realizer,\n\tfieldRealizer,\n\tPosetComparisonResult,\n\tcomparePosetElements,\n\tposetLte,\n} from \"./discrepancies.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAKyB;AAJxB,mHAAA,kBAAkB,OAAA;AAClB,mIAAA,kCAAkC,OAAA;AAClC,oHAAA,mBAAmB,OAAA;AACnB,mHAAA,kBAAkB,OAAA;AAEnB,mDAA6D;AAApD,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAClC,+DAOgC;AAN/B,0HAAA,kBAAkB,OAAA;AAIlB,wHAAA,gBAAgB,OAAA;AAChB,0HAAA,kBAAkB,OAAA;AAEnB,mEAMkC;AALjC,gIAAA,sBAAsB,OAAA;AACtB,6HAAA,mBAAmB,OAAA;AACnB,6HAAA,mBAAmB,OAAA;AACnB,iIAAA,uBAAuB,OAAA;AACvB,8HAAA,oBAAoB,OAAA;AAErB,+CAAsE;AAA7D,6GAAA,aAAa,OAAA;AACtB,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,iEAgBiC;AAPhC,wIAAA,+BAA+B,OAAA;AAI/B,wHAAA,eAAe,OAAA;AAehB,6DAI+B;AAH9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,uHAAA,gBAAgB,OAAA;AAGjB,mEAUkC;AATjC,6HAAA,mBAAmB,OAAA;AACnB,4HAAA,kBAAkB,OAAA;AAIlB,wIAAA,8BAA8B,OAAA;AAC9B,mHAAA,SAAS,OAAA;AACT,8HAAA,oBAAoB,OAAA;AACpB,0HAAA,gBAAgB,OAAA;AAEjB,mEAAwE;AAA/D,sIAAA,4BAA4B,OAAA;AAKrC,uDAgB4B;AAf3B,kIAAA,8BAA8B,OAAA;AAC9B,kHAAA,cAAc,OAAA;AAUd,iHAAA,aAAa,OAAA;AACb,yHAAA,qBAAqB,OAAA;AACrB,wHAAA,oBAAoB,OAAA;AACpB,4GAAA,QAAQ,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tallowsRepoSuperset,\n\tallowsTreeSchemaIdentifierSuperset,\n\tallowsFieldSuperset,\n\tallowsTreeSuperset,\n} from \"./comparison.js\";\nexport { isNeverField, isNeverTree } from \"./isNeverTree.js\";\nexport {\n\taddCrossFieldQuery,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n\ttype CrossFieldQuerySet,\n\tCrossFieldTarget,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nexport {\n\tChangesetLocalIdSchema,\n\tEncodedChangeAtomId,\n\tEncodedRevisionInfo,\n\tEncodedModularChangeset,\n\tEncodedNodeChangeset,\n} from \"./modularChangeFormat.js\";\nexport { FlexFieldKind, type FullSchemaPolicy } from \"./fieldKind.js\";\nexport { FieldKindWithEditor } from \"./fieldKindWithEditor.js\";\nexport {\n\ttype FieldChangeHandler,\n\ttype FieldChangeDelta,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\treferenceFreeFieldChangeRebaser,\n\ttype RebaseRevisionMetadata,\n\ttype RelevantRemovedRootsFromChild,\n\ttype ToDelta,\n\tNodeAttachState,\n\ttype FieldChangeEncodingContext,\n\ttype NestedChangesIndices,\n} from \"./fieldChangeHandler.js\";\nexport type {\n\tCrossFieldKey,\n\tCrossFieldKeyRange,\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tHasFieldChanges,\n\tModularChangeset,\n\tNodeExistsConstraint,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nexport {\n\tconvertGenericChange,\n\tgenericChangeHandler,\n\tgenericFieldKind,\n} from \"./genericFieldKind.js\";\nexport type { GenericChangeset } from \"./genericFieldKindTypes.js\";\nexport {\n\tModularChangeFamily,\n\tModularEditBuilder,\n\ttype EditDescription,\n\ttype GlobalEditDescription,\n\ttype FieldEditDescription,\n\trebaseRevisionMetadataFromInfo,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers,\n} from \"./modularChangeFamily.js\";\nexport { makeModularChangeCodecFamily } from \"./modularChangeCodecs.js\";\nexport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nexport {\n\tgetAllowedContentDiscrepancies,\n\tisRepoSuperset,\n\ttype AllowedTypeDiscrepancy,\n\ttype FieldKindDiscrepancy,\n\ttype ValueSchemaDiscrepancy,\n\ttype FieldDiscrepancy,\n\ttype NodeDiscrepancy,\n\ttype NodeKindDiscrepancy,\n\ttype NodeFieldsDiscrepancy,\n\ttype LinearExtension,\n\ttype Realizer,\n\tfieldRealizer,\n\tPosetComparisonResult,\n\tcomparePosetElements,\n\tposetLte,\n} from \"./discrepancies.js\";\n"]}
@@ -7,6 +7,6 @@ import type { ChangeEncodingContext, EncodedRevisionTag, RevisionTag } from "../
7
7
  import { type FieldBatchCodec } from "../chunked-forest/index.js";
8
8
  import { TreeCompressionStrategy } from "../treeCompressionUtils.js";
9
9
  import type { FieldKindConfiguration } from "./fieldKindConfiguration.js";
10
- import type { ModularChangeset } from "./modularChangeTypes.js";
10
+ import { type ModularChangeset } from "./modularChangeTypes.js";
11
11
  export declare function makeModularChangeCodecFamily(fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration>, revisionTagCodec: IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>, fieldsCodec: FieldBatchCodec, { jsonValidator: validator }: ICodecOptions, chunkCompressionStrategy?: TreeCompressionStrategy): ICodecFamily<ModularChangeset, ChangeEncodingContext>;
12
12
  //# sourceMappingURL=modularChangeCodecs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeCodecs.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EAKf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,qBAAqB,EAErB,kBAAkB,EAKlB,WAAW,EACX,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EACN,KAAK,eAAe,EAIpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EACX,sBAAsB,EAEtB,MAAM,6BAA6B,CAAC;AAWrC,OAAO,KAAK,EAKX,gBAAgB,EAGhB,MAAM,yBAAyB,CAAC;AAIjC,wBAAgB,4BAA4B,CAC3C,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACpE,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,WAAW,EAAE,eAAe,EAC5B,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,aAAa,EAC3C,wBAAwB,GAAE,uBAA4D,GACpF,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAavD"}
1
+ {"version":3,"file":"modularChangeCodecs.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EAKf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,qBAAqB,EAErB,kBAAkB,EAKlB,WAAW,EACX,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EACN,KAAK,eAAe,EAIpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EACX,sBAAsB,EAEtB,MAAM,6BAA6B,CAAC;AAWrC,OAAO,EAMN,KAAK,gBAAgB,EAGrB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,4BAA4B,CAC3C,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACpE,gBAAgB,EAAE,UAAU,CAC3B,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,CACrB,EACD,WAAW,EAAE,eAAe,EAC5B,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,aAAa,EAC3C,wBAAwB,GAAE,uBAA4D,GACpF,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAavD"}
@@ -12,7 +12,7 @@ const index_js_3 = require("../chunked-forest/index.js");
12
12
  const treeCompressionUtils_js_1 = require("../treeCompressionUtils.js");
13
13
  const genericFieldKind_js_1 = require("./genericFieldKind.js");
14
14
  const modularChangeFormat_js_1 = require("./modularChangeFormat.js");
15
- const modularChangeFamily_js_1 = require("./modularChangeFamily.js");
15
+ const modularChangeTypes_js_1 = require("./modularChangeTypes.js");
16
16
  function makeModularChangeCodecFamily(fieldKindConfigurations, revisionTagCodec, fieldsCodec, { jsonValidator: validator }, chunkCompressionStrategy = treeCompressionUtils_js_1.TreeCompressionStrategy.Compressed) {
17
17
  return (0, index_js_1.makeCodecFamily)(Array.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => [
18
18
  version,
@@ -117,8 +117,8 @@ function makeModularChangeCodec(fieldKinds, revisionTagCodec, fieldsCodec, { jso
117
117
  };
118
118
  const fieldChangeset = codec.json.decode(field.change, fieldContext);
119
119
  const crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(fieldChangeset);
120
- for (const crossFieldKey of crossFieldKeys) {
121
- decoded.crossFieldKeys.set(crossFieldKey, fieldId);
120
+ for (const { key, count } of crossFieldKeys) {
121
+ decoded.crossFieldKeys.set(key, count, fieldId);
122
122
  }
123
123
  const fieldKey = (0, index_js_2.brand)(field.fieldKey);
124
124
  decodedFields.set(fieldKey, {
@@ -189,7 +189,7 @@ function makeModularChangeCodec(fieldKinds, revisionTagCodec, fieldsCodec, { jso
189
189
  idCompressor: context.idCompressor,
190
190
  });
191
191
  };
192
- const map = (0, modularChangeFamily_js_1.newTupleBTree)();
192
+ const map = (0, index_js_2.newTupleBTree)();
193
193
  encoded.builds.forEach((build) => {
194
194
  // EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple
195
195
  const revision = build[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);
@@ -257,10 +257,10 @@ function makeModularChangeCodec(fieldKinds, revisionTagCodec, fieldsCodec, { jso
257
257
  decode: (encodedChange, context) => {
258
258
  const decoded = {
259
259
  fieldChanges: new Map(),
260
- nodeChanges: (0, modularChangeFamily_js_1.newTupleBTree)(),
261
- nodeToParent: (0, modularChangeFamily_js_1.newTupleBTree)(),
262
- nodeAliases: (0, modularChangeFamily_js_1.newTupleBTree)(),
263
- crossFieldKeys: (0, modularChangeFamily_js_1.newCrossFieldKeyTable)(),
260
+ nodeChanges: (0, index_js_2.newTupleBTree)(),
261
+ nodeToParent: (0, index_js_2.newTupleBTree)(),
262
+ nodeAliases: (0, index_js_2.newTupleBTree)(),
263
+ crossFieldKeys: (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
264
264
  };
265
265
  decoded.fieldChanges = decodeFieldChangesFromJson(encodedChange.changes, undefined, decoded, context, (0, index_js_2.idAllocatorFromMaxId)(encodedChange.maxId));
266
266
  if (encodedChange.builds !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeCodecs.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecs.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\n\nimport {\n\ttype ICodecFamily,\n\ttype ICodecOptions,\n\ttype IJsonCodec,\n\ttype IMultiFormatCodec,\n\ttype SchemaValidationFunction,\n\tmakeCodecFamily,\n\twithSchemaValidation,\n} from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tChangesetLocalId,\n\tEncodedRevisionTag,\n\tFieldKey,\n\tFieldKindIdentifier,\n\tITreeCursorSynchronous,\n\tRevisionInfo,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport {\n\ttype IdAllocator,\n\ttype JsonCompatibleReadOnly,\n\ttype Mutable,\n\tbrand,\n\tfail,\n\tidAllocatorFromMaxId,\n} from \"../../util/index.js\";\nimport {\n\ttype FieldBatchCodec,\n\ttype TreeChunk,\n\tchunkFieldSingle,\n\tdefaultChunkPolicy,\n} from \"../chunked-forest/index.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\n\nimport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\ttype EncodedBuilds,\n\ttype EncodedBuildsArray,\n\ttype EncodedFieldChange,\n\ttype EncodedFieldChangeMap,\n\tEncodedModularChangeset,\n\ttype EncodedNodeChangeset,\n\ttype EncodedRevisionInfo,\n} from \"./modularChangeFormat.js\";\nimport type {\n\tChangeAtomIdBTree,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tFieldId,\n\tModularChangeset,\n\tNodeChangeset,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nimport type { FieldChangeEncodingContext, FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport { newCrossFieldKeyTable, newTupleBTree } from \"./modularChangeFamily.js\";\n\nexport function makeModularChangeCodecFamily(\n\tfieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\t{ jsonValidator: validator }: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ICodecFamily<ModularChangeset, ChangeEncodingContext> {\n\treturn makeCodecFamily(\n\t\tArray.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => [\n\t\t\tversion,\n\t\t\tmakeModularChangeCodec(\n\t\t\t\tfieldKinds,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\t{ jsonValidator: validator },\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\t\t]),\n\t);\n}\n\ntype ModularChangeCodec = IJsonCodec<\n\tModularChangeset,\n\tEncodedModularChangeset,\n\tEncodedModularChangeset,\n\tChangeEncodingContext\n>;\n\ntype FieldCodec = IMultiFormatCodec<\n\tFieldChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext\n>;\n\nfunction makeModularChangeCodec(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\t{ jsonValidator: validator }: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ModularChangeCodec {\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tconst getMapEntry = ({ kind, formatVersion }: FieldKindConfigurationEntry) => {\n\t\tconst codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);\n\t\treturn {\n\t\t\tcodec,\n\t\t\tcompiledSchema: codec.json.encodedSchema\n\t\t\t\t? validator.compile(codec.json.encodedSchema)\n\t\t\t\t: undefined,\n\t\t};\n\t};\n\n\t/**\n\t * The codec version for the generic field kind.\n\t */\n\tconst genericFieldKindFormatVersion = 1;\n\tconst fieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t> = new Map([\n\t\t[\n\t\t\tgenericFieldKind.identifier,\n\t\t\tgetMapEntry({ kind: genericFieldKind, formatVersion: genericFieldKindFormatVersion }),\n\t\t],\n\t]);\n\n\tfieldKinds.forEach((entry, identifier) => {\n\t\tfieldChangesetCodecs.set(identifier, getMapEntry(entry));\n\t});\n\n\tconst getFieldChangesetCodec = (\n\t\tfieldKind: FieldKindIdentifier,\n\t): {\n\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\tcodec: FieldCodec;\n\t} => {\n\t\tconst entry = fieldChangesetCodecs.get(fieldKind);\n\t\tassert(entry !== undefined, 0x5ea /* Tried to encode unsupported fieldKind */);\n\t\treturn entry;\n\t};\n\n\tfunction encodeFieldChangesForJson(\n\t\tchange: FieldChangeMap,\n\t\tcontext: ChangeEncodingContext,\n\t\tnodeChanges: ChangeAtomIdBTree<NodeChangeset>,\n\t): EncodedFieldChangeMap {\n\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\tbaseContext: context,\n\n\t\t\tencodeNode: (nodeId: NodeId): EncodedNodeChangeset => {\n\t\t\t\tconst node = nodeChanges.get([nodeId.revision, nodeId.localId]);\n\t\t\t\tassert(node !== undefined, 0x92e /* Unknown node ID */);\n\t\t\t\treturn encodeNodeChangesForJson(node, fieldContext);\n\t\t\t},\n\n\t\t\tdecodeNode: () => fail(\"Should not decode nodes during field encoding\"),\n\t\t};\n\n\t\treturn encodeFieldChangesForJsonI(change, fieldContext);\n\t}\n\n\tfunction encodeFieldChangesForJsonI(\n\t\tchange: FieldChangeMap,\n\t\tcontext: FieldChangeEncodingContext,\n\t): EncodedFieldChangeMap {\n\t\tconst encodedFields: EncodedFieldChangeMap = [];\n\n\t\tfor (const [field, fieldChange] of change) {\n\t\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(fieldChange.fieldKind);\n\t\t\tconst encodedChange = codec.json.encode(fieldChange.change, context);\n\t\t\tif (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {\n\t\t\t\tfail(\"Encoded change didn't pass schema validation.\");\n\t\t\t}\n\n\t\t\tconst fieldKey: FieldKey = field;\n\t\t\tconst encodedField: EncodedFieldChange = {\n\t\t\t\tfieldKey,\n\t\t\t\tfieldKind: fieldChange.fieldKind,\n\t\t\t\tchange: encodedChange,\n\t\t\t};\n\n\t\t\tencodedFields.push(encodedField);\n\t\t}\n\n\t\treturn encodedFields;\n\t}\n\n\tfunction encodeNodeChangesForJson(\n\t\tchange: NodeChangeset,\n\t\tcontext: FieldChangeEncodingContext,\n\t): EncodedNodeChangeset {\n\t\tconst encodedChange: EncodedNodeChangeset = {};\n\t\tconst { fieldChanges, nodeExistsConstraint } = change;\n\n\t\tif (fieldChanges !== undefined) {\n\t\t\tencodedChange.fieldChanges = encodeFieldChangesForJsonI(fieldChanges, context);\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tencodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\treturn encodedChange;\n\t}\n\n\tfunction decodeFieldChangesFromJson(\n\t\tencodedChange: EncodedFieldChangeMap,\n\t\tparentId: NodeId | undefined,\n\t\tdecoded: ModularChangeset,\n\t\tcontext: ChangeEncodingContext,\n\t\tidAllocator: IdAllocator,\n\t): FieldChangeMap {\n\t\tconst decodedFields: FieldChangeMap = new Map();\n\t\tfor (const field of encodedChange) {\n\t\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(field.fieldKind);\n\t\t\tif (compiledSchema !== undefined && !compiledSchema.check(field.change)) {\n\t\t\t\tfail(\"Encoded change didn't pass schema validation.\");\n\t\t\t}\n\n\t\t\tconst fieldId: FieldId = {\n\t\t\t\tnodeId: parentId,\n\t\t\t\tfield: field.fieldKey,\n\t\t\t};\n\n\t\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\t\tbaseContext: context,\n\n\t\t\t\tencodeNode: () => fail(\"Should not encode nodes during field decoding\"),\n\n\t\t\t\tdecodeNode: (encodedNode: EncodedNodeChangeset): NodeId => {\n\t\t\t\t\tconst nodeId: NodeId = {\n\t\t\t\t\t\trevision: context.revision,\n\t\t\t\t\t\tlocalId: brand(idAllocator.allocate()),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst node = decodeNodeChangesetFromJson(\n\t\t\t\t\t\tencodedNode,\n\t\t\t\t\t\tnodeId,\n\t\t\t\t\t\tdecoded,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tidAllocator,\n\t\t\t\t\t);\n\n\t\t\t\t\tdecoded.nodeChanges.set([nodeId.revision, nodeId.localId], node);\n\t\t\t\t\tdecoded.nodeToParent.set([nodeId.revision, nodeId.localId], fieldId);\n\t\t\t\t\treturn nodeId;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst fieldChangeset = codec.json.decode(field.change, fieldContext);\n\n\t\t\tconst crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(\n\t\t\t\tfieldChangeset,\n\t\t\t);\n\n\t\t\tfor (const crossFieldKey of crossFieldKeys) {\n\t\t\t\tdecoded.crossFieldKeys.set(crossFieldKey, fieldId);\n\t\t\t}\n\n\t\t\tconst fieldKey: FieldKey = brand<FieldKey>(field.fieldKey);\n\n\t\t\tdecodedFields.set(fieldKey, {\n\t\t\t\tfieldKind: field.fieldKind,\n\t\t\t\tchange: brand(fieldChangeset),\n\t\t\t});\n\t\t}\n\n\t\treturn decodedFields;\n\t}\n\n\tfunction decodeNodeChangesetFromJson(\n\t\tencodedChange: EncodedNodeChangeset,\n\t\tid: NodeId,\n\t\tdecoded: ModularChangeset,\n\t\tcontext: ChangeEncodingContext,\n\t\tidAllocator: IdAllocator,\n\t): NodeChangeset {\n\t\tconst decodedChange: NodeChangeset = {};\n\t\tconst { fieldChanges, nodeExistsConstraint } = encodedChange;\n\n\t\tif (fieldChanges !== undefined) {\n\t\t\tdecodedChange.fieldChanges = decodeFieldChangesFromJson(\n\t\t\t\tfieldChanges,\n\t\t\t\tid,\n\t\t\t\tdecoded,\n\t\t\t\tcontext,\n\t\t\t\tidAllocator,\n\t\t\t);\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tdecodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\treturn decodedChange;\n\t}\n\n\tfunction encodeDetachedNodes(\n\t\tdetachedNodes: ChangeAtomIdBTree<TreeChunk> | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): EncodedBuilds | undefined {\n\t\tif (detachedNodes === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst treesToEncode: ITreeCursorSynchronous[] = [];\n\t\tconst buildsArray: EncodedBuildsArray = [];\n\n\t\tlet buildsForRevision:\n\t\t\t| [[ChangesetLocalId, number][], EncodedRevisionTag]\n\t\t\t| [[ChangesetLocalId, number][]]\n\t\t\t| undefined;\n\n\t\tfor (const [[revision, id], chunk] of detachedNodes.entries()) {\n\t\t\tconst encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);\n\n\t\t\tif (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {\n\t\t\t\tif (buildsForRevision !== undefined) {\n\t\t\t\t\tbuildsArray.push(buildsForRevision);\n\t\t\t\t}\n\n\t\t\t\tbuildsForRevision = encodedRevision !== undefined ? [[], encodedRevision] : [[]];\n\t\t\t}\n\n\t\t\ttreesToEncode.push(chunk.cursor());\n\t\t\tconst treeIndexInBatch = treesToEncode.length - 1;\n\t\t\tbuildsForRevision?.[0].push([id, treeIndexInBatch]);\n\t\t}\n\n\t\tif (buildsForRevision !== undefined) {\n\t\t\tbuildsArray.push(buildsForRevision);\n\t\t}\n\n\t\treturn buildsArray.length === 0\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tbuilds: buildsArray,\n\t\t\t\t\ttrees: fieldsCodec.encode(treesToEncode, {\n\t\t\t\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t\toriginatorId: context.originatorId,\n\t\t\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t\t\t}),\n\t\t\t\t};\n\t}\n\n\tfunction decodeDetachedNodes(\n\t\tencoded: EncodedBuilds | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): ChangeAtomIdBTree<TreeChunk> | undefined {\n\t\tif (encoded === undefined || encoded.builds.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst chunks = fieldsCodec.decode(encoded.trees, {\n\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\toriginatorId: context.originatorId,\n\t\t\tidCompressor: context.idCompressor,\n\t\t});\n\t\tconst getChunk = (index: number): TreeChunk => {\n\t\t\tassert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);\n\t\t\treturn chunkFieldSingle(chunks[index] ?? oob(), {\n\t\t\t\tpolicy: defaultChunkPolicy,\n\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t});\n\t\t};\n\n\t\tconst map: ModularChangeset[\"builds\"] = newTupleBTree();\n\t\tencoded.builds.forEach((build) => {\n\t\t\t// EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple\n\t\t\tconst revision =\n\t\t\t\tbuild[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);\n\n\t\t\tconst decodedChunks: [ChangesetLocalId, TreeChunk][] = build[0].map(([i, n]) => [\n\t\t\t\ti,\n\t\t\t\tgetChunk(n),\n\t\t\t]);\n\n\t\t\tfor (const [id, chunk] of decodedChunks) {\n\t\t\t\tmap.set([revision, id], chunk);\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}\n\n\tfunction encodeRevisionInfos(\n\t\trevisions: readonly RevisionInfo[],\n\t\tcontext: ChangeEncodingContext,\n\t): EncodedRevisionInfo[] | undefined {\n\t\tif (context.revision !== undefined) {\n\t\t\tassert(\n\t\t\t\trevisions.length === 1 &&\n\t\t\t\t\trevisions[0] !== undefined &&\n\t\t\t\t\trevisions[0].revision === context.revision &&\n\t\t\t\t\trevisions[0].rollbackOf === undefined,\n\t\t\t\t0x964 /* A tagged change should only contain the tagged revision */,\n\t\t\t);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst encodedRevisions = [];\n\t\tfor (const revision of revisions) {\n\t\t\tconst encodedRevision: Mutable<EncodedRevisionInfo> = {\n\t\t\t\trevision: revisionTagCodec.encode(revision.revision, context),\n\t\t\t};\n\n\t\t\tif (revision.rollbackOf !== undefined) {\n\t\t\t\tencodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);\n\t\t\t}\n\n\t\t\tencodedRevisions.push(encodedRevision);\n\t\t}\n\n\t\treturn encodedRevisions;\n\t}\n\n\tfunction decodeRevisionInfos(\n\t\trevisions: readonly EncodedRevisionInfo[] | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): RevisionInfo[] | undefined {\n\t\tif (revisions === undefined) {\n\t\t\treturn context.revision !== undefined ? [{ revision: context.revision }] : undefined;\n\t\t}\n\n\t\tconst decodedRevisions = [];\n\t\tfor (const revision of revisions) {\n\t\t\tconst decodedRevision: Mutable<RevisionInfo> = {\n\t\t\t\trevision: revisionTagCodec.decode(revision.revision, context),\n\t\t\t};\n\n\t\t\tif (revision.rollbackOf !== undefined) {\n\t\t\t\tdecodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);\n\t\t\t}\n\n\t\t\tdecodedRevisions.push(decodedRevision);\n\t\t}\n\n\t\treturn decodedRevisions;\n\t}\n\n\tconst modularChangeCodec: ModularChangeCodec = {\n\t\tencode: (change, context) => {\n\t\t\t// Destroys only exist in rollback changesets, which are never sent.\n\t\t\tassert(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);\n\t\t\treturn {\n\t\t\t\tmaxId: change.maxId,\n\t\t\t\trevisions:\n\t\t\t\t\tchange.revisions === undefined\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: encodeRevisionInfos(change.revisions, context),\n\t\t\t\tchanges: encodeFieldChangesForJson(change.fieldChanges, context, change.nodeChanges),\n\t\t\t\tbuilds: encodeDetachedNodes(change.builds, context),\n\t\t\t\trefreshers: encodeDetachedNodes(change.refreshers, context),\n\t\t\t\tviolations: change.constraintViolationCount,\n\t\t\t};\n\t\t},\n\n\t\tdecode: (encodedChange: EncodedModularChangeset, context) => {\n\t\t\tconst decoded: Mutable<ModularChangeset> = {\n\t\t\t\tfieldChanges: new Map(),\n\t\t\t\tnodeChanges: newTupleBTree(),\n\t\t\t\tnodeToParent: newTupleBTree(),\n\t\t\t\tnodeAliases: newTupleBTree(),\n\t\t\t\tcrossFieldKeys: newCrossFieldKeyTable(),\n\t\t\t};\n\n\t\t\tdecoded.fieldChanges = decodeFieldChangesFromJson(\n\t\t\t\tencodedChange.changes,\n\t\t\t\tundefined,\n\t\t\t\tdecoded,\n\t\t\t\tcontext,\n\t\t\t\tidAllocatorFromMaxId(encodedChange.maxId),\n\t\t\t);\n\n\t\t\tif (encodedChange.builds !== undefined) {\n\t\t\t\tdecoded.builds = decodeDetachedNodes(encodedChange.builds, context);\n\t\t\t}\n\t\t\tif (encodedChange.refreshers !== undefined) {\n\t\t\t\tdecoded.refreshers = decodeDetachedNodes(encodedChange.refreshers, context);\n\t\t\t}\n\n\t\t\tif (encodedChange.violations !== undefined) {\n\t\t\t\tdecoded.constraintViolationCount = encodedChange.violations;\n\t\t\t}\n\n\t\t\tconst decodedRevInfos = decodeRevisionInfos(encodedChange.revisions, context);\n\t\t\tif (decodedRevInfos !== undefined) {\n\t\t\t\tdecoded.revisions = decodedRevInfos;\n\t\t\t}\n\t\t\tif (encodedChange.maxId !== undefined) {\n\t\t\t\tdecoded.maxId = encodedChange.maxId;\n\t\t\t}\n\t\t\treturn decoded;\n\t\t},\n\t};\n\n\treturn withSchemaValidation(EncodedModularChangeset, modularChangeCodec, validator);\n}\n\nfunction getChangeHandler(\n\tfieldKinds: FieldKindConfiguration,\n\tfieldKind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\tif (fieldKind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind.changeHandler;\n\t}\n\n\tconst handler = fieldKinds.get(fieldKind)?.kind.changeHandler;\n\tassert(handler !== undefined, 0x9c1 /* Unknown field kind */);\n\treturn handler;\n}\n\nfunction encodeRevisionOpt(\n\trevisionCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\trevision: RevisionTag | undefined,\n\tcontext: ChangeEncodingContext,\n): EncodedRevisionTag | undefined {\n\tif (revision === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn revision === context.revision ? undefined : revisionCodec.encode(revision, context);\n}\n"]}
1
+ {"version":3,"file":"modularChangeCodecs.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeCodecs.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\n\nimport {\n\ttype ICodecFamily,\n\ttype ICodecOptions,\n\ttype IJsonCodec,\n\ttype IMultiFormatCodec,\n\ttype SchemaValidationFunction,\n\tmakeCodecFamily,\n\twithSchemaValidation,\n} from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tChangesetLocalId,\n\tEncodedRevisionTag,\n\tFieldKey,\n\tFieldKindIdentifier,\n\tITreeCursorSynchronous,\n\tRevisionInfo,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport {\n\ttype IdAllocator,\n\ttype JsonCompatibleReadOnly,\n\ttype Mutable,\n\tbrand,\n\tfail,\n\tidAllocatorFromMaxId,\n\tnewTupleBTree,\n} from \"../../util/index.js\";\nimport {\n\ttype FieldBatchCodec,\n\ttype TreeChunk,\n\tchunkFieldSingle,\n\tdefaultChunkPolicy,\n} from \"../chunked-forest/index.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\n\nimport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\ttype EncodedBuilds,\n\ttype EncodedBuildsArray,\n\ttype EncodedFieldChange,\n\ttype EncodedFieldChangeMap,\n\tEncodedModularChangeset,\n\ttype EncodedNodeChangeset,\n\ttype EncodedRevisionInfo,\n} from \"./modularChangeFormat.js\";\nimport {\n\tnewCrossFieldKeyTable,\n\ttype ChangeAtomIdBTree,\n\ttype FieldChangeMap,\n\ttype FieldChangeset,\n\ttype FieldId,\n\ttype ModularChangeset,\n\ttype NodeChangeset,\n\ttype NodeId,\n} from \"./modularChangeTypes.js\";\nimport type { FieldChangeEncodingContext, FieldChangeHandler } from \"./fieldChangeHandler.js\";\n\nexport function makeModularChangeCodecFamily(\n\tfieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration>,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\t{ jsonValidator: validator }: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ICodecFamily<ModularChangeset, ChangeEncodingContext> {\n\treturn makeCodecFamily(\n\t\tArray.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => [\n\t\t\tversion,\n\t\t\tmakeModularChangeCodec(\n\t\t\t\tfieldKinds,\n\t\t\t\trevisionTagCodec,\n\t\t\t\tfieldsCodec,\n\t\t\t\t{ jsonValidator: validator },\n\t\t\t\tchunkCompressionStrategy,\n\t\t\t),\n\t\t]),\n\t);\n}\n\ntype ModularChangeCodec = IJsonCodec<\n\tModularChangeset,\n\tEncodedModularChangeset,\n\tEncodedModularChangeset,\n\tChangeEncodingContext\n>;\n\ntype FieldCodec = IMultiFormatCodec<\n\tFieldChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext\n>;\n\nfunction makeModularChangeCodec(\n\tfieldKinds: FieldKindConfiguration,\n\trevisionTagCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\tfieldsCodec: FieldBatchCodec,\n\t{ jsonValidator: validator }: ICodecOptions,\n\tchunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,\n): ModularChangeCodec {\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\tconst getMapEntry = ({ kind, formatVersion }: FieldKindConfigurationEntry) => {\n\t\tconst codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);\n\t\treturn {\n\t\t\tcodec,\n\t\t\tcompiledSchema: codec.json.encodedSchema\n\t\t\t\t? validator.compile(codec.json.encodedSchema)\n\t\t\t\t: undefined,\n\t\t};\n\t};\n\n\t/**\n\t * The codec version for the generic field kind.\n\t */\n\tconst genericFieldKindFormatVersion = 1;\n\tconst fieldChangesetCodecs: Map<\n\t\tFieldKindIdentifier,\n\t\t{\n\t\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\t\tcodec: FieldCodec;\n\t\t}\n\t> = new Map([\n\t\t[\n\t\t\tgenericFieldKind.identifier,\n\t\t\tgetMapEntry({ kind: genericFieldKind, formatVersion: genericFieldKindFormatVersion }),\n\t\t],\n\t]);\n\n\tfieldKinds.forEach((entry, identifier) => {\n\t\tfieldChangesetCodecs.set(identifier, getMapEntry(entry));\n\t});\n\n\tconst getFieldChangesetCodec = (\n\t\tfieldKind: FieldKindIdentifier,\n\t): {\n\t\tcompiledSchema?: SchemaValidationFunction<TAnySchema>;\n\t\tcodec: FieldCodec;\n\t} => {\n\t\tconst entry = fieldChangesetCodecs.get(fieldKind);\n\t\tassert(entry !== undefined, 0x5ea /* Tried to encode unsupported fieldKind */);\n\t\treturn entry;\n\t};\n\n\tfunction encodeFieldChangesForJson(\n\t\tchange: FieldChangeMap,\n\t\tcontext: ChangeEncodingContext,\n\t\tnodeChanges: ChangeAtomIdBTree<NodeChangeset>,\n\t): EncodedFieldChangeMap {\n\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\tbaseContext: context,\n\n\t\t\tencodeNode: (nodeId: NodeId): EncodedNodeChangeset => {\n\t\t\t\tconst node = nodeChanges.get([nodeId.revision, nodeId.localId]);\n\t\t\t\tassert(node !== undefined, 0x92e /* Unknown node ID */);\n\t\t\t\treturn encodeNodeChangesForJson(node, fieldContext);\n\t\t\t},\n\n\t\t\tdecodeNode: () => fail(\"Should not decode nodes during field encoding\"),\n\t\t};\n\n\t\treturn encodeFieldChangesForJsonI(change, fieldContext);\n\t}\n\n\tfunction encodeFieldChangesForJsonI(\n\t\tchange: FieldChangeMap,\n\t\tcontext: FieldChangeEncodingContext,\n\t): EncodedFieldChangeMap {\n\t\tconst encodedFields: EncodedFieldChangeMap = [];\n\n\t\tfor (const [field, fieldChange] of change) {\n\t\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(fieldChange.fieldKind);\n\t\t\tconst encodedChange = codec.json.encode(fieldChange.change, context);\n\t\t\tif (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {\n\t\t\t\tfail(\"Encoded change didn't pass schema validation.\");\n\t\t\t}\n\n\t\t\tconst fieldKey: FieldKey = field;\n\t\t\tconst encodedField: EncodedFieldChange = {\n\t\t\t\tfieldKey,\n\t\t\t\tfieldKind: fieldChange.fieldKind,\n\t\t\t\tchange: encodedChange,\n\t\t\t};\n\n\t\t\tencodedFields.push(encodedField);\n\t\t}\n\n\t\treturn encodedFields;\n\t}\n\n\tfunction encodeNodeChangesForJson(\n\t\tchange: NodeChangeset,\n\t\tcontext: FieldChangeEncodingContext,\n\t): EncodedNodeChangeset {\n\t\tconst encodedChange: EncodedNodeChangeset = {};\n\t\tconst { fieldChanges, nodeExistsConstraint } = change;\n\n\t\tif (fieldChanges !== undefined) {\n\t\t\tencodedChange.fieldChanges = encodeFieldChangesForJsonI(fieldChanges, context);\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tencodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\treturn encodedChange;\n\t}\n\n\tfunction decodeFieldChangesFromJson(\n\t\tencodedChange: EncodedFieldChangeMap,\n\t\tparentId: NodeId | undefined,\n\t\tdecoded: ModularChangeset,\n\t\tcontext: ChangeEncodingContext,\n\t\tidAllocator: IdAllocator,\n\t): FieldChangeMap {\n\t\tconst decodedFields: FieldChangeMap = new Map();\n\t\tfor (const field of encodedChange) {\n\t\t\tconst { codec, compiledSchema } = getFieldChangesetCodec(field.fieldKind);\n\t\t\tif (compiledSchema !== undefined && !compiledSchema.check(field.change)) {\n\t\t\t\tfail(\"Encoded change didn't pass schema validation.\");\n\t\t\t}\n\n\t\t\tconst fieldId: FieldId = {\n\t\t\t\tnodeId: parentId,\n\t\t\t\tfield: field.fieldKey,\n\t\t\t};\n\n\t\t\tconst fieldContext: FieldChangeEncodingContext = {\n\t\t\t\tbaseContext: context,\n\n\t\t\t\tencodeNode: () => fail(\"Should not encode nodes during field decoding\"),\n\n\t\t\t\tdecodeNode: (encodedNode: EncodedNodeChangeset): NodeId => {\n\t\t\t\t\tconst nodeId: NodeId = {\n\t\t\t\t\t\trevision: context.revision,\n\t\t\t\t\t\tlocalId: brand(idAllocator.allocate()),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst node = decodeNodeChangesetFromJson(\n\t\t\t\t\t\tencodedNode,\n\t\t\t\t\t\tnodeId,\n\t\t\t\t\t\tdecoded,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tidAllocator,\n\t\t\t\t\t);\n\n\t\t\t\t\tdecoded.nodeChanges.set([nodeId.revision, nodeId.localId], node);\n\t\t\t\t\tdecoded.nodeToParent.set([nodeId.revision, nodeId.localId], fieldId);\n\t\t\t\t\treturn nodeId;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst fieldChangeset = codec.json.decode(field.change, fieldContext);\n\n\t\t\tconst crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(\n\t\t\t\tfieldChangeset,\n\t\t\t);\n\n\t\t\tfor (const { key, count } of crossFieldKeys) {\n\t\t\t\tdecoded.crossFieldKeys.set(key, count, fieldId);\n\t\t\t}\n\n\t\t\tconst fieldKey: FieldKey = brand<FieldKey>(field.fieldKey);\n\n\t\t\tdecodedFields.set(fieldKey, {\n\t\t\t\tfieldKind: field.fieldKind,\n\t\t\t\tchange: brand(fieldChangeset),\n\t\t\t});\n\t\t}\n\n\t\treturn decodedFields;\n\t}\n\n\tfunction decodeNodeChangesetFromJson(\n\t\tencodedChange: EncodedNodeChangeset,\n\t\tid: NodeId,\n\t\tdecoded: ModularChangeset,\n\t\tcontext: ChangeEncodingContext,\n\t\tidAllocator: IdAllocator,\n\t): NodeChangeset {\n\t\tconst decodedChange: NodeChangeset = {};\n\t\tconst { fieldChanges, nodeExistsConstraint } = encodedChange;\n\n\t\tif (fieldChanges !== undefined) {\n\t\t\tdecodedChange.fieldChanges = decodeFieldChangesFromJson(\n\t\t\t\tfieldChanges,\n\t\t\t\tid,\n\t\t\t\tdecoded,\n\t\t\t\tcontext,\n\t\t\t\tidAllocator,\n\t\t\t);\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tdecodedChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\treturn decodedChange;\n\t}\n\n\tfunction encodeDetachedNodes(\n\t\tdetachedNodes: ChangeAtomIdBTree<TreeChunk> | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): EncodedBuilds | undefined {\n\t\tif (detachedNodes === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst treesToEncode: ITreeCursorSynchronous[] = [];\n\t\tconst buildsArray: EncodedBuildsArray = [];\n\n\t\tlet buildsForRevision:\n\t\t\t| [[ChangesetLocalId, number][], EncodedRevisionTag]\n\t\t\t| [[ChangesetLocalId, number][]]\n\t\t\t| undefined;\n\n\t\tfor (const [[revision, id], chunk] of detachedNodes.entries()) {\n\t\t\tconst encodedRevision = encodeRevisionOpt(revisionTagCodec, revision, context);\n\n\t\t\tif (buildsForRevision === undefined || buildsForRevision[1] !== encodedRevision) {\n\t\t\t\tif (buildsForRevision !== undefined) {\n\t\t\t\t\tbuildsArray.push(buildsForRevision);\n\t\t\t\t}\n\n\t\t\t\tbuildsForRevision = encodedRevision !== undefined ? [[], encodedRevision] : [[]];\n\t\t\t}\n\n\t\t\ttreesToEncode.push(chunk.cursor());\n\t\t\tconst treeIndexInBatch = treesToEncode.length - 1;\n\t\t\tbuildsForRevision?.[0].push([id, treeIndexInBatch]);\n\t\t}\n\n\t\tif (buildsForRevision !== undefined) {\n\t\t\tbuildsArray.push(buildsForRevision);\n\t\t}\n\n\t\treturn buildsArray.length === 0\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tbuilds: buildsArray,\n\t\t\t\t\ttrees: fieldsCodec.encode(treesToEncode, {\n\t\t\t\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\t\t\t\tschema: context.schema,\n\t\t\t\t\t\toriginatorId: context.originatorId,\n\t\t\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t\t\t}),\n\t\t\t\t};\n\t}\n\n\tfunction decodeDetachedNodes(\n\t\tencoded: EncodedBuilds | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): ChangeAtomIdBTree<TreeChunk> | undefined {\n\t\tif (encoded === undefined || encoded.builds.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst chunks = fieldsCodec.decode(encoded.trees, {\n\t\t\tencodeType: chunkCompressionStrategy,\n\t\t\toriginatorId: context.originatorId,\n\t\t\tidCompressor: context.idCompressor,\n\t\t});\n\t\tconst getChunk = (index: number): TreeChunk => {\n\t\t\tassert(index < chunks.length, 0x898 /* out of bounds index for build chunk */);\n\t\t\treturn chunkFieldSingle(chunks[index] ?? oob(), {\n\t\t\t\tpolicy: defaultChunkPolicy,\n\t\t\t\tidCompressor: context.idCompressor,\n\t\t\t});\n\t\t};\n\n\t\tconst map: ModularChangeset[\"builds\"] = newTupleBTree();\n\t\tencoded.builds.forEach((build) => {\n\t\t\t// EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple\n\t\t\tconst revision =\n\t\t\t\tbuild[1] === undefined ? context.revision : revisionTagCodec.decode(build[1], context);\n\n\t\t\tconst decodedChunks: [ChangesetLocalId, TreeChunk][] = build[0].map(([i, n]) => [\n\t\t\t\ti,\n\t\t\t\tgetChunk(n),\n\t\t\t]);\n\n\t\t\tfor (const [id, chunk] of decodedChunks) {\n\t\t\t\tmap.set([revision, id], chunk);\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}\n\n\tfunction encodeRevisionInfos(\n\t\trevisions: readonly RevisionInfo[],\n\t\tcontext: ChangeEncodingContext,\n\t): EncodedRevisionInfo[] | undefined {\n\t\tif (context.revision !== undefined) {\n\t\t\tassert(\n\t\t\t\trevisions.length === 1 &&\n\t\t\t\t\trevisions[0] !== undefined &&\n\t\t\t\t\trevisions[0].revision === context.revision &&\n\t\t\t\t\trevisions[0].rollbackOf === undefined,\n\t\t\t\t0x964 /* A tagged change should only contain the tagged revision */,\n\t\t\t);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst encodedRevisions = [];\n\t\tfor (const revision of revisions) {\n\t\t\tconst encodedRevision: Mutable<EncodedRevisionInfo> = {\n\t\t\t\trevision: revisionTagCodec.encode(revision.revision, context),\n\t\t\t};\n\n\t\t\tif (revision.rollbackOf !== undefined) {\n\t\t\t\tencodedRevision.rollbackOf = revisionTagCodec.encode(revision.rollbackOf, context);\n\t\t\t}\n\n\t\t\tencodedRevisions.push(encodedRevision);\n\t\t}\n\n\t\treturn encodedRevisions;\n\t}\n\n\tfunction decodeRevisionInfos(\n\t\trevisions: readonly EncodedRevisionInfo[] | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): RevisionInfo[] | undefined {\n\t\tif (revisions === undefined) {\n\t\t\treturn context.revision !== undefined ? [{ revision: context.revision }] : undefined;\n\t\t}\n\n\t\tconst decodedRevisions = [];\n\t\tfor (const revision of revisions) {\n\t\t\tconst decodedRevision: Mutable<RevisionInfo> = {\n\t\t\t\trevision: revisionTagCodec.decode(revision.revision, context),\n\t\t\t};\n\n\t\t\tif (revision.rollbackOf !== undefined) {\n\t\t\t\tdecodedRevision.rollbackOf = revisionTagCodec.decode(revision.rollbackOf, context);\n\t\t\t}\n\n\t\t\tdecodedRevisions.push(decodedRevision);\n\t\t}\n\n\t\treturn decodedRevisions;\n\t}\n\n\tconst modularChangeCodec: ModularChangeCodec = {\n\t\tencode: (change, context) => {\n\t\t\t// Destroys only exist in rollback changesets, which are never sent.\n\t\t\tassert(change.destroys === undefined, 0x899 /* Unexpected changeset with destroys */);\n\t\t\treturn {\n\t\t\t\tmaxId: change.maxId,\n\t\t\t\trevisions:\n\t\t\t\t\tchange.revisions === undefined\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: encodeRevisionInfos(change.revisions, context),\n\t\t\t\tchanges: encodeFieldChangesForJson(change.fieldChanges, context, change.nodeChanges),\n\t\t\t\tbuilds: encodeDetachedNodes(change.builds, context),\n\t\t\t\trefreshers: encodeDetachedNodes(change.refreshers, context),\n\t\t\t\tviolations: change.constraintViolationCount,\n\t\t\t};\n\t\t},\n\n\t\tdecode: (encodedChange: EncodedModularChangeset, context) => {\n\t\t\tconst decoded: Mutable<ModularChangeset> = {\n\t\t\t\tfieldChanges: new Map(),\n\t\t\t\tnodeChanges: newTupleBTree(),\n\t\t\t\tnodeToParent: newTupleBTree(),\n\t\t\t\tnodeAliases: newTupleBTree(),\n\t\t\t\tcrossFieldKeys: newCrossFieldKeyTable(),\n\t\t\t};\n\n\t\t\tdecoded.fieldChanges = decodeFieldChangesFromJson(\n\t\t\t\tencodedChange.changes,\n\t\t\t\tundefined,\n\t\t\t\tdecoded,\n\t\t\t\tcontext,\n\t\t\t\tidAllocatorFromMaxId(encodedChange.maxId),\n\t\t\t);\n\n\t\t\tif (encodedChange.builds !== undefined) {\n\t\t\t\tdecoded.builds = decodeDetachedNodes(encodedChange.builds, context);\n\t\t\t}\n\t\t\tif (encodedChange.refreshers !== undefined) {\n\t\t\t\tdecoded.refreshers = decodeDetachedNodes(encodedChange.refreshers, context);\n\t\t\t}\n\n\t\t\tif (encodedChange.violations !== undefined) {\n\t\t\t\tdecoded.constraintViolationCount = encodedChange.violations;\n\t\t\t}\n\n\t\t\tconst decodedRevInfos = decodeRevisionInfos(encodedChange.revisions, context);\n\t\t\tif (decodedRevInfos !== undefined) {\n\t\t\t\tdecoded.revisions = decodedRevInfos;\n\t\t\t}\n\t\t\tif (encodedChange.maxId !== undefined) {\n\t\t\t\tdecoded.maxId = encodedChange.maxId;\n\t\t\t}\n\t\t\treturn decoded;\n\t\t},\n\t};\n\n\treturn withSchemaValidation(EncodedModularChangeset, modularChangeCodec, validator);\n}\n\nfunction getChangeHandler(\n\tfieldKinds: FieldKindConfiguration,\n\tfieldKind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\tif (fieldKind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind.changeHandler;\n\t}\n\n\tconst handler = fieldKinds.get(fieldKind)?.kind.changeHandler;\n\tassert(handler !== undefined, 0x9c1 /* Unknown field kind */);\n\treturn handler;\n}\n\nfunction encodeRevisionOpt(\n\trevisionCodec: IJsonCodec<\n\t\tRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tEncodedRevisionTag,\n\t\tChangeEncodingContext\n\t>,\n\trevision: RevisionTag | undefined,\n\tcontext: ChangeEncodingContext,\n): EncodedRevisionTag | undefined {\n\tif (revision === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn revision === context.revision ? undefined : revisionCodec.encode(revision, context);\n}\n"]}
@@ -7,7 +7,7 @@ import { type ChangeEncodingContext, type ChangeFamily, type ChangeFamilyEditor,
7
7
  import { type TreeChunk } from "../chunked-forest/index.js";
8
8
  import { type FieldChangeHandler, type RebaseRevisionMetadata } from "./fieldChangeHandler.js";
9
9
  import { type FieldKindWithEditor } from "./fieldKindWithEditor.js";
10
- import type { ChangeAtomIdBTree, CrossFieldKeyRange, CrossFieldKeyTable, FieldChangeset, FieldId, ModularChangeset, NodeId, TupleBTree } from "./modularChangeTypes.js";
10
+ import { type ChangeAtomIdBTree, type FieldChangeset, type FieldId, type ModularChangeset, type NodeId } from "./modularChangeTypes.js";
11
11
  import type { IIdCompressor } from "@fluidframework/id-compressor";
12
12
  /**
13
13
  * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
@@ -139,6 +139,8 @@ export declare function relevantRemovedRoots(change: ModularChangeset, fieldKind
139
139
  */
140
140
  export declare function updateRefreshers(change: ModularChangeset, getDetachedNode: (id: DeltaDetachedNodeId) => TreeChunk | undefined, removedRoots: Iterable<DeltaDetachedNodeId>, requireRefreshers?: boolean): ModularChangeset;
141
141
  /**
142
+ * Converts a change into the delta format.
143
+ *
142
144
  * @param change - The change to convert into a delta.
143
145
  * @param fieldKinds - The field kinds to delegate to.
144
146
  */
@@ -206,7 +208,5 @@ export interface GlobalEditDescription {
206
208
  */
207
209
  export type EditDescription = FieldEditDescription | GlobalEditDescription;
208
210
  export declare function getParentFieldId(changeset: ModularChangeset, nodeId: NodeId): FieldId;
209
- export declare function getFieldsForCrossFieldKey(changeset: ModularChangeset, [target, revision, id, count]: CrossFieldKeyRange): FieldId[];
210
- export declare function newCrossFieldKeyTable(): CrossFieldKeyTable;
211
- export declare function newTupleBTree<K extends readonly unknown[], V>(entries?: [K, V][]): TupleBTree<K, V>;
211
+ export declare function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdBTree<NodeId>): FieldId;
212
212
  //# sourceMappingURL=modularChangeFamily.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFamily.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modularChangeFamily.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.ts"],"names":[],"mappings":"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"}