@fluidframework/tree 2.113.1 → 2.114.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 (527) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/api-report/tree.alpha.api.md +19 -0
  3. package/dist/core/change-family/changeFamily.d.ts +15 -4
  4. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  5. package/dist/core/change-family/changeFamily.js.map +1 -1
  6. package/dist/core/change-family/editBuilder.d.ts +2 -3
  7. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  8. package/dist/core/change-family/editBuilder.js +1 -2
  9. package/dist/core/change-family/editBuilder.js.map +1 -1
  10. package/dist/core/change-family/index.d.ts +1 -1
  11. package/dist/core/change-family/index.d.ts.map +1 -1
  12. package/dist/core/change-family/index.js.map +1 -1
  13. package/dist/core/index.d.ts +3 -2
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/tree/delta.d.ts +62 -16
  17. package/dist/core/tree/delta.d.ts.map +1 -1
  18. package/dist/core/tree/delta.js.map +1 -1
  19. package/dist/core/tree/detachedFieldIndex.d.ts +7 -13
  20. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  21. package/dist/core/tree/detachedFieldIndex.js +32 -46
  22. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  23. package/dist/core/tree/index.d.ts +1 -0
  24. package/dist/core/tree/index.d.ts.map +1 -1
  25. package/dist/core/tree/index.js.map +1 -1
  26. package/dist/core/tree/visitorUtils.d.ts +2 -4
  27. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  28. package/dist/core/tree/visitorUtils.js +2 -2
  29. package/dist/core/tree/visitorUtils.js.map +1 -1
  30. package/dist/entrypoints/alpha.d.ts +1 -1
  31. package/dist/entrypoints/alpha.d.ts.map +1 -1
  32. package/dist/entrypoints/alpha.js +5 -2
  33. package/dist/entrypoints/alpha.js.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  36. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  37. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  38. package/dist/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  39. package/dist/feature-libraries/comparison-forest/comparisonForest.js +98 -0
  40. package/dist/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  41. package/dist/feature-libraries/comparison-forest/index.d.ts +6 -0
  42. package/dist/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  43. package/dist/feature-libraries/comparison-forest/index.js +10 -0
  44. package/dist/feature-libraries/comparison-forest/index.js.map +1 -0
  45. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  46. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  47. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  48. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  49. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  50. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  51. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  52. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  53. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  54. package/dist/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  55. package/dist/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  56. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  57. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  58. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +18 -6
  59. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  60. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  61. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  62. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  63. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  64. package/dist/feature-libraries/index.d.ts +4 -3
  65. package/dist/feature-libraries/index.d.ts.map +1 -1
  66. package/dist/feature-libraries/index.js +77 -72
  67. package/dist/feature-libraries/index.js.map +1 -1
  68. package/dist/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  69. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  70. package/dist/feature-libraries/mitigatedChangeFamily.js +12 -0
  71. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  72. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  73. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  74. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  75. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  76. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  77. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  78. package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
  79. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  81. package/dist/feature-libraries/modular-schema/invert.d.ts +15 -0
  82. package/dist/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  83. package/dist/feature-libraries/modular-schema/invert.js +159 -0
  84. package/dist/feature-libraries/modular-schema/invert.js.map +1 -0
  85. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  86. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  87. package/dist/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  88. package/dist/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  89. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  90. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  91. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  92. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  93. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  94. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  95. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  96. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  97. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  98. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  99. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  100. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  101. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +53 -406
  102. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  103. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  104. package/dist/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  105. package/dist/feature-libraries/modular-schema/modularChangeUtils.js +205 -0
  106. package/dist/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  107. package/dist/feature-libraries/modular-schema/prune.d.ts +10 -0
  108. package/dist/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  109. package/dist/feature-libraries/modular-schema/prune.js +49 -0
  110. package/dist/feature-libraries/modular-schema/prune.js.map +1 -0
  111. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  112. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  113. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  114. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  115. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  116. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  117. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  118. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  119. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  120. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  121. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  122. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  123. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  124. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  125. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  126. package/dist/feature-libraries/treeTextCursor.d.ts +15 -0
  127. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  128. package/dist/feature-libraries/treeTextCursor.js +64 -1
  129. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  130. package/dist/index.d.ts +3 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +5 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/packageVersion.d.ts +1 -1
  135. package/dist/packageVersion.js +1 -1
  136. package/dist/packageVersion.js.map +1 -1
  137. package/dist/shared-tree/serializedChange.d.ts +2 -2
  138. package/dist/shared-tree/serializedChange.d.ts.map +1 -1
  139. package/dist/shared-tree/serializedChange.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +6 -3
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +8 -6
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  145. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  147. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  148. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  149. package/dist/shared-tree/sharedTreeChangeFamily.js +57 -1
  150. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  151. package/dist/shared-tree/transactionMinimize.d.ts.map +1 -1
  152. package/dist/shared-tree/transactionMinimize.js +2 -2
  153. package/dist/shared-tree/transactionMinimize.js.map +1 -1
  154. package/dist/shared-tree/transactionPostProcessor.d.ts +2 -1
  155. package/dist/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  156. package/dist/shared-tree/transactionPostProcessor.js.map +1 -1
  157. package/dist/shared-tree/treeCheckout.d.ts +8 -7
  158. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  159. package/dist/shared-tree/treeCheckout.js +1 -1
  160. package/dist/shared-tree/treeCheckout.js.map +1 -1
  161. package/dist/shared-tree-core/branch.d.ts +23 -9
  162. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  163. package/dist/shared-tree-core/branch.js +7 -0
  164. package/dist/shared-tree-core/branch.js.map +1 -1
  165. package/dist/shared-tree-core/editManager.d.ts +4 -4
  166. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  167. package/dist/shared-tree-core/editManager.js +2 -0
  168. package/dist/shared-tree-core/editManager.js.map +1 -1
  169. package/dist/shared-tree-core/editManagerCodecs.d.ts +3 -14
  170. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  171. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  172. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  173. package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  174. package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  175. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  176. package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  177. package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  178. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  179. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  180. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  181. package/dist/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  182. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  183. package/dist/shared-tree-core/editManagerSummarizer.js +0 -1
  184. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  185. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  186. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  187. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  188. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  189. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  190. package/dist/shared-tree-core/messageCodecs.d.ts +8 -1
  191. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  192. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  193. package/dist/shared-tree-core/sharedTreeCore.d.ts +5 -5
  194. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  195. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  196. package/dist/shared-tree-core/transaction.d.ts +10 -10
  197. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  198. package/dist/shared-tree-core/transaction.js +6 -3
  199. package/dist/shared-tree-core/transaction.js.map +1 -1
  200. package/dist/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  201. package/dist/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  202. package/dist/simple-tree/api/eraseSchemaDetails.js +15 -0
  203. package/dist/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  204. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +21 -2
  205. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  206. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  207. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
  208. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  209. package/dist/simple-tree/node-kinds/map/mapNode.js +9 -0
  210. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  211. package/dist/text/textDomain.d.ts +12 -0
  212. package/dist/text/textDomain.d.ts.map +1 -1
  213. package/dist/text/textDomain.js +37 -16
  214. package/dist/text/textDomain.js.map +1 -1
  215. package/dist/text/textDomainFormatted.d.ts +155 -61
  216. package/dist/text/textDomainFormatted.d.ts.map +1 -1
  217. package/dist/text/textDomainFormatted.js +147 -71
  218. package/dist/text/textDomainFormatted.js.map +1 -1
  219. package/dist/text/textDomainFormattedDefault.d.ts +37 -14
  220. package/dist/text/textDomainFormattedDefault.d.ts.map +1 -1
  221. package/dist/text/textDomainFormattedDefault.js +13 -5
  222. package/dist/text/textDomainFormattedDefault.js.map +1 -1
  223. package/dist/treeDataStore.d.ts +49 -0
  224. package/dist/treeDataStore.d.ts.map +1 -0
  225. package/dist/treeDataStore.js +57 -0
  226. package/dist/treeDataStore.js.map +1 -0
  227. package/dist/treeFactory.d.ts +8 -3
  228. package/dist/treeFactory.d.ts.map +1 -1
  229. package/dist/treeFactory.js +6 -1
  230. package/dist/treeFactory.js.map +1 -1
  231. package/lib/core/change-family/changeFamily.d.ts +15 -4
  232. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  233. package/lib/core/change-family/changeFamily.js.map +1 -1
  234. package/lib/core/change-family/editBuilder.d.ts +2 -3
  235. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  236. package/lib/core/change-family/editBuilder.js +1 -2
  237. package/lib/core/change-family/editBuilder.js.map +1 -1
  238. package/lib/core/change-family/index.d.ts +1 -1
  239. package/lib/core/change-family/index.d.ts.map +1 -1
  240. package/lib/core/change-family/index.js.map +1 -1
  241. package/lib/core/index.d.ts +3 -2
  242. package/lib/core/index.d.ts.map +1 -1
  243. package/lib/core/index.js +1 -1
  244. package/lib/core/index.js.map +1 -1
  245. package/lib/core/tree/delta.d.ts +62 -16
  246. package/lib/core/tree/delta.d.ts.map +1 -1
  247. package/lib/core/tree/delta.js.map +1 -1
  248. package/lib/core/tree/detachedFieldIndex.d.ts +7 -13
  249. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  250. package/lib/core/tree/detachedFieldIndex.js +7 -21
  251. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  252. package/lib/core/tree/index.d.ts +1 -0
  253. package/lib/core/tree/index.d.ts.map +1 -1
  254. package/lib/core/tree/index.js.map +1 -1
  255. package/lib/core/tree/visitorUtils.d.ts +2 -4
  256. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  257. package/lib/core/tree/visitorUtils.js +2 -2
  258. package/lib/core/tree/visitorUtils.js.map +1 -1
  259. package/lib/entrypoints/alpha.d.ts +1 -1
  260. package/lib/entrypoints/alpha.d.ts.map +1 -1
  261. package/lib/entrypoints/alpha.js +1 -1
  262. package/lib/entrypoints/alpha.js.map +1 -1
  263. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  264. package/lib/feature-libraries/chunked-forest/uniformChunk.js +10 -2
  265. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  266. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts +51 -0
  267. package/lib/feature-libraries/comparison-forest/comparisonForest.d.ts.map +1 -0
  268. package/lib/feature-libraries/comparison-forest/comparisonForest.js +94 -0
  269. package/lib/feature-libraries/comparison-forest/comparisonForest.js.map +1 -0
  270. package/lib/feature-libraries/comparison-forest/index.d.ts +6 -0
  271. package/lib/feature-libraries/comparison-forest/index.d.ts.map +1 -0
  272. package/lib/feature-libraries/comparison-forest/index.js +6 -0
  273. package/lib/feature-libraries/comparison-forest/index.js.map +1 -0
  274. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +8 -6
  275. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  276. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -3
  277. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  278. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  279. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  280. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  281. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts +2 -2
  282. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -1
  283. package/lib/feature-libraries/default-schema/noChangeCodecs.js +3 -1
  284. package/lib/feature-libraries/default-schema/noChangeCodecs.js.map +1 -1
  285. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +6 -3
  286. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  287. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +16 -4
  288. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  289. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +2 -3
  290. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  291. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -3
  292. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  293. package/lib/feature-libraries/index.d.ts +4 -3
  294. package/lib/feature-libraries/index.d.ts.map +1 -1
  295. package/lib/feature-libraries/index.js +2 -1
  296. package/lib/feature-libraries/index.js.map +1 -1
  297. package/lib/feature-libraries/mitigatedChangeFamily.d.ts +1 -1
  298. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  299. package/lib/feature-libraries/mitigatedChangeFamily.js +12 -0
  300. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  301. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -1
  302. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  303. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  304. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +2 -2
  305. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  306. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  307. package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
  308. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  309. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  310. package/lib/feature-libraries/modular-schema/invert.d.ts +15 -0
  311. package/lib/feature-libraries/modular-schema/invert.d.ts.map +1 -0
  312. package/lib/feature-libraries/modular-schema/invert.js +155 -0
  313. package/lib/feature-libraries/modular-schema/invert.js.map +1 -0
  314. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts +3 -4
  315. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -1
  316. package/lib/feature-libraries/modular-schema/minimizeModularChange.js +2 -2
  317. package/lib/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -1
  318. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +9 -9
  319. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  320. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +0 -2
  321. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  322. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +2 -2
  323. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  324. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  325. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
  326. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  327. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  328. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -22
  329. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  330. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +16 -367
  331. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  332. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts +61 -0
  333. package/lib/feature-libraries/modular-schema/modularChangeUtils.d.ts.map +1 -0
  334. package/lib/feature-libraries/modular-schema/modularChangeUtils.js +192 -0
  335. package/lib/feature-libraries/modular-schema/modularChangeUtils.js.map +1 -0
  336. package/lib/feature-libraries/modular-schema/prune.d.ts +10 -0
  337. package/lib/feature-libraries/modular-schema/prune.d.ts.map +1 -0
  338. package/lib/feature-libraries/modular-schema/prune.js +45 -0
  339. package/lib/feature-libraries/modular-schema/prune.js.map +1 -0
  340. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +2 -2
  341. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  342. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  343. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -2
  344. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  345. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  346. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +2 -2
  347. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  348. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  349. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +2 -2
  350. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  351. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  352. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -2
  353. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  354. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  355. package/lib/feature-libraries/treeTextCursor.d.ts +15 -0
  356. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  357. package/lib/feature-libraries/treeTextCursor.js +62 -1
  358. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  359. package/lib/index.d.ts +3 -1
  360. package/lib/index.d.ts.map +1 -1
  361. package/lib/index.js +2 -1
  362. package/lib/index.js.map +1 -1
  363. package/lib/packageVersion.d.ts +1 -1
  364. package/lib/packageVersion.js +1 -1
  365. package/lib/packageVersion.js.map +1 -1
  366. package/lib/shared-tree/serializedChange.d.ts +2 -2
  367. package/lib/shared-tree/serializedChange.d.ts.map +1 -1
  368. package/lib/shared-tree/serializedChange.js.map +1 -1
  369. package/lib/shared-tree/sharedTree.d.ts +6 -3
  370. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  371. package/lib/shared-tree/sharedTree.js +9 -7
  372. package/lib/shared-tree/sharedTree.js.map +1 -1
  373. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +2 -2
  374. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  375. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  376. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +41 -4
  377. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  378. package/lib/shared-tree/sharedTreeChangeFamily.js +55 -0
  379. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  380. package/lib/shared-tree/transactionMinimize.d.ts.map +1 -1
  381. package/lib/shared-tree/transactionMinimize.js +3 -3
  382. package/lib/shared-tree/transactionMinimize.js.map +1 -1
  383. package/lib/shared-tree/transactionPostProcessor.d.ts +2 -1
  384. package/lib/shared-tree/transactionPostProcessor.d.ts.map +1 -1
  385. package/lib/shared-tree/transactionPostProcessor.js.map +1 -1
  386. package/lib/shared-tree/treeCheckout.d.ts +8 -7
  387. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  388. package/lib/shared-tree/treeCheckout.js +1 -1
  389. package/lib/shared-tree/treeCheckout.js.map +1 -1
  390. package/lib/shared-tree-core/branch.d.ts +23 -9
  391. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  392. package/lib/shared-tree-core/branch.js +7 -0
  393. package/lib/shared-tree-core/branch.js.map +1 -1
  394. package/lib/shared-tree-core/editManager.d.ts +4 -4
  395. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  396. package/lib/shared-tree-core/editManager.js +2 -0
  397. package/lib/shared-tree-core/editManager.js.map +1 -1
  398. package/lib/shared-tree-core/editManagerCodecs.d.ts +3 -14
  399. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  400. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  401. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +11 -1
  402. package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
  403. package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
  404. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +4 -11
  405. package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
  406. package/lib/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
  407. package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
  408. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +4 -11
  409. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
  410. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -1
  411. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
  412. package/lib/shared-tree-core/editManagerSummarizer.d.ts +4 -4
  413. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  414. package/lib/shared-tree-core/editManagerSummarizer.js +0 -1
  415. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  416. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
  417. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  418. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  419. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  420. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  421. package/lib/shared-tree-core/messageCodecs.d.ts +8 -1
  422. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  423. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  424. package/lib/shared-tree-core/sharedTreeCore.d.ts +5 -5
  425. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  426. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  427. package/lib/shared-tree-core/transaction.d.ts +10 -10
  428. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  429. package/lib/shared-tree-core/transaction.js +6 -3
  430. package/lib/shared-tree-core/transaction.js.map +1 -1
  431. package/lib/simple-tree/api/eraseSchemaDetails.d.ts +15 -0
  432. package/lib/simple-tree/api/eraseSchemaDetails.d.ts.map +1 -1
  433. package/lib/simple-tree/api/eraseSchemaDetails.js +15 -0
  434. package/lib/simple-tree/api/eraseSchemaDetails.js.map +1 -1
  435. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +21 -2
  436. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  437. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  438. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
  439. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  440. package/lib/simple-tree/node-kinds/map/mapNode.js +9 -0
  441. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  442. package/lib/text/textDomain.d.ts +12 -0
  443. package/lib/text/textDomain.d.ts.map +1 -1
  444. package/lib/text/textDomain.js +34 -15
  445. package/lib/text/textDomain.js.map +1 -1
  446. package/lib/text/textDomainFormatted.d.ts +155 -61
  447. package/lib/text/textDomainFormatted.d.ts.map +1 -1
  448. package/lib/text/textDomainFormatted.js +148 -73
  449. package/lib/text/textDomainFormatted.js.map +1 -1
  450. package/lib/text/textDomainFormattedDefault.d.ts +37 -14
  451. package/lib/text/textDomainFormattedDefault.d.ts.map +1 -1
  452. package/lib/text/textDomainFormattedDefault.js +14 -6
  453. package/lib/text/textDomainFormattedDefault.js.map +1 -1
  454. package/lib/treeDataStore.d.ts +49 -0
  455. package/lib/treeDataStore.d.ts.map +1 -0
  456. package/lib/treeDataStore.js +52 -0
  457. package/lib/treeDataStore.js.map +1 -0
  458. package/lib/treeFactory.d.ts +8 -3
  459. package/lib/treeFactory.d.ts.map +1 -1
  460. package/lib/treeFactory.js +5 -0
  461. package/lib/treeFactory.js.map +1 -1
  462. package/package.json +25 -24
  463. package/src/core/change-family/changeFamily.ts +32 -4
  464. package/src/core/change-family/editBuilder.ts +1 -2
  465. package/src/core/change-family/index.ts +2 -0
  466. package/src/core/index.ts +9 -6
  467. package/src/core/tree/delta.ts +62 -16
  468. package/src/core/tree/detachedFieldIndex.ts +7 -38
  469. package/src/core/tree/index.ts +2 -0
  470. package/src/core/tree/visitorUtils.ts +3 -17
  471. package/src/entrypoints/alpha.ts +7 -3
  472. package/src/feature-libraries/chunked-forest/uniformChunk.ts +11 -1
  473. package/src/feature-libraries/comparison-forest/comparisonForest.ts +140 -0
  474. package/src/feature-libraries/comparison-forest/index.ts +6 -0
  475. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +20 -6
  476. package/src/feature-libraries/default-schema/index.ts +1 -0
  477. package/src/feature-libraries/default-schema/noChangeCodecs.ts +11 -3
  478. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +33 -5
  479. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -3
  480. package/src/feature-libraries/index.ts +5 -0
  481. package/src/feature-libraries/mitigatedChangeFamily.ts +21 -3
  482. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -1
  483. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +9 -4
  484. package/src/feature-libraries/modular-schema/index.ts +1 -0
  485. package/src/feature-libraries/modular-schema/invert.ts +338 -0
  486. package/src/feature-libraries/modular-schema/minimizeModularChange.ts +3 -5
  487. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +16 -13
  488. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +3 -1
  489. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +2 -1
  490. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +45 -644
  491. package/src/feature-libraries/modular-schema/modularChangeUtils.ts +340 -0
  492. package/src/feature-libraries/modular-schema/prune.ts +69 -0
  493. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +4 -2
  494. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -2
  495. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +4 -2
  496. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
  497. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +6 -3
  498. package/src/feature-libraries/treeTextCursor.ts +66 -1
  499. package/src/index.ts +4 -0
  500. package/src/packageVersion.ts +1 -1
  501. package/src/shared-tree/serializedChange.ts +2 -2
  502. package/src/shared-tree/sharedTree.ts +34 -14
  503. package/src/shared-tree/sharedTreeChangeCodecs.ts +11 -3
  504. package/src/shared-tree/sharedTreeChangeFamily.ts +77 -2
  505. package/src/shared-tree/transactionMinimize.ts +7 -3
  506. package/src/shared-tree/transactionPostProcessor.ts +5 -1
  507. package/src/shared-tree/treeCheckout.ts +55 -16
  508. package/src/shared-tree-core/branch.ts +40 -12
  509. package/src/shared-tree-core/editManager.ts +46 -25
  510. package/src/shared-tree-core/editManagerCodecs.ts +9 -21
  511. package/src/shared-tree-core/editManagerCodecsCommons.ts +14 -2
  512. package/src/shared-tree-core/editManagerCodecsV1toV4.ts +18 -21
  513. package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +18 -20
  514. package/src/shared-tree-core/editManagerSummarizer.ts +9 -6
  515. package/src/shared-tree-core/messageCodecV1ToV4.ts +3 -3
  516. package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -2
  517. package/src/shared-tree-core/messageCodecs.ts +12 -2
  518. package/src/shared-tree-core/sharedTreeCore.ts +15 -6
  519. package/src/shared-tree-core/transaction.ts +47 -25
  520. package/src/simple-tree/api/eraseSchemaDetails.ts +15 -0
  521. package/src/simple-tree/node-kinds/array/arrayNode.ts +21 -2
  522. package/src/simple-tree/node-kinds/map/mapNode.ts +24 -2
  523. package/src/text/textDomain.ts +29 -6
  524. package/src/text/textDomainFormatted.ts +351 -134
  525. package/src/text/textDomainFormattedDefault.ts +25 -16
  526. package/src/treeDataStore.ts +125 -0
  527. package/src/treeFactory.ts +11 -3
@@ -0,0 +1,61 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { type ChangesetLocalId, type FieldKindIdentifier, type RevisionInfo, type RevisionTag, type TaggedChange, type TreeChunk } from "../../core/index.js";
6
+ import { type RangeQueryResult } from "../../util/index.js";
7
+ import { type ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
8
+ import { CrossFieldTarget, type CrossFieldManager, type CrossFieldMap } from "./crossFieldQueries.js";
9
+ import type { FieldChangeHandler } from "./fieldChangeHandler.js";
10
+ import { NodeAttachState } from "./fieldChangeHandler.js";
11
+ import type { FlexFieldKind } from "./fieldKind.js";
12
+ import { type CrossFieldKeyTable, type FieldChangeMap, type FieldId, type ModularChangeset, type NoChangeConstraint, type NodeChangeset, type NodeId } from "./modularChangeTypes.js";
13
+ export declare function hasConflicts(change: ModularChangeset): boolean;
14
+ export declare function makeModularChangeset(props?: {
15
+ fieldChanges?: FieldChangeMap;
16
+ nodeChanges?: ChangeAtomIdBTree<NodeChangeset>;
17
+ nodeToParent?: ChangeAtomIdBTree<FieldId>;
18
+ nodeAliases?: ChangeAtomIdBTree<NodeId>;
19
+ crossFieldKeys?: CrossFieldKeyTable;
20
+ maxId: number;
21
+ revisions?: readonly RevisionInfo[];
22
+ constraintViolationCount?: number;
23
+ noChangeConstraint?: NoChangeConstraint;
24
+ noChangeConstraintOnRevert?: NoChangeConstraint;
25
+ builds?: ChangeAtomIdBTree<TreeChunk>;
26
+ destroys?: ChangeAtomIdBTree<number>;
27
+ refreshers?: ChangeAtomIdBTree<TreeChunk>;
28
+ }): ModularChangeset;
29
+ export interface CrossFieldTable<TFieldData> {
30
+ srcTable: CrossFieldMap<unknown>;
31
+ dstTable: CrossFieldMap<unknown>;
32
+ srcDependents: CrossFieldMap<TFieldData>;
33
+ dstDependents: CrossFieldMap<TFieldData>;
34
+ invalidatedFields: Set<TFieldData>;
35
+ }
36
+ export declare abstract class CrossFieldManagerI<T> implements CrossFieldManager {
37
+ protected readonly crossFieldTable: CrossFieldTable<T>;
38
+ private readonly currentFieldKey;
39
+ protected readonly allowInval: boolean;
40
+ constructor(crossFieldTable: CrossFieldTable<T>, currentFieldKey: T, allowInval?: boolean);
41
+ set(target: CrossFieldTarget, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number, newValue: unknown, invalidateDependents: boolean): void;
42
+ get(target: CrossFieldTarget, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number, addDependency: boolean): RangeQueryResult<unknown>;
43
+ abstract onMoveIn(id: NodeId): void;
44
+ abstract moveKey(target: CrossFieldTarget, revision: RevisionTag | undefined, id: ChangesetLocalId, count: number): void;
45
+ private getMap;
46
+ private getDependents;
47
+ }
48
+ export declare function newCrossFieldTable<T>(): CrossFieldTable<T>;
49
+ export declare function getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {
50
+ revInfos: RevisionInfo[];
51
+ maxId: ChangesetLocalId;
52
+ };
53
+ export declare function revisionInfoFromTaggedChange(taggedChange: TaggedChange<ModularChangeset>): RevisionInfo[];
54
+ export declare function getChangeHandler(fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>, kind: FieldKindIdentifier): FieldChangeHandler<unknown>;
55
+ export interface ConstraintState {
56
+ violationCount: number;
57
+ }
58
+ export declare function newConstraintState(violationCount: number): ConstraintState;
59
+ export declare function updateConstraintsForFields(fields: FieldChangeMap, parentInputAttachState: NodeAttachState, constraintState: ConstraintState, nodes: ChangeAtomIdBTree<NodeChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): void;
60
+ export declare function nodeChangeFromId(nodes: ChangeAtomIdBTree<NodeChangeset>, id: NodeId): NodeChangeset;
61
+ //# sourceMappingURL=modularChangeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modularChangeUtils.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.nodeChangeFromId = exports.updateConstraintsForFields = exports.newConstraintState = exports.getChangeHandler = exports.revisionInfoFromTaggedChange = exports.getRevInfoFromTaggedChanges = exports.newCrossFieldTable = exports.CrossFieldManagerI = exports.makeModularChangeset = exports.hasConflicts = void 0;
8
+ const internal_1 = require("@fluidframework/core-utils/internal");
9
+ const index_js_1 = require("../../core/index.js");
10
+ const index_js_2 = require("../../util/index.js");
11
+ const changeAtomIdBTree_js_1 = require("../changeAtomIdBTree.js");
12
+ const crossFieldQueries_js_1 = require("./crossFieldQueries.js");
13
+ const fieldChangeHandler_js_1 = require("./fieldChangeHandler.js");
14
+ const genericFieldKind_js_1 = require("./genericFieldKind.js");
15
+ const modularChangeTypes_js_1 = require("./modularChangeTypes.js");
16
+ function hasConflicts(change) {
17
+ return (change.constraintViolationCount ?? 0) > 0;
18
+ }
19
+ exports.hasConflicts = hasConflicts;
20
+ function makeModularChangeset(props) {
21
+ const p = props ?? { maxId: -1 };
22
+ const changeset = {
23
+ fieldChanges: p.fieldChanges ?? new Map(),
24
+ nodeChanges: p.nodeChanges ?? (0, changeAtomIdBTree_js_1.newChangeAtomIdBTree)(),
25
+ nodeToParent: p.nodeToParent ?? (0, changeAtomIdBTree_js_1.newChangeAtomIdBTree)(),
26
+ nodeAliases: p.nodeAliases ?? (0, changeAtomIdBTree_js_1.newChangeAtomIdBTree)(),
27
+ crossFieldKeys: p.crossFieldKeys ?? (0, modularChangeTypes_js_1.newCrossFieldKeyTable)(),
28
+ };
29
+ if (p.revisions !== undefined && p.revisions.length > 0) {
30
+ changeset.revisions = p.revisions;
31
+ }
32
+ if (p.maxId >= 0) {
33
+ changeset.maxId = (0, index_js_2.brand)(p.maxId);
34
+ }
35
+ if (p.constraintViolationCount !== undefined && p.constraintViolationCount > 0) {
36
+ changeset.constraintViolationCount = p.constraintViolationCount;
37
+ }
38
+ if (p.noChangeConstraint !== undefined) {
39
+ changeset.noChangeConstraint = p.noChangeConstraint;
40
+ }
41
+ if (p.noChangeConstraintOnRevert !== undefined) {
42
+ changeset.noChangeConstraintOnRevert = p.noChangeConstraintOnRevert;
43
+ }
44
+ if (p.builds !== undefined && p.builds.size > 0) {
45
+ changeset.builds = p.builds;
46
+ }
47
+ if (p.destroys !== undefined && p.destroys.size > 0) {
48
+ changeset.destroys = p.destroys;
49
+ }
50
+ if (p.refreshers !== undefined && p.refreshers.size > 0) {
51
+ changeset.refreshers = p.refreshers;
52
+ }
53
+ return changeset;
54
+ }
55
+ exports.makeModularChangeset = makeModularChangeset;
56
+ class CrossFieldManagerI {
57
+ constructor(crossFieldTable, currentFieldKey, allowInval = true) {
58
+ this.crossFieldTable = crossFieldTable;
59
+ this.currentFieldKey = currentFieldKey;
60
+ this.allowInval = allowInval;
61
+ }
62
+ set(target, revision, id, count, newValue, invalidateDependents) {
63
+ if (invalidateDependents && this.allowInval) {
64
+ const lastChangedId = id + count - 1;
65
+ let firstId = id;
66
+ while (firstId <= lastChangedId) {
67
+ const dependentEntry = (0, crossFieldQueries_js_1.getFirstFromCrossFieldMap)(this.getDependents(target), revision, firstId, lastChangedId - firstId + 1);
68
+ if (dependentEntry.value !== undefined) {
69
+ this.crossFieldTable.invalidatedFields.add(dependentEntry.value);
70
+ }
71
+ firstId = (0, index_js_2.brand)(firstId + dependentEntry.length);
72
+ }
73
+ }
74
+ (0, crossFieldQueries_js_1.setInCrossFieldMap)(this.getMap(target), revision, id, count, newValue);
75
+ }
76
+ get(target, revision, id, count, addDependency) {
77
+ if (addDependency) {
78
+ // We assume that if there is already an entry for this ID it is because
79
+ // a field handler has called compose on the same node multiple times.
80
+ // In this case we only want to update the latest version, so we overwrite the dependency.
81
+ (0, crossFieldQueries_js_1.setInCrossFieldMap)(this.getDependents(target), revision, id, count, this.currentFieldKey);
82
+ }
83
+ return (0, crossFieldQueries_js_1.getFirstFromCrossFieldMap)(this.getMap(target), revision, id, count);
84
+ }
85
+ getMap(target) {
86
+ return target === crossFieldQueries_js_1.CrossFieldTarget.Source
87
+ ? this.crossFieldTable.srcTable
88
+ : this.crossFieldTable.dstTable;
89
+ }
90
+ getDependents(target) {
91
+ return target === crossFieldQueries_js_1.CrossFieldTarget.Source
92
+ ? this.crossFieldTable.srcDependents
93
+ : this.crossFieldTable.dstDependents;
94
+ }
95
+ }
96
+ exports.CrossFieldManagerI = CrossFieldManagerI;
97
+ function newCrossFieldTable() {
98
+ return {
99
+ srcTable: (0, index_js_1.newChangeAtomIdRangeMap)(),
100
+ dstTable: (0, index_js_1.newChangeAtomIdRangeMap)(),
101
+ srcDependents: (0, index_js_1.newChangeAtomIdRangeMap)(),
102
+ dstDependents: (0, index_js_1.newChangeAtomIdRangeMap)(),
103
+ invalidatedFields: new Set(),
104
+ };
105
+ }
106
+ exports.newCrossFieldTable = newCrossFieldTable;
107
+ function getRevInfoFromTaggedChanges(changes) {
108
+ let maxId = -1;
109
+ const revInfos = [];
110
+ const revisions = new Set();
111
+ for (const taggedChange of changes) {
112
+ const change = taggedChange.change;
113
+ maxId = Math.max(change.maxId ?? -1, maxId);
114
+ const infosToAdd = revisionInfoFromTaggedChange(taggedChange);
115
+ for (const info of infosToAdd) {
116
+ if (!revisions.has(info.revision)) {
117
+ revisions.add(info.revision);
118
+ revInfos.push(info);
119
+ }
120
+ }
121
+ }
122
+ const rolledBackRevisions = [];
123
+ for (const info of revInfos) {
124
+ if (info.rollbackOf !== undefined) {
125
+ rolledBackRevisions.push(info.rollbackOf);
126
+ }
127
+ }
128
+ rolledBackRevisions.reverse();
129
+ for (const revision of rolledBackRevisions) {
130
+ if (!revisions.has(revision)) {
131
+ revInfos.push({ revision });
132
+ }
133
+ }
134
+ return { maxId: (0, index_js_2.brand)(maxId), revInfos };
135
+ }
136
+ exports.getRevInfoFromTaggedChanges = getRevInfoFromTaggedChanges;
137
+ function revisionInfoFromTaggedChange(taggedChange) {
138
+ const revInfos = [];
139
+ if (taggedChange.change.revisions !== undefined) {
140
+ revInfos.push(...taggedChange.change.revisions);
141
+ }
142
+ else if (taggedChange.revision !== undefined) {
143
+ const info = { revision: taggedChange.revision };
144
+ if (taggedChange.rollbackOf !== undefined) {
145
+ info.rollbackOf = taggedChange.rollbackOf;
146
+ }
147
+ revInfos.push(info);
148
+ }
149
+ return revInfos;
150
+ }
151
+ exports.revisionInfoFromTaggedChange = revisionInfoFromTaggedChange;
152
+ function getChangeHandler(fieldKinds, kind) {
153
+ return getFieldKind(fieldKinds, kind).changeHandler;
154
+ }
155
+ exports.getChangeHandler = getChangeHandler;
156
+ function getFieldKind(fieldKinds, kind) {
157
+ if (kind === genericFieldKind_js_1.genericFieldKind.identifier) {
158
+ return genericFieldKind_js_1.genericFieldKind;
159
+ }
160
+ const fieldKind = fieldKinds.get(kind);
161
+ (0, internal_1.assert)(fieldKind !== undefined, 0x3ad /* Unknown field kind */);
162
+ return fieldKind;
163
+ }
164
+ function newConstraintState(violationCount) {
165
+ return {
166
+ violationCount,
167
+ };
168
+ }
169
+ exports.newConstraintState = newConstraintState;
170
+ function updateConstraintsForFields(fields, parentInputAttachState, constraintState, nodes, fieldKinds) {
171
+ for (const field of fields.values()) {
172
+ const handler = getChangeHandler(fieldKinds, field.fieldKind);
173
+ for (const [nodeId, inputIndex, _outputIndex] of handler.getNestedChanges(field.change)) {
174
+ const isInputDetached = inputIndex === undefined;
175
+ const inputAttachState = parentInputAttachState === fieldChangeHandler_js_1.NodeAttachState.Detached || isInputDetached
176
+ ? fieldChangeHandler_js_1.NodeAttachState.Detached
177
+ : fieldChangeHandler_js_1.NodeAttachState.Attached;
178
+ updateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds);
179
+ }
180
+ }
181
+ }
182
+ exports.updateConstraintsForFields = updateConstraintsForFields;
183
+ function updateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds) {
184
+ const node = nodes.get([nodeId.revision, nodeId.localId]) ?? (0, internal_1.fail)(0xb24 /* Unknown node ID */);
185
+ if (node.nodeExistsConstraint !== undefined) {
186
+ const isNowViolated = inputAttachState === fieldChangeHandler_js_1.NodeAttachState.Detached;
187
+ if (node.nodeExistsConstraint.violated !== isNowViolated) {
188
+ node.nodeExistsConstraint = {
189
+ ...node.nodeExistsConstraint,
190
+ violated: isNowViolated,
191
+ };
192
+ constraintState.violationCount += isNowViolated ? 1 : -1;
193
+ }
194
+ }
195
+ if (node.fieldChanges !== undefined) {
196
+ updateConstraintsForFields(node.fieldChanges, inputAttachState, constraintState, nodes, fieldKinds);
197
+ }
198
+ }
199
+ function nodeChangeFromId(nodes, id) {
200
+ const node = (0, changeAtomIdBTree_js_1.getFromChangeAtomIdMap)(nodes, id);
201
+ (0, internal_1.assert)(node !== undefined, 0x9ca /* Unknown node ID */);
202
+ return node;
203
+ }
204
+ exports.nodeChangeFromId = nodeChangeFromId;
205
+ //# sourceMappingURL=modularChangeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modularChangeUtils.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeUtils.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, fail } from \"@fluidframework/core-utils/internal\";\nimport {\n\tnewChangeAtomIdRangeMap,\n\ttype ChangesetLocalId,\n\ttype FieldKey,\n\ttype FieldKindIdentifier,\n\ttype RevisionInfo,\n\ttype RevisionTag,\n\ttype TaggedChange,\n\ttype TreeChunk,\n} from \"../../core/index.js\";\nimport { brand, type Mutable, type RangeQueryResult } from \"../../util/index.js\";\nimport {\n\tgetFromChangeAtomIdMap,\n\tnewChangeAtomIdBTree,\n\ttype ChangeAtomIdBTree,\n} from \"../changeAtomIdBTree.js\";\nimport {\n\tCrossFieldTarget,\n\tgetFirstFromCrossFieldMap,\n\tsetInCrossFieldMap,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n} from \"./crossFieldQueries.js\";\nimport type { FieldChangeHandler } from \"./fieldChangeHandler.js\";\nimport { NodeAttachState } from \"./fieldChangeHandler.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport { genericFieldKind } from \"./genericFieldKind.js\";\nimport {\n\tnewCrossFieldKeyTable,\n\ttype CrossFieldKeyTable,\n\ttype FieldChange,\n\ttype FieldChangeMap,\n\ttype FieldId,\n\ttype ModularChangeset,\n\ttype NoChangeConstraint,\n\ttype NodeChangeset,\n\ttype NodeId,\n} from \"./modularChangeTypes.js\";\n\nexport function hasConflicts(change: ModularChangeset): boolean {\n\treturn (change.constraintViolationCount ?? 0) > 0;\n}\n\nexport function makeModularChangeset(props?: {\n\tfieldChanges?: FieldChangeMap;\n\tnodeChanges?: ChangeAtomIdBTree<NodeChangeset>;\n\tnodeToParent?: ChangeAtomIdBTree<FieldId>;\n\tnodeAliases?: ChangeAtomIdBTree<NodeId>;\n\tcrossFieldKeys?: CrossFieldKeyTable;\n\tmaxId: number;\n\trevisions?: readonly RevisionInfo[];\n\tconstraintViolationCount?: number;\n\tnoChangeConstraint?: NoChangeConstraint;\n\tnoChangeConstraintOnRevert?: NoChangeConstraint;\n\tbuilds?: ChangeAtomIdBTree<TreeChunk>;\n\tdestroys?: ChangeAtomIdBTree<number>;\n\trefreshers?: ChangeAtomIdBTree<TreeChunk>;\n}): ModularChangeset {\n\tconst p = props ?? { maxId: -1 };\n\tconst changeset: Mutable<ModularChangeset> = {\n\t\tfieldChanges: p.fieldChanges ?? new Map<FieldKey, FieldChange>(),\n\t\tnodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),\n\t\tnodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),\n\t\tnodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),\n\t\tcrossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),\n\t};\n\n\tif (p.revisions !== undefined && p.revisions.length > 0) {\n\t\tchangeset.revisions = p.revisions;\n\t}\n\tif (p.maxId >= 0) {\n\t\tchangeset.maxId = brand(p.maxId);\n\t}\n\tif (p.constraintViolationCount !== undefined && p.constraintViolationCount > 0) {\n\t\tchangeset.constraintViolationCount = p.constraintViolationCount;\n\t}\n\tif (p.noChangeConstraint !== undefined) {\n\t\tchangeset.noChangeConstraint = p.noChangeConstraint;\n\t}\n\tif (p.noChangeConstraintOnRevert !== undefined) {\n\t\tchangeset.noChangeConstraintOnRevert = p.noChangeConstraintOnRevert;\n\t}\n\tif (p.builds !== undefined && p.builds.size > 0) {\n\t\tchangeset.builds = p.builds;\n\t}\n\tif (p.destroys !== undefined && p.destroys.size > 0) {\n\t\tchangeset.destroys = p.destroys;\n\t}\n\tif (p.refreshers !== undefined && p.refreshers.size > 0) {\n\t\tchangeset.refreshers = p.refreshers;\n\t}\n\treturn changeset;\n}\n\n// TODO: TFieldData could instead just be a numeric ID generated by the CrossFieldTable\n// The CrossFieldTable could have a generic field ID to context table\nexport interface CrossFieldTable<TFieldData> {\n\tsrcTable: CrossFieldMap<unknown>;\n\tdstTable: CrossFieldMap<unknown>;\n\tsrcDependents: CrossFieldMap<TFieldData>;\n\tdstDependents: CrossFieldMap<TFieldData>;\n\tinvalidatedFields: Set<TFieldData>;\n}\n\nexport abstract class CrossFieldManagerI<T> implements CrossFieldManager {\n\tpublic constructor(\n\t\tprotected readonly crossFieldTable: CrossFieldTable<T>,\n\t\tprivate readonly currentFieldKey: T,\n\t\tprotected readonly allowInval = true,\n\t) {}\n\n\tpublic set(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\tnewValue: unknown,\n\t\tinvalidateDependents: boolean,\n\t): void {\n\t\tif (invalidateDependents && this.allowInval) {\n\t\t\tconst lastChangedId = (id as number) + count - 1;\n\t\t\tlet firstId = id;\n\t\t\twhile (firstId <= lastChangedId) {\n\t\t\t\tconst dependentEntry = getFirstFromCrossFieldMap(\n\t\t\t\t\tthis.getDependents(target),\n\t\t\t\t\trevision,\n\t\t\t\t\tfirstId,\n\t\t\t\t\tlastChangedId - firstId + 1,\n\t\t\t\t);\n\t\t\t\tif (dependentEntry.value !== undefined) {\n\t\t\t\t\tthis.crossFieldTable.invalidatedFields.add(dependentEntry.value);\n\t\t\t\t}\n\n\t\t\t\tfirstId = brand(firstId + dependentEntry.length);\n\t\t\t}\n\t\t}\n\t\tsetInCrossFieldMap(this.getMap(target), revision, id, count, newValue);\n\t}\n\n\tpublic get(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t\taddDependency: boolean,\n\t): RangeQueryResult<unknown> {\n\t\tif (addDependency) {\n\t\t\t// We assume that if there is already an entry for this ID it is because\n\t\t\t// a field handler has called compose on the same node multiple times.\n\t\t\t// In this case we only want to update the latest version, so we overwrite the dependency.\n\t\t\tsetInCrossFieldMap(\n\t\t\t\tthis.getDependents(target),\n\t\t\t\trevision,\n\t\t\t\tid,\n\t\t\t\tcount,\n\t\t\t\tthis.currentFieldKey,\n\t\t\t);\n\t\t}\n\t\treturn getFirstFromCrossFieldMap(this.getMap(target), revision, id, count);\n\t}\n\n\tpublic abstract onMoveIn(id: NodeId): void;\n\n\tpublic abstract moveKey(\n\t\ttarget: CrossFieldTarget,\n\t\trevision: RevisionTag | undefined,\n\t\tid: ChangesetLocalId,\n\t\tcount: number,\n\t): void;\n\n\tprivate getMap(target: CrossFieldTarget): CrossFieldMap<unknown> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcTable\n\t\t\t: this.crossFieldTable.dstTable;\n\t}\n\n\tprivate getDependents(target: CrossFieldTarget): CrossFieldMap<T> {\n\t\treturn target === CrossFieldTarget.Source\n\t\t\t? this.crossFieldTable.srcDependents\n\t\t\t: this.crossFieldTable.dstDependents;\n\t}\n}\n\nexport function newCrossFieldTable<T>(): CrossFieldTable<T> {\n\treturn {\n\t\tsrcTable: newChangeAtomIdRangeMap(),\n\t\tdstTable: newChangeAtomIdRangeMap(),\n\t\tsrcDependents: newChangeAtomIdRangeMap(),\n\t\tdstDependents: newChangeAtomIdRangeMap(),\n\t\tinvalidatedFields: new Set(),\n\t};\n}\n\nexport function getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {\n\trevInfos: RevisionInfo[];\n\tmaxId: ChangesetLocalId;\n} {\n\tlet maxId = -1;\n\tconst revInfos: RevisionInfo[] = [];\n\tconst revisions = new Set<RevisionTag>();\n\tfor (const taggedChange of changes) {\n\t\tconst change = taggedChange.change;\n\t\tmaxId = Math.max(change.maxId ?? -1, maxId);\n\t\tconst infosToAdd = revisionInfoFromTaggedChange(taggedChange);\n\t\tfor (const info of infosToAdd) {\n\t\t\tif (!revisions.has(info.revision)) {\n\t\t\t\trevisions.add(info.revision);\n\t\t\t\trevInfos.push(info);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst rolledBackRevisions: RevisionTag[] = [];\n\tfor (const info of revInfos) {\n\t\tif (info.rollbackOf !== undefined) {\n\t\t\trolledBackRevisions.push(info.rollbackOf);\n\t\t}\n\t}\n\n\trolledBackRevisions.reverse();\n\tfor (const revision of rolledBackRevisions) {\n\t\tif (!revisions.has(revision)) {\n\t\t\trevInfos.push({ revision });\n\t\t}\n\t}\n\n\treturn { maxId: brand(maxId), revInfos };\n}\n\nexport function revisionInfoFromTaggedChange(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n): RevisionInfo[] {\n\tconst revInfos: RevisionInfo[] = [];\n\tif (taggedChange.change.revisions !== undefined) {\n\t\trevInfos.push(...taggedChange.change.revisions);\n\t} else if (taggedChange.revision !== undefined) {\n\t\tconst info: Mutable<RevisionInfo> = { revision: taggedChange.revision };\n\t\tif (taggedChange.rollbackOf !== undefined) {\n\t\t\tinfo.rollbackOf = taggedChange.rollbackOf;\n\t\t}\n\t\trevInfos.push(info);\n\t}\n\treturn revInfos;\n}\n\nexport function getChangeHandler(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\treturn getFieldKind(fieldKinds, kind).changeHandler;\n}\n\nfunction getFieldKind(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FlexFieldKind {\n\tif (kind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind;\n\t}\n\tconst fieldKind = fieldKinds.get(kind);\n\tassert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n\treturn fieldKind;\n}\n\nexport interface ConstraintState {\n\tviolationCount: number;\n}\n\nexport function newConstraintState(violationCount: number): ConstraintState {\n\treturn {\n\t\tviolationCount,\n\t};\n}\n\nexport function updateConstraintsForFields(\n\tfields: FieldChangeMap,\n\tparentInputAttachState: NodeAttachState,\n\tconstraintState: ConstraintState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tfor (const field of fields.values()) {\n\t\tconst handler = getChangeHandler(fieldKinds, field.fieldKind);\n\t\tfor (const [nodeId, inputIndex, _outputIndex] of handler.getNestedChanges(field.change)) {\n\t\t\tconst isInputDetached = inputIndex === undefined;\n\t\t\tconst inputAttachState =\n\t\t\t\tparentInputAttachState === NodeAttachState.Detached || isInputDetached\n\t\t\t\t\t? NodeAttachState.Detached\n\t\t\t\t\t: NodeAttachState.Attached;\n\n\t\t\tupdateConstraintsForNode(nodeId, inputAttachState, nodes, constraintState, fieldKinds);\n\t\t}\n\t}\n}\n\nfunction updateConstraintsForNode(\n\tnodeId: NodeId,\n\tinputAttachState: NodeAttachState,\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tconstraintState: ConstraintState,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): void {\n\tconst node =\n\t\tnodes.get([nodeId.revision, nodeId.localId]) ?? fail(0xb24 /* Unknown node ID */);\n\tif (node.nodeExistsConstraint !== undefined) {\n\t\tconst isNowViolated = inputAttachState === NodeAttachState.Detached;\n\t\tif (node.nodeExistsConstraint.violated !== isNowViolated) {\n\t\t\tnode.nodeExistsConstraint = {\n\t\t\t\t...node.nodeExistsConstraint,\n\t\t\t\tviolated: isNowViolated,\n\t\t\t};\n\t\t\tconstraintState.violationCount += isNowViolated ? 1 : -1;\n\t\t}\n\t}\n\n\tif (node.fieldChanges !== undefined) {\n\t\tupdateConstraintsForFields(\n\t\t\tnode.fieldChanges,\n\t\t\tinputAttachState,\n\t\t\tconstraintState,\n\t\t\tnodes,\n\t\t\tfieldKinds,\n\t\t);\n\t}\n}\n\nexport function nodeChangeFromId(\n\tnodes: ChangeAtomIdBTree<NodeChangeset>,\n\tid: NodeId,\n): NodeChangeset {\n\tconst node = getFromChangeAtomIdMap(nodes, id);\n\tassert(node !== undefined, 0x9ca /* Unknown node ID */);\n\treturn node;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { FieldKindIdentifier } from "../../core/index.js";
6
+ import { type ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
7
+ import type { FlexFieldKind } from "./fieldKind.js";
8
+ import type { FieldChangeMap, NodeChangeset } from "./modularChangeTypes.js";
9
+ export declare function pruneFieldMap(changeset: FieldChangeMap | undefined, nodeMap: ChangeAtomIdBTree<NodeChangeset>, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): FieldChangeMap | undefined;
10
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAU,MAAM,yBAAyB,CAAC;AAGrF,wBAAgB,aAAa,CAC5B,SAAS,EAAE,cAAc,GAAG,SAAS,EACrC,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,EACzC,UAAU,EAAE,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,GACzD,cAAc,GAAG,SAAS,CAmB5B"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.pruneFieldMap = void 0;
8
+ const index_js_1 = require("../../util/index.js");
9
+ const changeAtomIdBTree_js_1 = require("../changeAtomIdBTree.js");
10
+ const modularChangeUtils_js_1 = require("./modularChangeUtils.js");
11
+ function pruneFieldMap(changeset, nodeMap, fieldKinds) {
12
+ if (changeset === undefined) {
13
+ return undefined;
14
+ }
15
+ const prunedChangeset = new Map();
16
+ for (const [field, fieldChange] of changeset) {
17
+ const handler = (0, modularChangeUtils_js_1.getChangeHandler)(fieldKinds, fieldChange.fieldKind);
18
+ const prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) => pruneNodeChange(nodeId, nodeMap, fieldKinds));
19
+ if (!handler.isEmpty(prunedFieldChangeset)) {
20
+ prunedChangeset.set(field, { ...fieldChange, change: (0, index_js_1.brand)(prunedFieldChangeset) });
21
+ }
22
+ }
23
+ return prunedChangeset.size > 0 ? prunedChangeset : undefined;
24
+ }
25
+ exports.pruneFieldMap = pruneFieldMap;
26
+ function pruneNodeChange(nodeId, nodeMap, fieldKinds) {
27
+ const changeset = (0, modularChangeUtils_js_1.nodeChangeFromId)(nodeMap, nodeId);
28
+ const prunedFields = changeset.fieldChanges === undefined
29
+ ? undefined
30
+ : pruneFieldMap(changeset.fieldChanges, nodeMap, fieldKinds);
31
+ const prunedChange = { ...changeset, fieldChanges: prunedFields };
32
+ if (prunedChange.fieldChanges === undefined) {
33
+ delete prunedChange.fieldChanges;
34
+ }
35
+ if (isEmptyNodeChangeset(prunedChange)) {
36
+ nodeMap.delete([nodeId.revision, nodeId.localId]);
37
+ return undefined;
38
+ }
39
+ else {
40
+ (0, changeAtomIdBTree_js_1.setInChangeAtomIdMap)(nodeMap, nodeId, prunedChange);
41
+ return nodeId;
42
+ }
43
+ }
44
+ function isEmptyNodeChangeset(change) {
45
+ return (change.fieldChanges === undefined &&
46
+ change.nodeExistsConstraint === undefined &&
47
+ change.nodeExistsConstraintOnRevert === undefined);
48
+ }
49
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/prune.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kDAA4C;AAC5C,kEAAuF;AAGvF,mEAA6E;AAE7E,SAAgB,aAAa,CAC5B,SAAqC,EACrC,OAAyC,EACzC,UAA2D;IAE3D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,eAAe,GAAmB,IAAI,GAAG,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,wCAAgB,EAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAEpE,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjF,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAC5C,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC5C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,IAAA,gBAAK,EAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAvBD,sCAuBC;AAED,SAAS,eAAe,CACvB,MAAc,EACd,OAAyC,EACzC,UAA2D;IAE3D,MAAM,SAAS,GAAG,IAAA,wCAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,YAAY,GACjB,SAAS,CAAC,YAAY,KAAK,SAAS;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IAClE,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,IAAI,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC;IAClB,CAAC;SAAM,CAAC;QACP,IAAA,2CAAoB,EAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IACf,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB;IAClD,OAAO,CACN,MAAM,CAAC,YAAY,KAAK,SAAS;QACjC,MAAM,CAAC,oBAAoB,KAAK,SAAS;QACzC,MAAM,CAAC,4BAA4B,KAAK,SAAS,CACjD,CAAC;AACH,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { FieldKindIdentifier } from \"../../core/index.js\";\nimport { brand } from \"../../util/index.js\";\nimport { setInChangeAtomIdMap, type ChangeAtomIdBTree } from \"../changeAtomIdBTree.js\";\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport type { FieldChangeMap, NodeChangeset, NodeId } from \"./modularChangeTypes.js\";\nimport { getChangeHandler, nodeChangeFromId } from \"./modularChangeUtils.js\";\n\nexport function pruneFieldMap(\n\tchangeset: FieldChangeMap | undefined,\n\tnodeMap: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): FieldChangeMap | undefined {\n\tif (changeset === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst prunedChangeset: FieldChangeMap = new Map();\n\tfor (const [field, fieldChange] of changeset) {\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\n\t\tconst prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) =>\n\t\t\tpruneNodeChange(nodeId, nodeMap, fieldKinds),\n\t\t);\n\n\t\tif (!handler.isEmpty(prunedFieldChangeset)) {\n\t\t\tprunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n\t\t}\n\t}\n\n\treturn prunedChangeset.size > 0 ? prunedChangeset : undefined;\n}\n\nfunction pruneNodeChange(\n\tnodeId: NodeId,\n\tnodeMap: ChangeAtomIdBTree<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): NodeId | undefined {\n\tconst changeset = nodeChangeFromId(nodeMap, nodeId);\n\tconst prunedFields =\n\t\tchangeset.fieldChanges === undefined\n\t\t\t? undefined\n\t\t\t: pruneFieldMap(changeset.fieldChanges, nodeMap, fieldKinds);\n\n\tconst prunedChange = { ...changeset, fieldChanges: prunedFields };\n\tif (prunedChange.fieldChanges === undefined) {\n\t\tdelete prunedChange.fieldChanges;\n\t}\n\n\tif (isEmptyNodeChangeset(prunedChange)) {\n\t\tnodeMap.delete([nodeId.revision, nodeId.localId]);\n\t\treturn undefined;\n\t} else {\n\t\tsetInChangeAtomIdMap(nodeMap, nodeId, prunedChange);\n\t\treturn nodeId;\n\t}\n}\n\nfunction isEmptyNodeChangeset(change: NodeChangeset): boolean {\n\treturn (\n\t\tchange.fieldChanges === undefined &&\n\t\tchange.nodeExistsConstraint === undefined &&\n\t\tchange.nodeExistsConstraintOnRevert === undefined\n\t);\n}\n"]}
@@ -5,8 +5,8 @@
5
5
  import type { TAnySchema } from "@sinclair/typebox";
6
6
  import type { IJsonCodec, JsonCodecPart } from "../../codec/index.js";
7
7
  import type { RevisionTagSchema, ChangeEncodingContext, RevisionTag } from "../../core/index.js";
8
- import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
8
+ import type { FieldChangeEncodingContext, FieldChangeDecodingContext } from "../modular-schema/index.js";
9
9
  import { EncodedOptionalChangeset } from "./optionalFieldChangeFormatV2.js";
10
10
  import type { OptionalChangeset } from "./optionalFieldChangeTypes.js";
11
- export declare function makeOptionalFieldCodec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<OptionalChangeset, EncodedOptionalChangeset<TAnySchema>, EncodedOptionalChangeset<TAnySchema>, FieldChangeEncodingContext>;
11
+ export declare function makeOptionalFieldCodec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<OptionalChangeset, EncodedOptionalChangeset<TAnySchema>, EncodedOptionalChangeset<TAnySchema>, FieldChangeEncodingContext, FieldChangeDecodingContext>;
12
12
  //# sourceMappingURL=optionalFieldCodecV2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optionalFieldCodecV2.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecV2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EACX,iBAAiB,EAEjB,qBAAqB,EACrB,WAAW,EACX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EACX,0BAA0B,EAE1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,wBAAwB,EAAqB,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,+BAA+B,CAAC;AA0B5F,wBAAgB,sBAAsB,CACrC,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,UAAU,CACZ,iBAAiB,EACjB,wBAAwB,CAAC,UAAU,CAAC,EACpC,wBAAwB,CAAC,UAAU,CAAC,EACpC,0BAA0B,CAC1B,CAqEA"}
1
+ {"version":3,"file":"optionalFieldCodecV2.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecV2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EACX,iBAAiB,EAEjB,qBAAqB,EACrB,WAAW,EACX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EACX,0BAA0B,EAC1B,0BAA0B,EAE1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,wBAAwB,EAAqB,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,+BAA+B,CAAC;AA0B5F,wBAAgB,sBAAsB,CACrC,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,UAAU,CACZ,iBAAiB,EACjB,wBAAwB,CAAC,UAAU,CAAC,EACpC,wBAAwB,CAAC,UAAU,CAAC,EACpC,0BAA0B,EAC1B,0BAA0B,CAC1B,CAqEA"}
@@ -1 +1 @@
1
- {"version":3,"file":"optionalFieldCodecV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecV2.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 type { TAnySchema } from \"@sinclair/typebox\";\n\nimport type { IJsonCodec, JsonCodecPart } from \"../../codec/index.js\";\nimport type {\n\tRevisionTagSchema,\n\tChangeAtomId,\n\tChangeEncodingContext,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport type { Mutable } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport type {\n\tFieldChangeEncodingContext,\n\tEncodedChangeAtomId,\n} from \"../modular-schema/index.js\";\nimport { EncodedNodeChangeset } from \"../modular-schema/index.js\";\n\nimport { EncodedOptionalChangeset, EncodedRegisterId } from \"./optionalFieldChangeFormatV2.js\";\nimport type { OptionalChangeset, RegisterId, Replace } from \"./optionalFieldChangeTypes.js\";\n\nfunction makeRegisterIdCodec(\n\tchangeAtomIdCodec: JsonCodecPart<\n\t\tChangeAtomId,\n\t\ttypeof EncodedChangeAtomId,\n\t\tChangeEncodingContext\n\t>,\n): JsonCodecPart<RegisterId, typeof EncodedRegisterId, ChangeEncodingContext> {\n\treturn {\n\t\tencode: (registerId: RegisterId, context: ChangeEncodingContext) => {\n\t\t\tif (registerId === \"self\") {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn changeAtomIdCodec.encode(registerId, context);\n\t\t},\n\t\tdecode: (registerId: EncodedRegisterId, context: ChangeEncodingContext) => {\n\t\t\tif (registerId === null) {\n\t\t\t\treturn \"self\";\n\t\t\t}\n\t\t\treturn changeAtomIdCodec.decode(registerId, context);\n\t\t},\n\t\tencodedSchema: EncodedRegisterId,\n\t};\n}\n\nexport function makeOptionalFieldCodec(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): IJsonCodec<\n\tOptionalChangeset,\n\tEncodedOptionalChangeset<TAnySchema>,\n\tEncodedOptionalChangeset<TAnySchema>,\n\tFieldChangeEncodingContext\n> {\n\tconst changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n\tconst registerIdCodec = makeRegisterIdCodec(changeAtomIdCodec);\n\n\treturn {\n\t\tencode: (change: OptionalChangeset, context: FieldChangeEncodingContext) => {\n\t\t\tconst encoded: EncodedOptionalChangeset<TAnySchema> = {};\n\n\t\t\tif (change.moves.length > 0) {\n\t\t\t\tencoded.m = change.moves.map(([src, dst]) => [\n\t\t\t\t\tchangeAtomIdCodec.encode(src, context.baseContext),\n\t\t\t\t\tchangeAtomIdCodec.encode(dst, context.baseContext),\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif (change.valueReplace !== undefined) {\n\t\t\t\tencoded.r = {\n\t\t\t\t\te: change.valueReplace.isEmpty,\n\t\t\t\t\td: changeAtomIdCodec.encode(change.valueReplace.dst, context.baseContext),\n\t\t\t\t};\n\t\t\t\tif (change.valueReplace.src !== undefined) {\n\t\t\t\t\tencoded.r.s = registerIdCodec.encode(change.valueReplace.src, context.baseContext);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (change.childChanges.length > 0) {\n\t\t\t\tencoded.c = [];\n\t\t\t\tfor (const [id, childChange] of change.childChanges) {\n\t\t\t\t\tencoded.c.push([\n\t\t\t\t\t\tregisterIdCodec.encode(id, context.baseContext),\n\t\t\t\t\t\tcontext.encodeNode(childChange),\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn encoded;\n\t\t},\n\n\t\tdecode: (\n\t\t\tencoded: EncodedOptionalChangeset<TAnySchema>,\n\t\t\tcontext: FieldChangeEncodingContext,\n\t\t) => {\n\t\t\tconst decoded: Mutable<OptionalChangeset> = {\n\t\t\t\tmoves:\n\t\t\t\t\tencoded.m?.map(([encodedSrc, encodedDst]) => [\n\t\t\t\t\t\tchangeAtomIdCodec.decode(encodedSrc, context.baseContext),\n\t\t\t\t\t\tchangeAtomIdCodec.decode(encodedDst, context.baseContext),\n\t\t\t\t\t]) ?? [],\n\t\t\t\tchildChanges:\n\t\t\t\t\tencoded.c?.map(([id, encodedChange]) => [\n\t\t\t\t\t\tregisterIdCodec.decode(id, context.baseContext),\n\t\t\t\t\t\tcontext.decodeNode(encodedChange),\n\t\t\t\t\t]) ?? [],\n\t\t\t};\n\n\t\t\tif (encoded.r !== undefined) {\n\t\t\t\tconst replace: Mutable<Replace> = {\n\t\t\t\t\tisEmpty: encoded.r.e,\n\t\t\t\t\tdst: changeAtomIdCodec.decode(encoded.r.d, context.baseContext),\n\t\t\t\t};\n\t\t\t\tif (encoded.r.s !== undefined) {\n\t\t\t\t\treplace.src = registerIdCodec.decode(encoded.r.s, context.baseContext);\n\t\t\t\t}\n\t\t\t\tdecoded.valueReplace = replace;\n\t\t\t}\n\t\t\treturn decoded;\n\t\t},\n\t\tencodedSchema: EncodedOptionalChangeset(EncodedNodeChangeset),\n\t};\n}\n"]}
1
+ {"version":3,"file":"optionalFieldCodecV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecV2.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 type { TAnySchema } from \"@sinclair/typebox\";\n\nimport type { IJsonCodec, JsonCodecPart } from \"../../codec/index.js\";\nimport type {\n\tRevisionTagSchema,\n\tChangeAtomId,\n\tChangeEncodingContext,\n\tRevisionTag,\n} from \"../../core/index.js\";\nimport type { Mutable } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport type {\n\tFieldChangeEncodingContext,\n\tFieldChangeDecodingContext,\n\tEncodedChangeAtomId,\n} from \"../modular-schema/index.js\";\nimport { EncodedNodeChangeset } from \"../modular-schema/index.js\";\n\nimport { EncodedOptionalChangeset, EncodedRegisterId } from \"./optionalFieldChangeFormatV2.js\";\nimport type { OptionalChangeset, RegisterId, Replace } from \"./optionalFieldChangeTypes.js\";\n\nfunction makeRegisterIdCodec(\n\tchangeAtomIdCodec: JsonCodecPart<\n\t\tChangeAtomId,\n\t\ttypeof EncodedChangeAtomId,\n\t\tChangeEncodingContext\n\t>,\n): JsonCodecPart<RegisterId, typeof EncodedRegisterId, ChangeEncodingContext> {\n\treturn {\n\t\tencode: (registerId: RegisterId, context: ChangeEncodingContext) => {\n\t\t\tif (registerId === \"self\") {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn changeAtomIdCodec.encode(registerId, context);\n\t\t},\n\t\tdecode: (registerId: EncodedRegisterId, context: ChangeEncodingContext) => {\n\t\t\tif (registerId === null) {\n\t\t\t\treturn \"self\";\n\t\t\t}\n\t\t\treturn changeAtomIdCodec.decode(registerId, context);\n\t\t},\n\t\tencodedSchema: EncodedRegisterId,\n\t};\n}\n\nexport function makeOptionalFieldCodec(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): IJsonCodec<\n\tOptionalChangeset,\n\tEncodedOptionalChangeset<TAnySchema>,\n\tEncodedOptionalChangeset<TAnySchema>,\n\tFieldChangeEncodingContext,\n\tFieldChangeDecodingContext\n> {\n\tconst changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n\tconst registerIdCodec = makeRegisterIdCodec(changeAtomIdCodec);\n\n\treturn {\n\t\tencode: (change: OptionalChangeset, context: FieldChangeEncodingContext) => {\n\t\t\tconst encoded: EncodedOptionalChangeset<TAnySchema> = {};\n\n\t\t\tif (change.moves.length > 0) {\n\t\t\t\tencoded.m = change.moves.map(([src, dst]) => [\n\t\t\t\t\tchangeAtomIdCodec.encode(src, context.baseContext),\n\t\t\t\t\tchangeAtomIdCodec.encode(dst, context.baseContext),\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tif (change.valueReplace !== undefined) {\n\t\t\t\tencoded.r = {\n\t\t\t\t\te: change.valueReplace.isEmpty,\n\t\t\t\t\td: changeAtomIdCodec.encode(change.valueReplace.dst, context.baseContext),\n\t\t\t\t};\n\t\t\t\tif (change.valueReplace.src !== undefined) {\n\t\t\t\t\tencoded.r.s = registerIdCodec.encode(change.valueReplace.src, context.baseContext);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (change.childChanges.length > 0) {\n\t\t\t\tencoded.c = [];\n\t\t\t\tfor (const [id, childChange] of change.childChanges) {\n\t\t\t\t\tencoded.c.push([\n\t\t\t\t\t\tregisterIdCodec.encode(id, context.baseContext),\n\t\t\t\t\t\tcontext.encodeNode(childChange),\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn encoded;\n\t\t},\n\n\t\tdecode: (\n\t\t\tencoded: EncodedOptionalChangeset<TAnySchema>,\n\t\t\tcontext: FieldChangeDecodingContext,\n\t\t) => {\n\t\t\tconst decoded: Mutable<OptionalChangeset> = {\n\t\t\t\tmoves:\n\t\t\t\t\tencoded.m?.map(([encodedSrc, encodedDst]) => [\n\t\t\t\t\t\tchangeAtomIdCodec.decode(encodedSrc, context.baseContext),\n\t\t\t\t\t\tchangeAtomIdCodec.decode(encodedDst, context.baseContext),\n\t\t\t\t\t]) ?? [],\n\t\t\t\tchildChanges:\n\t\t\t\t\tencoded.c?.map(([id, encodedChange]) => [\n\t\t\t\t\t\tregisterIdCodec.decode(id, context.baseContext),\n\t\t\t\t\t\tcontext.decodeNode(encodedChange),\n\t\t\t\t\t]) ?? [],\n\t\t\t};\n\n\t\t\tif (encoded.r !== undefined) {\n\t\t\t\tconst replace: Mutable<Replace> = {\n\t\t\t\t\tisEmpty: encoded.r.e,\n\t\t\t\t\tdst: changeAtomIdCodec.decode(encoded.r.d, context.baseContext),\n\t\t\t\t};\n\t\t\t\tif (encoded.r.s !== undefined) {\n\t\t\t\t\treplace.src = registerIdCodec.decode(encoded.r.s, context.baseContext);\n\t\t\t\t}\n\t\t\t\tdecoded.valueReplace = replace;\n\t\t\t}\n\t\t\treturn decoded;\n\t\t},\n\t\tencodedSchema: EncodedOptionalChangeset(EncodedNodeChangeset),\n\t};\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { type ICodecFamily, type JsonCodecPart } from "../../codec/index.js";
6
6
  import type { ChangeEncodingContext, RevisionTag, RevisionTagSchema } from "../../core/index.js";
7
- import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
7
+ import type { FieldChangeEncodingContext, FieldChangeDecodingContext } from "../modular-schema/index.js";
8
8
  import type { OptionalChangeset } from "./optionalFieldChangeTypes.js";
9
- export declare const makeOptionalFieldCodecFamily: (revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>) => ICodecFamily<OptionalChangeset, FieldChangeEncodingContext>;
9
+ export declare const makeOptionalFieldCodecFamily: (revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>) => ICodecFamily<OptionalChangeset, FieldChangeEncodingContext, FieldChangeDecodingContext>;
10
10
  //# sourceMappingURL=optionalFieldCodecs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optionalFieldCodecs.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAC9F,OAAO,KAAK,EACX,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,eAAO,MAAM,4BAA4B,qBACtB,cACjB,WAAW,EACX,wBAAwB,EACxB,qBAAqB,CACrB,KACC,aAAa,iBAAiB,EAAE,0BAA0B,CACP,CAAC"}
1
+ {"version":3,"file":"optionalFieldCodecs.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAC9F,OAAO,KAAK,EACX,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACX,0BAA0B,EAC1B,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,eAAO,MAAM,4BAA4B,qBACtB,cACjB,WAAW,EACX,wBAAwB,EACxB,qBAAqB,CACrB,KACC,aAAa,iBAAiB,EAAE,0BAA0B,EAAE,0BAA0B,CACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"optionalFieldCodecs.js","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecs.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mDAA8F;AAS9F,uEAAkF;AAE3E,MAAM,4BAA4B,GAAG,CAC3C,gBAIC,EAC6D,EAAE,CAChE,IAAA,0BAAe,EAAC,CAAC,CAAC,CAAC,EAAE,IAAA,gDAAW,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAP1C,QAAA,4BAA4B,gCAOc","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ICodecFamily, type JsonCodecPart, makeCodecFamily } from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tRevisionTag,\n\tRevisionTagSchema,\n} from \"../../core/index.js\";\nimport type { FieldChangeEncodingContext } from \"../modular-schema/index.js\";\n\nimport type { OptionalChangeset } from \"./optionalFieldChangeTypes.js\";\nimport { makeOptionalFieldCodec as makeV2Codec } from \"./optionalFieldCodecV2.js\";\n\nexport const makeOptionalFieldCodecFamily = (\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): ICodecFamily<OptionalChangeset, FieldChangeEncodingContext> =>\n\tmakeCodecFamily([[2, makeV2Codec(revisionTagCodec)]]);\n"]}
1
+ {"version":3,"file":"optionalFieldCodecs.js","sourceRoot":"","sources":["../../../src/feature-libraries/optional-field/optionalFieldCodecs.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mDAA8F;AAY9F,uEAAkF;AAE3E,MAAM,4BAA4B,GAAG,CAC3C,gBAIC,EACyF,EAAE,CAC5F,IAAA,0BAAe,EAAC,CAAC,CAAC,CAAC,EAAE,IAAA,gDAAW,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAP1C,QAAA,4BAA4B,gCAOc","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { type ICodecFamily, type JsonCodecPart, makeCodecFamily } from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tRevisionTag,\n\tRevisionTagSchema,\n} from \"../../core/index.js\";\nimport type {\n\tFieldChangeEncodingContext,\n\tFieldChangeDecodingContext,\n} from \"../modular-schema/index.js\";\n\nimport type { OptionalChangeset } from \"./optionalFieldChangeTypes.js\";\nimport { makeOptionalFieldCodec as makeV2Codec } from \"./optionalFieldCodecV2.js\";\n\nexport const makeOptionalFieldCodecFamily = (\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): ICodecFamily<OptionalChangeset, FieldChangeEncodingContext, FieldChangeDecodingContext> =>\n\tmakeCodecFamily([[2, makeV2Codec(revisionTagCodec)]]);\n"]}
@@ -5,10 +5,10 @@
5
5
  import { type IJsonCodec, type JsonCodecPart } from "../../codec/index.js";
6
6
  import type { ChangeEncodingContext, RevisionTag, RevisionTagSchema } from "../../core/index.js";
7
7
  import { type JsonCompatibleReadOnly } from "../../util/index.js";
8
- import { type FieldChangeEncodingContext } from "../modular-schema/index.js";
8
+ import { type FieldChangeEncodingContext, type FieldChangeDecodingContext } from "../modular-schema/index.js";
9
9
  import { type Encoded } from "./formatV2.js";
10
10
  import type { SequenceCodecHelpers } from "./helperTypes.js";
11
11
  import { type Changeset, type MarkEffect } from "./types.js";
12
12
  export declare function makeV2CodecHelpers(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): SequenceCodecHelpers<MarkEffect, Encoded.MarkEffect>;
13
- export declare function makeV2Codec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<Changeset, JsonCompatibleReadOnly, JsonCompatibleReadOnly, FieldChangeEncodingContext>;
13
+ export declare function makeV2Codec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<Changeset, JsonCompatibleReadOnly, JsonCompatibleReadOnly, FieldChangeEncodingContext, FieldChangeDecodingContext>;
14
14
  //# sourceMappingURL=sequenceFieldCodecV2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceFieldCodecV2.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGN,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,qBAAqB,EAGrB,WAAW,EACX,iBAAiB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,sBAAsB,EAAuB,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAEN,KAAK,0BAA0B,EAC/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAGN,KAAK,SAAS,EAId,KAAK,UAAU,EAMf,MAAM,YAAY,CAAC;AAGpB,wBAAgB,kBAAkB,CACjC,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAiNtD;AAED,wBAAgB,WAAW,CAC1B,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,UAAU,CACZ,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,CAC1B,CAsEA"}
1
+ {"version":3,"file":"sequenceFieldCodecV2.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGN,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,qBAAqB,EAGrB,WAAW,EACX,iBAAiB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,sBAAsB,EAAuB,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAEN,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAGN,KAAK,SAAS,EAId,KAAK,UAAU,EAMf,MAAM,YAAY,CAAC;AAGpB,wBAAgB,kBAAkB,CACjC,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAiNtD;AAED,wBAAgB,WAAW,CAC1B,gBAAgB,EAAE,aAAa,CAC9B,WAAW,EACX,OAAO,iBAAiB,EACxB,qBAAqB,CACrB,GACC,UAAU,CACZ,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,CAC1B,CAsEA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceFieldCodecV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/sequenceFieldCodecV2.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, unreachableCase, fail } from \"@fluidframework/core-utils/internal\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\n\nimport {\n\tDiscriminatedUnionDispatcher,\n\ttype DiscriminatedUnionLibrary,\n\ttype IJsonCodec,\n\ttype JsonCodecPart,\n} from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tChangesetLocalId,\n\tEncodedRevisionTag,\n\tRevisionTag,\n\tRevisionTagSchema,\n} from \"../../core/index.js\";\nimport { type JsonCompatibleReadOnly, type Mutable, brand } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport {\n\tEncodedNodeChangeset,\n\ttype FieldChangeEncodingContext,\n} from \"../modular-schema/index.js\";\n\nimport { Changeset as ChangesetSchema, type Encoded } from \"./formatV2.js\";\nimport type { SequenceCodecHelpers } from \"./helperTypes.js\";\nimport {\n\ttype Attach,\n\ttype AttachAndDetach,\n\ttype Changeset,\n\ttype Detach,\n\ttype Insert,\n\ttype Mark,\n\ttype MarkEffect,\n\ttype MoveIn,\n\ttype MoveOut,\n\tNoopMarkType,\n\ttype Remove,\n\ttype Rename,\n} from \"./types.js\";\nimport { isNoopMark, normalizeCellRename } from \"./utils.js\";\n\nexport function makeV2CodecHelpers(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): SequenceCodecHelpers<MarkEffect, Encoded.MarkEffect> {\n\tconst changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n\tconst markEffectCodec: IJsonCodec<\n\t\tMarkEffect,\n\t\tEncoded.MarkEffect,\n\t\tEncoded.MarkEffect,\n\t\tChangeEncodingContext\n\t> = {\n\t\tencode(effect: MarkEffect, context: ChangeEncodingContext): Encoded.MarkEffect {\n\t\t\tfunction encodeRevision(\n\t\t\t\trevision: RevisionTag | undefined,\n\t\t\t): EncodedRevisionTag | undefined {\n\t\t\t\tif (revision === undefined || revision === context.revision) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn revisionTagCodec.encode(revision, context);\n\t\t\t}\n\n\t\t\tconst type = effect.type;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"MoveIn\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmoveIn: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tfinalEndpoint:\n\t\t\t\t\t\t\t\teffect.finalEndpoint === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.finalEndpoint, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Insert\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Remove\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tremove: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tidOverride:\n\t\t\t\t\t\t\t\teffect.idOverride === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.idOverride, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"MoveOut\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmoveOut: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tfinalEndpoint:\n\t\t\t\t\t\t\t\teffect.finalEndpoint === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.finalEndpoint, context),\n\t\t\t\t\t\t\tidOverride:\n\t\t\t\t\t\t\t\teffect.idOverride === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.idOverride, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"AttachAndDetach\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tattachAndDetach: {\n\t\t\t\t\t\t\tattach: markEffectCodec.encode(effect.attach, context) as Encoded.Attach,\n\t\t\t\t\t\t\tdetach: markEffectCodec.encode(effect.detach, context) as Encoded.Detach,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Rename\": {\n\t\t\t\t\t// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n\t\t\t\t\t// renames are encoded as AttachAndDetach with a special id.\n\t\t\t\t\t// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n\t\t\t\t\treturn markEffectCodec.encode(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"AttachAndDetach\",\n\t\t\t\t\t\t\tattach: { type: \"MoveIn\", id: renameLocalId },\n\t\t\t\t\t\t\tdetach: { type: \"MoveOut\", id: renameLocalId, idOverride: effect.idOverride },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase NoopMarkType: {\n\t\t\t\t\tfail(0xb2c /* Mark type: NoopMarkType should not be encoded. */);\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tunreachableCase(type);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdecode(encoded: Encoded.MarkEffect, context: ChangeEncodingContext): MarkEffect {\n\t\t\treturn decoderDispatcher.dispatch(encoded, context);\n\t\t},\n\t};\n\n\tfunction decodeRevision(\n\t\tencodedRevision: EncodedRevisionTag | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): RevisionTag {\n\t\tif (encodedRevision === undefined) {\n\t\t\tassert(context.revision !== undefined, 0x996 /* Implicit revision should be provided */);\n\t\t\treturn context.revision;\n\t\t}\n\n\t\treturn revisionTagCodec.decode(encodedRevision, context);\n\t}\n\n\tconst decoderLibrary: DiscriminatedUnionLibrary<\n\t\tEncoded.MarkEffect,\n\t\t/* args */ [context: ChangeEncodingContext],\n\t\tMarkEffect\n\t> = {\n\t\tmoveIn(encoded: Encoded.MoveIn, context: ChangeEncodingContext): MoveIn {\n\t\t\tconst { id, finalEndpoint, revision } = encoded;\n\t\t\tconst mark: MoveIn = {\n\t\t\t\ttype: \"MoveIn\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (finalEndpoint !== undefined) {\n\t\t\t\tmark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n\t\t\t}\n\t\t\treturn mark;\n\t\t},\n\t\tinsert(encoded: Encoded.Insert, context: ChangeEncodingContext): Insert {\n\t\t\tconst { id, revision } = encoded;\n\t\t\tconst mark: Insert = {\n\t\t\t\ttype: \"Insert\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\treturn mark;\n\t\t},\n\t\tremove(encoded: Encoded.Remove, context: ChangeEncodingContext): Remove {\n\t\t\tconst { id, revision, idOverride } = encoded;\n\t\t\tconst mark: Mutable<Remove> = {\n\t\t\t\ttype: \"Remove\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (idOverride !== undefined) {\n\t\t\t\tmark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n\t\t\t}\n\t\t\treturn mark;\n\t\t},\n\t\tmoveOut(encoded: Encoded.MoveOut, context: ChangeEncodingContext): MoveOut {\n\t\t\tconst { id, finalEndpoint, idOverride, revision } = encoded;\n\t\t\tconst mark: Mutable<MoveOut> = {\n\t\t\t\ttype: \"MoveOut\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (finalEndpoint !== undefined) {\n\t\t\t\tmark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n\t\t\t}\n\t\t\tif (idOverride !== undefined) {\n\t\t\t\tmark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n\t\t\t}\n\n\t\t\treturn mark;\n\t\t},\n\t\tattachAndDetach(\n\t\t\tencoded: Encoded.AttachAndDetach,\n\t\t\tcontext: ChangeEncodingContext,\n\t\t): AttachAndDetach | Rename {\n\t\t\tconst attach = decoderDispatcher.dispatch(encoded.attach, context) as Attach;\n\t\t\tconst detach = decoderDispatcher.dispatch(encoded.detach, context) as Detach;\n\t\t\t// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n\t\t\t// renames are encoded as AttachAndDetach with a special id.\n\t\t\t// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n\t\t\tif (attach.id === renameLocalId) {\n\t\t\t\tassert(detach.idOverride !== undefined, 0x9f8 /* Rename must have idOverride */);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"Rename\",\n\t\t\t\t\tidOverride: detach.idOverride,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"AttachAndDetach\",\n\t\t\t\tattach,\n\t\t\t\tdetach,\n\t\t\t};\n\t\t},\n\t};\n\n\tconst decoderDispatcher = new DiscriminatedUnionDispatcher<\n\t\tEncoded.MarkEffect,\n\t\t/* args */ [context: ChangeEncodingContext],\n\t\tMarkEffect\n\t>(decoderLibrary);\n\n\treturn {\n\t\tchangeAtomIdCodec,\n\t\tmarkEffectCodec,\n\t\tdecoderLibrary,\n\t\tdecodeRevision,\n\t};\n}\n\nexport function makeV2Codec(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): IJsonCodec<\n\tChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext\n> {\n\tconst { markEffectCodec, changeAtomIdCodec } = makeV2CodecHelpers(revisionTagCodec);\n\t/**\n\t * If we want to make the node change aspect of this codec more type-safe, we could adjust generics\n\t * to be in terms of the schema rather than the concrete type of the node change.\n\t */\n\ttype NodeChangeSchema = TAnySchema;\n\n\treturn {\n\t\tencode: (\n\t\t\tchangeset: Changeset,\n\t\t\tcontext: FieldChangeEncodingContext,\n\t\t): JsonCompatibleReadOnly & Encoded.Changeset<NodeChangeSchema> => {\n\t\t\tconst jsonMarks: Encoded.Changeset<NodeChangeSchema> = [];\n\t\t\tfor (const mark of changeset) {\n\t\t\t\tconst encodedMark: Encoded.Mark<NodeChangeSchema> = {\n\t\t\t\t\tcount: mark.count,\n\t\t\t\t};\n\t\t\t\tif (!isNoopMark(mark)) {\n\t\t\t\t\tencodedMark.effect = markEffectCodec.encode(mark, context.baseContext);\n\t\t\t\t}\n\t\t\t\tif (mark.cellId !== undefined) {\n\t\t\t\t\tencodedMark.cellId = changeAtomIdCodec.encode(mark.cellId, context.baseContext);\n\t\t\t\t}\n\t\t\t\tif (mark.changes !== undefined) {\n\t\t\t\t\tencodedMark.changes = context.encodeNode(mark.changes);\n\t\t\t\t}\n\t\t\t\tjsonMarks.push(encodedMark);\n\t\t\t}\n\t\t\treturn jsonMarks;\n\t\t},\n\t\tdecode: (\n\t\t\tchangeset: Encoded.Changeset<NodeChangeSchema>,\n\t\t\tcontext: FieldChangeEncodingContext,\n\t\t): Changeset => {\n\t\t\tconst marks: Changeset = [];\n\t\t\tfor (const mark of changeset) {\n\t\t\t\tconst decodedMark: Mark = {\n\t\t\t\t\tcount: mark.count,\n\t\t\t\t};\n\n\t\t\t\tif (mark.effect !== undefined) {\n\t\t\t\t\tObject.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));\n\t\t\t\t}\n\t\t\t\tif (mark.cellId !== undefined) {\n\t\t\t\t\tdecodedMark.cellId = changeAtomIdCodec.decode(mark.cellId, context.baseContext);\n\t\t\t\t}\n\t\t\t\t// Type deduction wrongly narrows the type of `decodedMark` to `NoopMark & HasMarkFields`.\n\t\t\t\t// We declare a new casted copy of `decodedMark` to recover the correct type.\n\t\t\t\tlet decodedMark2 = decodedMark as Mark;\n\t\t\t\tif (decodedMark2.cellId !== undefined && decodedMark2.type === \"AttachAndDetach\") {\n\t\t\t\t\t// In documents generated by clients on release <=2.1 (i.e., not running the code from the PR that added this comment),\n\t\t\t\t\t// rename-like AttachAndDetach marks are not normalized to Rename marks thus requiring this normalization step.\n\t\t\t\t\t// This ensures backward compatibility with documents generated by clients on release <=2.1.\n\t\t\t\t\tdecodedMark2 = normalizeCellRename(\n\t\t\t\t\t\tdecodedMark2.cellId,\n\t\t\t\t\t\tdecodedMark2.count,\n\t\t\t\t\t\tdecodedMark2.attach,\n\t\t\t\t\t\tdecodedMark2.detach,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (mark.changes !== undefined) {\n\t\t\t\t\tdecodedMark2.changes = context.decodeNode(mark.changes);\n\t\t\t\t}\n\t\t\t\tmarks.push(decodedMark2);\n\t\t\t}\n\t\t\treturn marks;\n\t\t},\n\t\tencodedSchema: ChangesetSchema(EncodedNodeChangeset),\n\t};\n}\n\n/**\n * Arbitrary ID that is used to indicate a Rename effect.\n */\nconst renameLocalId: ChangesetLocalId = brand(-1);\n"]}
1
+ {"version":3,"file":"sequenceFieldCodecV2.js","sourceRoot":"","sources":["../../../src/feature-libraries/sequence-field/sequenceFieldCodecV2.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, unreachableCase, fail } from \"@fluidframework/core-utils/internal\";\nimport type { TAnySchema } from \"@sinclair/typebox\";\n\nimport {\n\tDiscriminatedUnionDispatcher,\n\ttype DiscriminatedUnionLibrary,\n\ttype IJsonCodec,\n\ttype JsonCodecPart,\n} from \"../../codec/index.js\";\nimport type {\n\tChangeEncodingContext,\n\tChangesetLocalId,\n\tEncodedRevisionTag,\n\tRevisionTag,\n\tRevisionTagSchema,\n} from \"../../core/index.js\";\nimport { type JsonCompatibleReadOnly, type Mutable, brand } from \"../../util/index.js\";\nimport { makeChangeAtomIdCodec } from \"../changeAtomIdCodec.js\";\nimport {\n\tEncodedNodeChangeset,\n\ttype FieldChangeEncodingContext,\n\ttype FieldChangeDecodingContext,\n} from \"../modular-schema/index.js\";\n\nimport { Changeset as ChangesetSchema, type Encoded } from \"./formatV2.js\";\nimport type { SequenceCodecHelpers } from \"./helperTypes.js\";\nimport {\n\ttype Attach,\n\ttype AttachAndDetach,\n\ttype Changeset,\n\ttype Detach,\n\ttype Insert,\n\ttype Mark,\n\ttype MarkEffect,\n\ttype MoveIn,\n\ttype MoveOut,\n\tNoopMarkType,\n\ttype Remove,\n\ttype Rename,\n} from \"./types.js\";\nimport { isNoopMark, normalizeCellRename } from \"./utils.js\";\n\nexport function makeV2CodecHelpers(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): SequenceCodecHelpers<MarkEffect, Encoded.MarkEffect> {\n\tconst changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);\n\tconst markEffectCodec: IJsonCodec<\n\t\tMarkEffect,\n\t\tEncoded.MarkEffect,\n\t\tEncoded.MarkEffect,\n\t\tChangeEncodingContext\n\t> = {\n\t\tencode(effect: MarkEffect, context: ChangeEncodingContext): Encoded.MarkEffect {\n\t\t\tfunction encodeRevision(\n\t\t\t\trevision: RevisionTag | undefined,\n\t\t\t): EncodedRevisionTag | undefined {\n\t\t\t\tif (revision === undefined || revision === context.revision) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn revisionTagCodec.encode(revision, context);\n\t\t\t}\n\n\t\t\tconst type = effect.type;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"MoveIn\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmoveIn: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tfinalEndpoint:\n\t\t\t\t\t\t\t\teffect.finalEndpoint === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.finalEndpoint, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Insert\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Remove\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tremove: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tidOverride:\n\t\t\t\t\t\t\t\teffect.idOverride === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.idOverride, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"MoveOut\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmoveOut: {\n\t\t\t\t\t\t\trevision: encodeRevision(effect.revision),\n\t\t\t\t\t\t\tfinalEndpoint:\n\t\t\t\t\t\t\t\teffect.finalEndpoint === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.finalEndpoint, context),\n\t\t\t\t\t\t\tidOverride:\n\t\t\t\t\t\t\t\teffect.idOverride === undefined\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: changeAtomIdCodec.encode(effect.idOverride, context),\n\t\t\t\t\t\t\tid: effect.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"AttachAndDetach\": {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tattachAndDetach: {\n\t\t\t\t\t\t\tattach: markEffectCodec.encode(effect.attach, context) as Encoded.Attach,\n\t\t\t\t\t\t\tdetach: markEffectCodec.encode(effect.detach, context) as Encoded.Detach,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"Rename\": {\n\t\t\t\t\t// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n\t\t\t\t\t// renames are encoded as AttachAndDetach with a special id.\n\t\t\t\t\t// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n\t\t\t\t\treturn markEffectCodec.encode(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"AttachAndDetach\",\n\t\t\t\t\t\t\tattach: { type: \"MoveIn\", id: renameLocalId },\n\t\t\t\t\t\t\tdetach: { type: \"MoveOut\", id: renameLocalId, idOverride: effect.idOverride },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcase NoopMarkType: {\n\t\t\t\t\tfail(0xb2c /* Mark type: NoopMarkType should not be encoded. */);\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tunreachableCase(type);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdecode(encoded: Encoded.MarkEffect, context: ChangeEncodingContext): MarkEffect {\n\t\t\treturn decoderDispatcher.dispatch(encoded, context);\n\t\t},\n\t};\n\n\tfunction decodeRevision(\n\t\tencodedRevision: EncodedRevisionTag | undefined,\n\t\tcontext: ChangeEncodingContext,\n\t): RevisionTag {\n\t\tif (encodedRevision === undefined) {\n\t\t\tassert(context.revision !== undefined, 0x996 /* Implicit revision should be provided */);\n\t\t\treturn context.revision;\n\t\t}\n\n\t\treturn revisionTagCodec.decode(encodedRevision, context);\n\t}\n\n\tconst decoderLibrary: DiscriminatedUnionLibrary<\n\t\tEncoded.MarkEffect,\n\t\t/* args */ [context: ChangeEncodingContext],\n\t\tMarkEffect\n\t> = {\n\t\tmoveIn(encoded: Encoded.MoveIn, context: ChangeEncodingContext): MoveIn {\n\t\t\tconst { id, finalEndpoint, revision } = encoded;\n\t\t\tconst mark: MoveIn = {\n\t\t\t\ttype: \"MoveIn\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (finalEndpoint !== undefined) {\n\t\t\t\tmark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n\t\t\t}\n\t\t\treturn mark;\n\t\t},\n\t\tinsert(encoded: Encoded.Insert, context: ChangeEncodingContext): Insert {\n\t\t\tconst { id, revision } = encoded;\n\t\t\tconst mark: Insert = {\n\t\t\t\ttype: \"Insert\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\treturn mark;\n\t\t},\n\t\tremove(encoded: Encoded.Remove, context: ChangeEncodingContext): Remove {\n\t\t\tconst { id, revision, idOverride } = encoded;\n\t\t\tconst mark: Mutable<Remove> = {\n\t\t\t\ttype: \"Remove\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (idOverride !== undefined) {\n\t\t\t\tmark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n\t\t\t}\n\t\t\treturn mark;\n\t\t},\n\t\tmoveOut(encoded: Encoded.MoveOut, context: ChangeEncodingContext): MoveOut {\n\t\t\tconst { id, finalEndpoint, idOverride, revision } = encoded;\n\t\t\tconst mark: Mutable<MoveOut> = {\n\t\t\t\ttype: \"MoveOut\",\n\t\t\t\tid,\n\t\t\t};\n\n\t\t\tmark.revision = decodeRevision(revision, context);\n\t\t\tif (finalEndpoint !== undefined) {\n\t\t\t\tmark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);\n\t\t\t}\n\t\t\tif (idOverride !== undefined) {\n\t\t\t\tmark.idOverride = changeAtomIdCodec.decode(idOverride, context);\n\t\t\t}\n\n\t\t\treturn mark;\n\t\t},\n\t\tattachAndDetach(\n\t\t\tencoded: Encoded.AttachAndDetach,\n\t\t\tcontext: ChangeEncodingContext,\n\t\t): AttachAndDetach | Rename {\n\t\t\tconst attach = decoderDispatcher.dispatch(encoded.attach, context) as Attach;\n\t\t\tconst detach = decoderDispatcher.dispatch(encoded.detach, context) as Detach;\n\t\t\t// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),\n\t\t\t// renames are encoded as AttachAndDetach with a special id.\n\t\t\t// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.\n\t\t\tif (attach.id === renameLocalId) {\n\t\t\t\tassert(detach.idOverride !== undefined, 0x9f8 /* Rename must have idOverride */);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"Rename\",\n\t\t\t\t\tidOverride: detach.idOverride,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"AttachAndDetach\",\n\t\t\t\tattach,\n\t\t\t\tdetach,\n\t\t\t};\n\t\t},\n\t};\n\n\tconst decoderDispatcher = new DiscriminatedUnionDispatcher<\n\t\tEncoded.MarkEffect,\n\t\t/* args */ [context: ChangeEncodingContext],\n\t\tMarkEffect\n\t>(decoderLibrary);\n\n\treturn {\n\t\tchangeAtomIdCodec,\n\t\tmarkEffectCodec,\n\t\tdecoderLibrary,\n\t\tdecodeRevision,\n\t};\n}\n\nexport function makeV2Codec(\n\trevisionTagCodec: JsonCodecPart<\n\t\tRevisionTag,\n\t\ttypeof RevisionTagSchema,\n\t\tChangeEncodingContext\n\t>,\n): IJsonCodec<\n\tChangeset,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tFieldChangeEncodingContext,\n\tFieldChangeDecodingContext\n> {\n\tconst { markEffectCodec, changeAtomIdCodec } = makeV2CodecHelpers(revisionTagCodec);\n\t/**\n\t * If we want to make the node change aspect of this codec more type-safe, we could adjust generics\n\t * to be in terms of the schema rather than the concrete type of the node change.\n\t */\n\ttype NodeChangeSchema = TAnySchema;\n\n\treturn {\n\t\tencode: (\n\t\t\tchangeset: Changeset,\n\t\t\tcontext: FieldChangeEncodingContext,\n\t\t): JsonCompatibleReadOnly & Encoded.Changeset<NodeChangeSchema> => {\n\t\t\tconst jsonMarks: Encoded.Changeset<NodeChangeSchema> = [];\n\t\t\tfor (const mark of changeset) {\n\t\t\t\tconst encodedMark: Encoded.Mark<NodeChangeSchema> = {\n\t\t\t\t\tcount: mark.count,\n\t\t\t\t};\n\t\t\t\tif (!isNoopMark(mark)) {\n\t\t\t\t\tencodedMark.effect = markEffectCodec.encode(mark, context.baseContext);\n\t\t\t\t}\n\t\t\t\tif (mark.cellId !== undefined) {\n\t\t\t\t\tencodedMark.cellId = changeAtomIdCodec.encode(mark.cellId, context.baseContext);\n\t\t\t\t}\n\t\t\t\tif (mark.changes !== undefined) {\n\t\t\t\t\tencodedMark.changes = context.encodeNode(mark.changes);\n\t\t\t\t}\n\t\t\t\tjsonMarks.push(encodedMark);\n\t\t\t}\n\t\t\treturn jsonMarks;\n\t\t},\n\t\tdecode: (\n\t\t\tchangeset: Encoded.Changeset<NodeChangeSchema>,\n\t\t\tcontext: FieldChangeDecodingContext,\n\t\t): Changeset => {\n\t\t\tconst marks: Changeset = [];\n\t\t\tfor (const mark of changeset) {\n\t\t\t\tconst decodedMark: Mark = {\n\t\t\t\t\tcount: mark.count,\n\t\t\t\t};\n\n\t\t\t\tif (mark.effect !== undefined) {\n\t\t\t\t\tObject.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));\n\t\t\t\t}\n\t\t\t\tif (mark.cellId !== undefined) {\n\t\t\t\t\tdecodedMark.cellId = changeAtomIdCodec.decode(mark.cellId, context.baseContext);\n\t\t\t\t}\n\t\t\t\t// Type deduction wrongly narrows the type of `decodedMark` to `NoopMark & HasMarkFields`.\n\t\t\t\t// We declare a new casted copy of `decodedMark` to recover the correct type.\n\t\t\t\tlet decodedMark2 = decodedMark as Mark;\n\t\t\t\tif (decodedMark2.cellId !== undefined && decodedMark2.type === \"AttachAndDetach\") {\n\t\t\t\t\t// In documents generated by clients on release <=2.1 (i.e., not running the code from the PR that added this comment),\n\t\t\t\t\t// rename-like AttachAndDetach marks are not normalized to Rename marks thus requiring this normalization step.\n\t\t\t\t\t// This ensures backward compatibility with documents generated by clients on release <=2.1.\n\t\t\t\t\tdecodedMark2 = normalizeCellRename(\n\t\t\t\t\t\tdecodedMark2.cellId,\n\t\t\t\t\t\tdecodedMark2.count,\n\t\t\t\t\t\tdecodedMark2.attach,\n\t\t\t\t\t\tdecodedMark2.detach,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (mark.changes !== undefined) {\n\t\t\t\t\tdecodedMark2.changes = context.decodeNode(mark.changes);\n\t\t\t\t}\n\t\t\t\tmarks.push(decodedMark2);\n\t\t\t}\n\t\t\treturn marks;\n\t\t},\n\t\tencodedSchema: ChangesetSchema(EncodedNodeChangeset),\n\t};\n}\n\n/**\n * Arbitrary ID that is used to indicate a Rename effect.\n */\nconst renameLocalId: ChangesetLocalId = brand(-1);\n"]}
@@ -5,7 +5,7 @@
5
5
  import { type IJsonCodec, type JsonCodecPart } from "../../codec/index.js";
6
6
  import type { ChangeEncodingContext, RevisionTag, RevisionTagSchema } from "../../core/index.js";
7
7
  import type { JsonCompatibleReadOnly } from "../../util/index.js";
8
- import { type FieldChangeEncodingContext } from "../modular-schema/index.js";
8
+ import { type FieldChangeEncodingContext, type FieldChangeDecodingContext } from "../modular-schema/index.js";
9
9
  import type { Changeset } from "./types.js";
10
- export declare function makeV3Codec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<Changeset, JsonCompatibleReadOnly, JsonCompatibleReadOnly, FieldChangeEncodingContext>;
10
+ export declare function makeV3Codec(revisionTagCodec: JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>): IJsonCodec<Changeset, JsonCompatibleReadOnly, JsonCompatibleReadOnly, FieldChangeEncodingContext, FieldChangeDecodingContext>;
11
11
  //# sourceMappingURL=sequenceFieldCodecV3.d.ts.map