@fluidframework/tree 2.111.0 → 2.112.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 (375) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/api-report/tree.alpha.api.md +48 -5
  3. package/api-report/tree.beta.api.md +1 -1
  4. package/api-report/tree.legacy.beta.api.md +1 -1
  5. package/api-report/tree.legacy.public.api.md +1 -1
  6. package/api-report/tree.public.api.md +1 -1
  7. package/dist/componentApi.d.ts +198 -0
  8. package/dist/componentApi.d.ts.map +1 -0
  9. package/dist/componentApi.js +138 -0
  10. package/dist/componentApi.js.map +1 -0
  11. package/dist/entrypoints/alpha.d.ts +1 -1
  12. package/dist/entrypoints/alpha.d.ts.map +1 -1
  13. package/dist/entrypoints/alpha.js +4 -2
  14. package/dist/entrypoints/alpha.js.map +1 -1
  15. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -25
  16. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  17. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  18. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -2
  19. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  20. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  21. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +6 -18
  22. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  23. package/dist/feature-libraries/chunked-forest/codec/codecs.js +9 -16
  24. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  25. package/dist/feature-libraries/index.d.ts +2 -2
  26. package/dist/feature-libraries/index.d.ts.map +1 -1
  27. package/dist/feature-libraries/index.js +3 -2
  28. package/dist/feature-libraries/index.js.map +1 -1
  29. package/dist/feature-libraries/modular-schema/index.d.ts +1 -0
  30. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  31. package/dist/feature-libraries/modular-schema/index.js +3 -1
  32. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  33. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts +25 -0
  34. package/dist/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -0
  35. package/dist/feature-libraries/modular-schema/minimizeModularChange.js +29 -0
  36. package/dist/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -0
  37. package/dist/feature-libraries/schemaChecker.d.ts +22 -3
  38. package/dist/feature-libraries/schemaChecker.d.ts.map +1 -1
  39. package/dist/feature-libraries/schemaChecker.js +48 -5
  40. package/dist/feature-libraries/schemaChecker.js.map +1 -1
  41. package/dist/index.d.ts +2 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +5 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/packageVersion.d.ts +1 -1
  46. package/dist/packageVersion.js +1 -1
  47. package/dist/packageVersion.js.map +1 -1
  48. package/dist/shared-tree/independentView.d.ts +17 -4
  49. package/dist/shared-tree/independentView.d.ts.map +1 -1
  50. package/dist/shared-tree/independentView.js +11 -5
  51. package/dist/shared-tree/independentView.js.map +1 -1
  52. package/dist/shared-tree/index.d.ts +2 -1
  53. package/dist/shared-tree/index.d.ts.map +1 -1
  54. package/dist/shared-tree/index.js +3 -1
  55. package/dist/shared-tree/index.js.map +1 -1
  56. package/dist/shared-tree/schematizingTreeView.d.ts +1 -0
  57. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  58. package/dist/shared-tree/schematizingTreeView.js +6 -3
  59. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  60. package/dist/shared-tree/serializedChange.d.ts +41 -0
  61. package/dist/shared-tree/serializedChange.d.ts.map +1 -0
  62. package/dist/shared-tree/serializedChange.js +87 -0
  63. package/dist/shared-tree/serializedChange.js.map +1 -0
  64. package/dist/shared-tree/sharedTree.d.ts +13 -0
  65. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  66. package/dist/shared-tree/sharedTree.js +2 -0
  67. package/dist/shared-tree/sharedTree.js.map +1 -1
  68. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +7 -0
  69. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  70. package/dist/shared-tree/sharedTreeChangeFamily.js +8 -1
  71. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  72. package/dist/shared-tree/transactionMinimize.d.ts +35 -0
  73. package/dist/shared-tree/transactionMinimize.d.ts.map +1 -0
  74. package/dist/shared-tree/transactionMinimize.js +65 -0
  75. package/dist/shared-tree/transactionMinimize.js.map +1 -0
  76. package/dist/shared-tree/treeCheckout.d.ts +3 -1
  77. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  78. package/dist/shared-tree/treeCheckout.js +36 -62
  79. package/dist/shared-tree/treeCheckout.js.map +1 -1
  80. package/dist/shared-tree-core/editManager.d.ts +6 -3
  81. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  82. package/dist/shared-tree-core/editManager.js +35 -14
  83. package/dist/shared-tree-core/editManager.js.map +1 -1
  84. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -1
  85. package/dist/shared-tree-core/editManagerFormatCommons.js +1 -1
  86. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  87. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts +1 -1
  88. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  89. package/dist/shared-tree-core/messageCodecVSharedBranches.js +8 -2
  90. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  91. package/dist/shared-tree-core/messageFormat.d.ts +1 -1
  92. package/dist/shared-tree-core/messageFormat.js +1 -1
  93. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  94. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts +10 -1
  95. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  96. package/dist/shared-tree-core/messageFormatVSharedBranches.js +1 -0
  97. package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  98. package/dist/shared-tree-core/messageTypes.d.ts +1 -0
  99. package/dist/shared-tree-core/messageTypes.d.ts.map +1 -1
  100. package/dist/shared-tree-core/messageTypes.js.map +1 -1
  101. package/dist/shared-tree-core/sharedTreeCore.d.ts +9 -3
  102. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  103. package/dist/shared-tree-core/sharedTreeCore.js +24 -11
  104. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  105. package/dist/shared-tree-core/transaction.d.ts.map +1 -1
  106. package/dist/shared-tree-core/transaction.js +16 -2
  107. package/dist/shared-tree-core/transaction.js.map +1 -1
  108. package/dist/simple-tree/api/index.d.ts +1 -1
  109. package/dist/simple-tree/api/index.d.ts.map +1 -1
  110. package/dist/simple-tree/api/index.js +2 -2
  111. package/dist/simple-tree/api/index.js.map +1 -1
  112. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +9 -24
  113. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  114. package/dist/simple-tree/api/schemaCompatibilityTester.js +31 -44
  115. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  116. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +56 -15
  117. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  118. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  119. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +0 -3
  120. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  121. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  122. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  123. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +1 -2
  124. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  125. package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
  126. package/dist/simple-tree/api/storedSchema.js +1 -2
  127. package/dist/simple-tree/api/storedSchema.js.map +1 -1
  128. package/dist/simple-tree/api/tree.d.ts +22 -2
  129. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  130. package/dist/simple-tree/api/tree.js.map +1 -1
  131. package/dist/simple-tree/api/typesUnsafe.d.ts +2 -2
  132. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  133. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  134. package/dist/simple-tree/index.d.ts +1 -1
  135. package/dist/simple-tree/index.d.ts.map +1 -1
  136. package/dist/simple-tree/index.js +2 -2
  137. package/dist/simple-tree/index.js.map +1 -1
  138. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +83 -4
  139. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  140. package/dist/simple-tree/node-kinds/array/arrayNode.js +39 -0
  141. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  142. package/dist/simple-tree/simpleSchemaFormatV1.js +1 -1
  143. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  144. package/dist/treeFactory.js +1 -1
  145. package/dist/treeFactory.js.map +1 -1
  146. package/dist/util/breakable.d.ts +16 -1
  147. package/dist/util/breakable.d.ts.map +1 -1
  148. package/dist/util/breakable.js +9 -1
  149. package/dist/util/breakable.js.map +1 -1
  150. package/dist/util/compressedIds.d.ts +69 -2
  151. package/dist/util/compressedIds.d.ts.map +1 -1
  152. package/dist/util/compressedIds.js +32 -1
  153. package/dist/util/compressedIds.js.map +1 -1
  154. package/dist/util/index.d.ts +2 -2
  155. package/dist/util/index.d.ts.map +1 -1
  156. package/dist/util/index.js +2 -2
  157. package/dist/util/index.js.map +1 -1
  158. package/dist/util/nestedMap.d.ts.map +1 -1
  159. package/dist/util/nestedMap.js +16 -3
  160. package/dist/util/nestedMap.js.map +1 -1
  161. package/dist/util/nestedSet.d.ts +1 -1
  162. package/dist/util/nestedSet.d.ts.map +1 -1
  163. package/dist/util/nestedSet.js.map +1 -1
  164. package/dist/util/utils.d.ts +0 -6
  165. package/dist/util/utils.d.ts.map +1 -1
  166. package/dist/util/utils.js +1 -15
  167. package/dist/util/utils.js.map +1 -1
  168. package/lib/componentApi.d.ts +198 -0
  169. package/lib/componentApi.d.ts.map +1 -0
  170. package/lib/componentApi.js +135 -0
  171. package/lib/componentApi.js.map +1 -0
  172. package/lib/entrypoints/alpha.d.ts +1 -1
  173. package/lib/entrypoints/alpha.d.ts.map +1 -1
  174. package/lib/entrypoints/alpha.js +1 -1
  175. package/lib/entrypoints/alpha.js.map +1 -1
  176. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -25
  177. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  178. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +1 -1
  179. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  180. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -2
  181. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  182. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  183. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +6 -18
  184. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  185. package/lib/feature-libraries/chunked-forest/codec/codecs.js +10 -17
  186. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  187. package/lib/feature-libraries/index.d.ts +2 -2
  188. package/lib/feature-libraries/index.d.ts.map +1 -1
  189. package/lib/feature-libraries/index.js +1 -1
  190. package/lib/feature-libraries/index.js.map +1 -1
  191. package/lib/feature-libraries/modular-schema/index.d.ts +1 -0
  192. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  193. package/lib/feature-libraries/modular-schema/index.js +1 -0
  194. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  195. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts +25 -0
  196. package/lib/feature-libraries/modular-schema/minimizeModularChange.d.ts.map +1 -0
  197. package/lib/feature-libraries/modular-schema/minimizeModularChange.js +25 -0
  198. package/lib/feature-libraries/modular-schema/minimizeModularChange.js.map +1 -0
  199. package/lib/feature-libraries/schemaChecker.d.ts +22 -3
  200. package/lib/feature-libraries/schemaChecker.d.ts.map +1 -1
  201. package/lib/feature-libraries/schemaChecker.js +48 -5
  202. package/lib/feature-libraries/schemaChecker.js.map +1 -1
  203. package/lib/index.d.ts +2 -1
  204. package/lib/index.d.ts.map +1 -1
  205. package/lib/index.js +2 -1
  206. package/lib/index.js.map +1 -1
  207. package/lib/packageVersion.d.ts +1 -1
  208. package/lib/packageVersion.js +1 -1
  209. package/lib/packageVersion.js.map +1 -1
  210. package/lib/shared-tree/independentView.d.ts +17 -4
  211. package/lib/shared-tree/independentView.d.ts.map +1 -1
  212. package/lib/shared-tree/independentView.js +9 -3
  213. package/lib/shared-tree/independentView.js.map +1 -1
  214. package/lib/shared-tree/index.d.ts +2 -1
  215. package/lib/shared-tree/index.d.ts.map +1 -1
  216. package/lib/shared-tree/index.js +1 -0
  217. package/lib/shared-tree/index.js.map +1 -1
  218. package/lib/shared-tree/schematizingTreeView.d.ts +1 -0
  219. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  220. package/lib/shared-tree/schematizingTreeView.js +7 -4
  221. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  222. package/lib/shared-tree/serializedChange.d.ts +41 -0
  223. package/lib/shared-tree/serializedChange.d.ts.map +1 -0
  224. package/lib/shared-tree/serializedChange.js +84 -0
  225. package/lib/shared-tree/serializedChange.js.map +1 -0
  226. package/lib/shared-tree/sharedTree.d.ts +13 -0
  227. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  228. package/lib/shared-tree/sharedTree.js +2 -0
  229. package/lib/shared-tree/sharedTree.js.map +1 -1
  230. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +7 -0
  231. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  232. package/lib/shared-tree/sharedTreeChangeFamily.js +7 -1
  233. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  234. package/lib/shared-tree/transactionMinimize.d.ts +35 -0
  235. package/lib/shared-tree/transactionMinimize.d.ts.map +1 -0
  236. package/lib/shared-tree/transactionMinimize.js +62 -0
  237. package/lib/shared-tree/transactionMinimize.js.map +1 -0
  238. package/lib/shared-tree/treeCheckout.d.ts +3 -1
  239. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  240. package/lib/shared-tree/treeCheckout.js +18 -44
  241. package/lib/shared-tree/treeCheckout.js.map +1 -1
  242. package/lib/shared-tree-core/editManager.d.ts +6 -3
  243. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  244. package/lib/shared-tree-core/editManager.js +36 -15
  245. package/lib/shared-tree-core/editManager.js.map +1 -1
  246. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -1
  247. package/lib/shared-tree-core/editManagerFormatCommons.js +1 -1
  248. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  249. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts +1 -1
  250. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
  251. package/lib/shared-tree-core/messageCodecVSharedBranches.js +8 -2
  252. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
  253. package/lib/shared-tree-core/messageFormat.d.ts +1 -1
  254. package/lib/shared-tree-core/messageFormat.js +1 -1
  255. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  256. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts +10 -1
  257. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
  258. package/lib/shared-tree-core/messageFormatVSharedBranches.js +1 -0
  259. package/lib/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
  260. package/lib/shared-tree-core/messageTypes.d.ts +1 -0
  261. package/lib/shared-tree-core/messageTypes.d.ts.map +1 -1
  262. package/lib/shared-tree-core/messageTypes.js.map +1 -1
  263. package/lib/shared-tree-core/sharedTreeCore.d.ts +9 -3
  264. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  265. package/lib/shared-tree-core/sharedTreeCore.js +25 -12
  266. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  267. package/lib/shared-tree-core/transaction.d.ts.map +1 -1
  268. package/lib/shared-tree-core/transaction.js +16 -2
  269. package/lib/shared-tree-core/transaction.js.map +1 -1
  270. package/lib/simple-tree/api/index.d.ts +1 -1
  271. package/lib/simple-tree/api/index.d.ts.map +1 -1
  272. package/lib/simple-tree/api/index.js +1 -1
  273. package/lib/simple-tree/api/index.js.map +1 -1
  274. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +9 -24
  275. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  276. package/lib/simple-tree/api/schemaCompatibilityTester.js +29 -42
  277. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  278. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +56 -15
  279. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  280. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  281. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +0 -3
  282. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  283. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  284. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  285. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +2 -3
  286. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  287. package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
  288. package/lib/simple-tree/api/storedSchema.js +2 -3
  289. package/lib/simple-tree/api/storedSchema.js.map +1 -1
  290. package/lib/simple-tree/api/tree.d.ts +22 -2
  291. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  292. package/lib/simple-tree/api/tree.js.map +1 -1
  293. package/lib/simple-tree/api/typesUnsafe.d.ts +2 -2
  294. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  295. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  296. package/lib/simple-tree/index.d.ts +1 -1
  297. package/lib/simple-tree/index.d.ts.map +1 -1
  298. package/lib/simple-tree/index.js +1 -1
  299. package/lib/simple-tree/index.js.map +1 -1
  300. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +83 -4
  301. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  302. package/lib/simple-tree/node-kinds/array/arrayNode.js +39 -0
  303. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  304. package/lib/simple-tree/simpleSchemaFormatV1.js +1 -1
  305. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  306. package/lib/treeFactory.js +1 -1
  307. package/lib/treeFactory.js.map +1 -1
  308. package/lib/util/breakable.d.ts +16 -1
  309. package/lib/util/breakable.d.ts.map +1 -1
  310. package/lib/util/breakable.js +9 -1
  311. package/lib/util/breakable.js.map +1 -1
  312. package/lib/util/compressedIds.d.ts +69 -2
  313. package/lib/util/compressedIds.d.ts.map +1 -1
  314. package/lib/util/compressedIds.js +30 -0
  315. package/lib/util/compressedIds.js.map +1 -1
  316. package/lib/util/index.d.ts +2 -2
  317. package/lib/util/index.d.ts.map +1 -1
  318. package/lib/util/index.js +2 -2
  319. package/lib/util/index.js.map +1 -1
  320. package/lib/util/nestedMap.d.ts.map +1 -1
  321. package/lib/util/nestedMap.js +17 -4
  322. package/lib/util/nestedMap.js.map +1 -1
  323. package/lib/util/nestedSet.d.ts +1 -1
  324. package/lib/util/nestedSet.d.ts.map +1 -1
  325. package/lib/util/nestedSet.js.map +1 -1
  326. package/lib/util/utils.d.ts +0 -6
  327. package/lib/util/utils.d.ts.map +1 -1
  328. package/lib/util/utils.js +0 -13
  329. package/lib/util/utils.js.map +1 -1
  330. package/package.json +22 -22
  331. package/src/componentApi.ts +354 -0
  332. package/src/entrypoints/alpha.ts +3 -0
  333. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +6 -27
  334. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +1 -2
  335. package/src/feature-libraries/chunked-forest/codec/codecs.ts +17 -44
  336. package/src/feature-libraries/index.ts +2 -0
  337. package/src/feature-libraries/modular-schema/index.ts +1 -0
  338. package/src/feature-libraries/modular-schema/minimizeModularChange.ts +33 -0
  339. package/src/feature-libraries/schemaChecker.ts +86 -9
  340. package/src/index.ts +3 -0
  341. package/src/packageVersion.ts +1 -1
  342. package/src/shared-tree/independentView.ts +35 -5
  343. package/src/shared-tree/index.ts +3 -0
  344. package/src/shared-tree/schematizingTreeView.ts +15 -5
  345. package/src/shared-tree/serializedChange.ts +127 -0
  346. package/src/shared-tree/sharedTree.ts +16 -0
  347. package/src/shared-tree/sharedTreeChangeFamily.ts +7 -1
  348. package/src/shared-tree/transactionMinimize.ts +74 -0
  349. package/src/shared-tree/treeCheckout.ts +42 -57
  350. package/src/shared-tree-core/editManager.ts +42 -6
  351. package/src/shared-tree-core/editManagerFormatCommons.ts +1 -1
  352. package/src/shared-tree-core/messageCodecVSharedBranches.ts +8 -1
  353. package/src/shared-tree-core/messageFormat.ts +1 -1
  354. package/src/shared-tree-core/messageFormatVSharedBranches.ts +10 -0
  355. package/src/shared-tree-core/messageTypes.ts +1 -0
  356. package/src/shared-tree-core/sharedTreeCore.ts +33 -10
  357. package/src/shared-tree-core/transaction.ts +19 -2
  358. package/src/simple-tree/api/index.ts +1 -1
  359. package/src/simple-tree/api/schemaCompatibilityTester.ts +36 -48
  360. package/src/simple-tree/api/schemaFactoryAlpha.ts +56 -15
  361. package/src/simple-tree/api/schemaFactoryBeta.ts +0 -3
  362. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +2 -3
  363. package/src/simple-tree/api/storedSchema.ts +2 -3
  364. package/src/simple-tree/api/tree.ts +24 -2
  365. package/src/simple-tree/api/typesUnsafe.ts +2 -1
  366. package/src/simple-tree/index.ts +1 -1
  367. package/src/simple-tree/node-kinds/array/arrayNode.ts +168 -4
  368. package/src/simple-tree/simpleSchemaFormatV1.ts +1 -1
  369. package/src/treeFactory.ts +1 -1
  370. package/src/util/breakable.ts +8 -1
  371. package/src/util/compressedIds.ts +90 -2
  372. package/src/util/index.ts +3 -1
  373. package/src/util/nestedMap.ts +21 -4
  374. package/src/util/nestedSet.ts +1 -1
  375. package/src/util/utils.ts +0 -18
@@ -2,12 +2,11 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { IIdCompressor, OpSpaceCompressedId, SessionId, SessionSpaceCompressedId } from "@fluidframework/id-compressor";
5
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
6
6
  import { VersionDispatchingCodecBuilder, type VersionDispatchingCodec } from "../../../codec/index.js";
7
7
  import { type ITreeCursorSynchronous, type SchemaAndPolicy, type TreeChunk } from "../../../core/index.js";
8
- import { type Brand, type IdentifierHealingConfig } from "../../../util/index.js";
8
+ import { IdDecodingContext, type Brand, type IdDecoderOptionsOriginatorless, type IdDecoderOptionsWithOriginator } from "../../../util/index.js";
9
9
  import { TreeCompressionStrategy } from "../../treeCompressionUtils.js";
10
- import { type IdDecodingContext } from "./chunkDecoding.js";
11
10
  import type { FieldBatch } from "./fieldBatch.js";
12
11
  import { EncodedFieldBatchV2, FieldBatchFormatVersion } from "./format/index.js";
13
12
  import type { IncrementalEncodingPolicy } from "./incrementalEncodingPolicy.js";
@@ -101,13 +100,8 @@ export interface FieldBatchEncodingContext {
101
100
  * op-style and summary-style decoding is load-bearing (different invariants
102
101
  * apply, and bugs in this area are typically the result of conflating them).
103
102
  */
104
- export declare class FieldBatchDecodingContext implements IdDecodingContext {
105
- /**
106
- * Used internally to prevent the use of this decoder in incremental chunks if it has a session id (which would be wrong in those chunks).
107
- */
108
- private readonly hasOriginatorSessionId;
109
- readonly idCompressor: Pick<IIdCompressor, "decompress">;
110
- readonly resolveEncodedId: (id: OpSpaceCompressedId) => SessionSpaceCompressedId | string;
103
+ export declare class FieldBatchDecodingContext extends IdDecodingContext {
104
+ private readonly options;
111
105
  /**
112
106
  * Decoder for incremental fields. Defined when the encoded batch contains
113
107
  * incremental chunks. Only populated on summary-style contexts; op-style
@@ -124,10 +118,7 @@ export declare class FieldBatchDecodingContext implements IdDecodingContext {
124
118
  * not a recoverable state, so the resolver throws rather than synthesizing
125
119
  * a UUID. Incremental decoding is not used for ops.
126
120
  */
127
- static forOp(opts: {
128
- readonly idCompressor: IIdCompressor;
129
- readonly originatorId: SessionId;
130
- }): FieldBatchDecodingContext;
121
+ static forOp(options: IdDecoderOptionsWithOriginator): FieldBatchDecodingContext;
131
122
  /**
132
123
  * Construct a decode context for a summary blob.
133
124
  *
@@ -144,10 +135,7 @@ export declare class FieldBatchDecodingContext implements IdDecodingContext {
144
135
  * `withIncrementalDecoder` has logic to guard against cases which expect session-relative identifiers in incremental chunks,
145
136
  * as does the encoding-side assert in the {@link EncoderContext}.
146
137
  */
147
- static forSummary(opts: {
148
- readonly idCompressor: IIdCompressor;
149
- readonly healing?: IdentifierHealingConfig;
150
- }): FieldBatchDecodingContext;
138
+ static forSummary(options: IdDecoderOptionsOriginatorless | IdDecoderOptionsWithOriginator): FieldBatchDecodingContext;
151
139
  /**
152
140
  * Returns a copy of this context with `incrementalDecoder` swapped in. Used by
153
141
  * the forest summarizer to attach the per-call incremental builder to a base
@@ -1 +1 @@
1
- {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../../../src/feature-libraries/chunked-forest/codec/codecs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../../../src/feature-libraries/chunked-forest/codec/codecs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,OAAO,EACN,8BAA8B,EAE9B,KAAK,uBAAuB,EAE5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEN,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EAGpB,KAAK,SAAS,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEN,iBAAiB,EACjB,KAAK,KAAK,EACV,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAEN,mBAAmB,EACnB,uBAAuB,EAGvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAIhF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;AAGxE;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,yBAAyB,EAAE,yBAAyB,CAAC;IACrD;;;;;;;OAOG;IACH,sBAAsB,CACrB,MAAM,EAAE,sBAAsB,EAC9B,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,mBAAmB,GACrD,gBAAgB,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;;OAKG;IACH,sBAAsB,CACrB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,SAAS,GACvD,SAAS,CAAC;CACb;AACD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB,EAAE,kBAAkB;CAAG;AAE5F;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB;;;;OAIG;aACa,kBAAkB,CAAC;IAPpC,OAAO;IAYP;;;;;;;;OAQG;WACW,KAAK,CAAC,OAAO,EAAE,8BAA8B,GAAG,yBAAyB;IAIvF;;;;;;;;;;;;;;;OAeG;WACW,UAAU,CACvB,OAAO,EAAE,8BAA8B,GAAG,8BAA8B,GACtE,yBAAyB;IAI5B;;;;OAIG;IACI,sBAAsB,CAC5B,kBAAkB,EAAE,kBAAkB,GACpC,yBAAyB;CAY5B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,uBAAuB,CACpD,UAAU,EACV,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,CACzB,CAAC;AAkFF;;GAEG;AACH,eAAO,MAAM,sBAAsB,4OAqBjC,CAAC"}
@@ -29,21 +29,16 @@ const ChunkReferenceId = (0, index_js_2.brandedNumberType)({ multipleOf: 1, mini
29
29
  * op-style and summary-style decoding is load-bearing (different invariants
30
30
  * apply, and bugs in this area are typically the result of conflating them).
31
31
  */
32
- class FieldBatchDecodingContext {
33
- constructor(
34
- /**
35
- * Used internally to prevent the use of this decoder in incremental chunks if it has a session id (which would be wrong in those chunks).
36
- */
37
- hasOriginatorSessionId, idCompressor, resolveEncodedId,
32
+ class FieldBatchDecodingContext extends index_js_2.IdDecodingContext {
33
+ constructor(options,
38
34
  /**
39
35
  * Decoder for incremental fields. Defined when the encoded batch contains
40
36
  * incremental chunks. Only populated on summary-style contexts; op-style
41
37
  * contexts always have this undefined.
42
38
  */
43
39
  incrementalDecoder) {
44
- this.hasOriginatorSessionId = hasOriginatorSessionId;
45
- this.idCompressor = idCompressor;
46
- this.resolveEncodedId = resolveEncodedId;
40
+ super(options);
41
+ this.options = options;
47
42
  this.incrementalDecoder = incrementalDecoder;
48
43
  }
49
44
  /**
@@ -55,9 +50,8 @@ class FieldBatchDecodingContext {
55
50
  * not a recoverable state, so the resolver throws rather than synthesizing
56
51
  * a UUID. Incremental decoding is not used for ops.
57
52
  */
58
- static forOp(opts) {
59
- const { idCompressor, originatorId } = opts;
60
- return new FieldBatchDecodingContext(true, idCompressor, (id) => idCompressor.normalizeToSessionSpace(id, originatorId));
53
+ static forOp(options) {
54
+ return new FieldBatchDecodingContext(options);
61
55
  }
62
56
  /**
63
57
  * Construct a decode context for a summary blob.
@@ -75,9 +69,8 @@ class FieldBatchDecodingContext {
75
69
  * `withIncrementalDecoder` has logic to guard against cases which expect session-relative identifiers in incremental chunks,
76
70
  * as does the encoding-side assert in the {@link EncoderContext}.
77
71
  */
78
- static forSummary(opts) {
79
- const { idCompressor, healing } = opts;
80
- return new FieldBatchDecodingContext(false, idCompressor, (id) => (0, index_js_2.forceDecodeEncodedIdWithoutSession)(id, idCompressor, healing));
72
+ static forSummary(options) {
73
+ return new FieldBatchDecodingContext(options);
81
74
  }
82
75
  /**
83
76
  * Returns a copy of this context with `incrementalDecoder` swapped in. Used by
@@ -91,7 +84,7 @@ class FieldBatchDecodingContext {
91
84
  // This mitigates the risk of using incorrect originator session ID identifiers in incremental chunks.
92
85
  // See also private remarks on forSummary.
93
86
  (0, internal_1.assert)(!this.hasOriginatorSessionId, 0xd0c /* withIncrementalDecoder can only be called on contexts without an originator session ID */);
94
- return new FieldBatchDecodingContext(false, this.idCompressor, this.resolveEncodedId, incrementalDecoder);
87
+ return new FieldBatchDecodingContext(this.options, incrementalDecoder);
95
88
  }
96
89
  }
97
90
  exports.FieldBatchDecodingContext = FieldBatchDecodingContext;
@@ -1 +1 @@
1
- {"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../../../src/feature-libraries/chunked-forest/codec/codecs.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 } from \"@fluidframework/core-utils/internal\";\nimport type {\n\tIIdCompressor,\n\tOpSpaceCompressedId,\n\tSessionId,\n\tSessionSpaceCompressedId,\n} from \"@fluidframework/id-compressor\";\nimport { lowestMinVersionForCollab } from \"@fluidframework/runtime-utils/internal\";\nimport type { TSchema } from \"@sinclair/typebox\";\n\nimport {\n\tVersionDispatchingCodecBuilder,\n\ttype CodecAndSchema,\n\ttype VersionDispatchingCodec,\n\tFluidClientVersion,\n} from \"../../../codec/index.js\";\nimport {\n\tCursorLocationType,\n\ttype ITreeCursorSynchronous,\n\ttype SchemaAndPolicy,\n\ttype SchemaPolicy,\n\ttype StoredSchemaCollection,\n\ttype TreeChunk,\n} from \"../../../core/index.js\";\nimport {\n\tbrandedNumberType,\n\tforceDecodeEncodedIdWithoutSession,\n\ttype Brand,\n\ttype IdentifierHealingConfig,\n} from \"../../../util/index.js\";\nimport { TreeCompressionStrategy } from \"../../treeCompressionUtils.js\";\n\nimport { decode, type IdDecodingContext } from \"./chunkDecoding.js\";\nimport type { FieldBatch } from \"./fieldBatch.js\";\nimport {\n\tEncodedFieldBatchV1,\n\tEncodedFieldBatchV2,\n\tFieldBatchFormatVersion,\n\tsupportsIncrementalEncoding,\n\ttype EncodedFieldBatchV1OrV2,\n} from \"./format/index.js\";\nimport type { IncrementalEncodingPolicy } from \"./incrementalEncodingPolicy.js\";\nimport { schemaCompressedEncodeV1, schemaCompressedEncodeV2 } from \"./schemaBasedEncode.js\";\nimport { uncompressedEncodeV1, uncompressedEncodeV2 } from \"./uncompressedEncode.js\";\n\n/**\n * Reference ID for a chunk that is incrementally encoded.\n */\nexport type ChunkReferenceId = Brand<number, \"forest.ChunkReferenceId\">;\nconst ChunkReferenceId = brandedNumberType<ChunkReferenceId>({ multipleOf: 1, minimum: 0 });\n\n/**\n * Properties for incremental encoding.\n * Fields that support incremental encoding will encode their chunks separately by calling `encodeIncrementalField`.\n * @remarks\n * This supports features like incremental summarization where the summary from these fields can be re-used if\n * unchanged between summaries.\n * Note that each of these chunks that are incrementally encoded is fully self-describing (contain its own shapes\n * list and identifier table) and does not rely on context from its parent.\n */\nexport interface IncrementalEncoder {\n\t/**\n\t * Returns whether a node / field should be incrementally encoded.\n\t * @remarks See {@link IncrementalEncodingPolicy}.\n\t */\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy;\n\t/**\n\t * Called to encode an incremental field at the cursor.\n\t * The chunks for this field are encoded separately from the main buffer.\n\t * @param cursor - The cursor pointing to the field to encode.\n\t * @param chunkEncoder - A function that encodes the contents of the passed chunk in the field.\n\t * @returns The reference IDs of the encoded chunks in the field.\n\t * This is used to retrieve the encoded chunks later.\n\t */\n\tencodeIncrementalField(\n\t\tcursor: ITreeCursorSynchronous,\n\t\tchunkEncoder: (chunk: TreeChunk) => EncodedFieldBatchV2,\n\t): ChunkReferenceId[];\n}\n\n/**\n * Properties for incremental decoding.\n *\n * Fields that had their chunks incrementally encoded will retrieve them by calling `getEncodedIncrementalChunk`.\n * @remarks\n * See {@link IncrementalEncoder} for more details.\n */\nexport interface IncrementalDecoder {\n\t/**\n\t * Called to decode an incremental chunk with the given reference ID.\n\t * @param referenceId - The reference ID of the chunk to decode.\n\t * @param chunkDecoder - A function that decodes the chunk.\n\t * @returns The decoded chunk.\n\t */\n\tdecodeIncrementalChunk(\n\t\treferenceId: ChunkReferenceId,\n\t\tchunkDecoder: (encoded: EncodedFieldBatchV2) => TreeChunk,\n\t): TreeChunk;\n}\n/**\n * Combines the properties of {@link IncrementalEncoder} and {@link IncrementalDecoder}.\n */\nexport interface IncrementalEncoderDecoder extends IncrementalEncoder, IncrementalDecoder {}\n\n/**\n * Encode-side context for {@link FieldBatchCodec}.\n *\n * Carries only the data the encoder actually consumes. Originator-session\n * lookup, heal flags, and the incremental *decoder* live on\n * {@link FieldBatchDecodingContext}.\n */\nexport interface FieldBatchEncodingContext {\n\treadonly encodeType: TreeCompressionStrategy;\n\treadonly idCompressor: IIdCompressor;\n\treadonly schema?: SchemaAndPolicy;\n\t/**\n\t * Encoder for incremental fields. Defined when incremental encoding is\n\t * supported and enabled.\n\t */\n\treadonly incrementalEncoder?: IncrementalEncoder;\n\t/**\n\t * `true` when encoding to a summary blob. `false` for op-stream encode\n\t * paths and for utility encoders that aren't tied to a persisted document.\n\t *\n\t * @remarks\n\t * Used by the node encoder to decide whether non-finalized op-space ids\n\t * can be written into the batch (they can't, for summaries).\n\t */\n\treadonly isSummary: boolean;\n}\n\n/**\n * Decode-side context for {@link FieldBatchCodec}.\n *\n * Carries the per-call `resolveEncodedId` function that encapsulates the\n * originator-session lookup and (for the forest-summarizer's legacy heal path)\n * the deterministic UUIDv5 synthesis. Heal and originator-session flags live\n * inside that function, not on this context.\n *\n * Constructed via one of the two named static factories — {@link forOp} or\n * {@link forSummary} — depending on the call site's semantics. The constructor\n * is private; there is no general-purpose builder, because the choice between\n * op-style and summary-style decoding is load-bearing (different invariants\n * apply, and bugs in this area are typically the result of conflating them).\n */\nexport class FieldBatchDecodingContext implements IdDecodingContext {\n\tprivate constructor(\n\t\t/**\n\t\t * Used internally to prevent the use of this decoder in incremental chunks if it has a session id (which would be wrong in those chunks).\n\t\t */\n\t\tprivate readonly hasOriginatorSessionId: boolean,\n\n\t\tpublic readonly idCompressor: Pick<IIdCompressor, \"decompress\">,\n\n\t\tpublic readonly resolveEncodedId: (\n\t\t\tid: OpSpaceCompressedId,\n\t\t) => SessionSpaceCompressedId | string,\n\n\t\t/**\n\t\t * Decoder for incremental fields. Defined when the encoded batch contains\n\t\t * incremental chunks. Only populated on summary-style contexts; op-style\n\t\t * contexts always have this undefined.\n\t\t */\n\t\tpublic readonly incrementalDecoder?: IncrementalDecoder,\n\t) {}\n\n\t/**\n\t * Construct a decode context for an op.\n\t *\n\t * The originator is the session that produced the encoded form (carried\n\t * alongside the op envelope by the caller). Heal-on-decode is *not*\n\t * available — an unresolvable id during op decode indicates a real bug,\n\t * not a recoverable state, so the resolver throws rather than synthesizing\n\t * a UUID. Incremental decoding is not used for ops.\n\t */\n\tpublic static forOp(opts: {\n\t\treadonly idCompressor: IIdCompressor;\n\t\treadonly originatorId: SessionId;\n\t}): FieldBatchDecodingContext {\n\t\tconst { idCompressor, originatorId } = opts;\n\t\treturn new FieldBatchDecodingContext(true, idCompressor, (id) =>\n\t\t\tidCompressor.normalizeToSessionSpace(id, originatorId),\n\t\t);\n\t}\n\n\t/**\n\t * Construct a decode context for a summary blob.\n\t *\n\t * Summaries must contain only ids resolvable without an originator — either\n\t * finalized op-space ids, or (when {@link IdentifierHealingConfig} is supplied\n\t * via `healing`) non-final ids that get healed into deterministic UUIDv5\n\t * strings. Incremental decoding is attached via {@link withIncrementalDecoder}.\n\t *\n\t * @privateRemarks\n\t * In the future (if adding a summary format which includes the session id),\n\t * this could allow providing an originator ID to allow for op-space compressed identifiers in attach summaries.\n\t * Non-attach summaries should only have finalized compressed identifiers (due to only being made by summary clients which never allocate identifiers since they never edit).\n\t * Since only non-attach summaries can be incremental, incremental summaries should never have non finalized identifiers.\n\t * `withIncrementalDecoder` has logic to guard against cases which expect session-relative identifiers in incremental chunks,\n\t * as does the encoding-side assert in the {@link EncoderContext}.\n\t */\n\tpublic static forSummary(opts: {\n\t\treadonly idCompressor: IIdCompressor;\n\t\treadonly healing?: IdentifierHealingConfig;\n\t}): FieldBatchDecodingContext {\n\t\tconst { idCompressor, healing } = opts;\n\t\treturn new FieldBatchDecodingContext(false, idCompressor, (id) =>\n\t\t\tforceDecodeEncodedIdWithoutSession(id, idCompressor, healing),\n\t\t);\n\t}\n\n\t/**\n\t * Returns a copy of this context with `incrementalDecoder` swapped in. Used by\n\t * the forest summarizer to attach the per-call incremental builder to a base\n\t * decode context.\n\t */\n\tpublic withIncrementalDecoder(\n\t\tincrementalDecoder: IncrementalDecoder,\n\t): FieldBatchDecodingContext {\n\t\t// As different incremental chunks may come from different sessions,\n\t\t// for now we simply enforce that we do not provide an originator session ID\n\t\t// when we might be dealing with incremental chunks.\n\t\t// This mitigates the risk of using incorrect originator session ID identifiers in incremental chunks.\n\t\t// See also private remarks on forSummary.\n\t\tassert(\n\t\t\t!this.hasOriginatorSessionId,\n\t\t\t0xd0c /* withIncrementalDecoder can only be called on contexts without an originator session ID */,\n\t\t);\n\t\treturn new FieldBatchDecodingContext(\n\t\t\tfalse,\n\t\t\tthis.idCompressor,\n\t\t\tthis.resolveEncodedId,\n\t\t\tincrementalDecoder,\n\t\t);\n\t}\n}\n\n/**\n * @remarks\n * Fields in this batch currently don't have field schema for the root, which limits optimizations.\n */\nexport type FieldBatchCodec = VersionDispatchingCodec<\n\tFieldBatch,\n\tFieldBatchEncodingContext,\n\tFieldBatchFormatVersion,\n\tFieldBatchDecodingContext\n>;\n\n/**\n * Creates the encode/decode functions for a specific FieldBatch format version.\n */\nfunction makeFieldBatchCodecForVersion(\n\tversion: FieldBatchFormatVersion,\n\tuncompressedEncodeFn: (batch: FieldBatch) => EncodedFieldBatchV1OrV2,\n\tschemaCompressedEncodeFn: (\n\t\tschema: StoredSchemaCollection,\n\t\tpolicy: SchemaPolicy,\n\t\tfieldBatch: FieldBatch,\n\t\tidCompressor: IIdCompressor,\n\t\tincrementalEncoder: IncrementalEncoder | undefined,\n\t\tisSummary: boolean,\n\t) => EncodedFieldBatchV1OrV2,\n\tencodedFieldBatchType: TSchema,\n): CodecAndSchema<FieldBatch, FieldBatchEncodingContext, FieldBatchDecodingContext> {\n\treturn {\n\t\tencode: (\n\t\t\tdata: FieldBatch,\n\t\t\tcontext: FieldBatchEncodingContext,\n\t\t): EncodedFieldBatchV1OrV2 => {\n\t\t\tfor (const cursor of data) {\n\t\t\t\tassert(\n\t\t\t\t\tcursor.mode === CursorLocationType.Fields,\n\t\t\t\t\t0x8a3 /* FieldBatch expects fields cursors */,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet encoded: EncodedFieldBatchV1OrV2;\n\t\t\tlet incrementalEncoder: IncrementalEncoder | undefined;\n\t\t\tswitch (context.encodeType) {\n\t\t\t\tcase TreeCompressionStrategy.Uncompressed: {\n\t\t\t\t\tencoded = uncompressedEncodeFn(data);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase TreeCompressionStrategy.CompressedIncremental: {\n\t\t\t\t\tassert(\n\t\t\t\t\t\tsupportsIncrementalEncoding(version),\n\t\t\t\t\t\t0xca0 /* Unsupported FieldBatchFormatVersion for incremental encoding; must be v2 or higher */,\n\t\t\t\t\t);\n\t\t\t\t\t// Incremental encoding is only supported for CompressedIncremental.\n\t\t\t\t\tincrementalEncoder = context.incrementalEncoder;\n\t\t\t\t}\n\t\t\t\t// fallthrough\n\t\t\t\tcase TreeCompressionStrategy.Compressed: {\n\t\t\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\t\t\tif (context.schema === undefined) {\n\t\t\t\t\t\t// TODO: consider enabling a somewhat compressed but not schema accelerated encode.\n\t\t\t\t\t\tencoded = uncompressedEncodeFn(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tencoded = schemaCompressedEncodeFn(\n\t\t\t\t\t\t\tcontext.schema.schema,\n\t\t\t\t\t\t\tcontext.schema.policy,\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\tcontext.idCompressor,\n\t\t\t\t\t\t\tincrementalEncoder,\n\t\t\t\t\t\t\tcontext.isSummary,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tunreachableCase(context.encodeType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: consider checking input data was in schema.\n\t\t\treturn encoded;\n\t\t},\n\t\tdecode: (\n\t\t\tdata: EncodedFieldBatchV1OrV2,\n\t\t\tcontext: FieldBatchDecodingContext,\n\t\t): FieldBatch => {\n\t\t\t// TODO: consider checking data is in schema.\n\t\t\treturn decode(data, context, context.incrementalDecoder).map((chunk) => chunk.cursor());\n\t\t},\n\t\tschema: encodedFieldBatchType,\n\t};\n}\n\n/**\n * {@link VersionDispatchingCodecBuilder} for field batch codecs.\n */\nexport const fieldBatchCodecBuilder = VersionDispatchingCodecBuilder.build(\"FieldBatch\", [\n\t{\n\t\tminVersionForCollab: lowestMinVersionForCollab,\n\t\tformatVersion: FieldBatchFormatVersion.v1,\n\t\tcodec: makeFieldBatchCodecForVersion(\n\t\t\tFieldBatchFormatVersion.v1,\n\t\t\tuncompressedEncodeV1,\n\t\t\tschemaCompressedEncodeV1,\n\t\t\tEncodedFieldBatchV1,\n\t\t),\n\t},\n\t{\n\t\tminVersionForCollab: FluidClientVersion.v2_73,\n\t\tformatVersion: FieldBatchFormatVersion.v2,\n\t\tcodec: makeFieldBatchCodecForVersion(\n\t\t\tFieldBatchFormatVersion.v2,\n\t\t\tuncompressedEncodeV2,\n\t\t\tschemaCompressedEncodeV2,\n\t\t\tEncodedFieldBatchV2,\n\t\t),\n\t},\n]);\n"]}
1
+ {"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../../../src/feature-libraries/chunked-forest/codec/codecs.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 } from \"@fluidframework/core-utils/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport { lowestMinVersionForCollab } from \"@fluidframework/runtime-utils/internal\";\nimport type { TSchema } from \"@sinclair/typebox\";\n\nimport {\n\tVersionDispatchingCodecBuilder,\n\ttype CodecAndSchema,\n\ttype VersionDispatchingCodec,\n\tFluidClientVersion,\n} from \"../../../codec/index.js\";\nimport {\n\tCursorLocationType,\n\ttype ITreeCursorSynchronous,\n\ttype SchemaAndPolicy,\n\ttype SchemaPolicy,\n\ttype StoredSchemaCollection,\n\ttype TreeChunk,\n} from \"../../../core/index.js\";\nimport {\n\tbrandedNumberType,\n\tIdDecodingContext,\n\ttype Brand,\n\ttype IdDecoderOptionsOriginatorless,\n\ttype IdDecoderOptionsWithOriginator,\n} from \"../../../util/index.js\";\nimport { TreeCompressionStrategy } from \"../../treeCompressionUtils.js\";\n\nimport { decode } from \"./chunkDecoding.js\";\nimport type { FieldBatch } from \"./fieldBatch.js\";\nimport {\n\tEncodedFieldBatchV1,\n\tEncodedFieldBatchV2,\n\tFieldBatchFormatVersion,\n\tsupportsIncrementalEncoding,\n\ttype EncodedFieldBatchV1OrV2,\n} from \"./format/index.js\";\nimport type { IncrementalEncodingPolicy } from \"./incrementalEncodingPolicy.js\";\nimport { schemaCompressedEncodeV1, schemaCompressedEncodeV2 } from \"./schemaBasedEncode.js\";\nimport { uncompressedEncodeV1, uncompressedEncodeV2 } from \"./uncompressedEncode.js\";\n\n/**\n * Reference ID for a chunk that is incrementally encoded.\n */\nexport type ChunkReferenceId = Brand<number, \"forest.ChunkReferenceId\">;\nconst ChunkReferenceId = brandedNumberType<ChunkReferenceId>({ multipleOf: 1, minimum: 0 });\n\n/**\n * Properties for incremental encoding.\n * Fields that support incremental encoding will encode their chunks separately by calling `encodeIncrementalField`.\n * @remarks\n * This supports features like incremental summarization where the summary from these fields can be re-used if\n * unchanged between summaries.\n * Note that each of these chunks that are incrementally encoded is fully self-describing (contain its own shapes\n * list and identifier table) and does not rely on context from its parent.\n */\nexport interface IncrementalEncoder {\n\t/**\n\t * Returns whether a node / field should be incrementally encoded.\n\t * @remarks See {@link IncrementalEncodingPolicy}.\n\t */\n\tshouldEncodeIncrementally: IncrementalEncodingPolicy;\n\t/**\n\t * Called to encode an incremental field at the cursor.\n\t * The chunks for this field are encoded separately from the main buffer.\n\t * @param cursor - The cursor pointing to the field to encode.\n\t * @param chunkEncoder - A function that encodes the contents of the passed chunk in the field.\n\t * @returns The reference IDs of the encoded chunks in the field.\n\t * This is used to retrieve the encoded chunks later.\n\t */\n\tencodeIncrementalField(\n\t\tcursor: ITreeCursorSynchronous,\n\t\tchunkEncoder: (chunk: TreeChunk) => EncodedFieldBatchV2,\n\t): ChunkReferenceId[];\n}\n\n/**\n * Properties for incremental decoding.\n *\n * Fields that had their chunks incrementally encoded will retrieve them by calling `getEncodedIncrementalChunk`.\n * @remarks\n * See {@link IncrementalEncoder} for more details.\n */\nexport interface IncrementalDecoder {\n\t/**\n\t * Called to decode an incremental chunk with the given reference ID.\n\t * @param referenceId - The reference ID of the chunk to decode.\n\t * @param chunkDecoder - A function that decodes the chunk.\n\t * @returns The decoded chunk.\n\t */\n\tdecodeIncrementalChunk(\n\t\treferenceId: ChunkReferenceId,\n\t\tchunkDecoder: (encoded: EncodedFieldBatchV2) => TreeChunk,\n\t): TreeChunk;\n}\n/**\n * Combines the properties of {@link IncrementalEncoder} and {@link IncrementalDecoder}.\n */\nexport interface IncrementalEncoderDecoder extends IncrementalEncoder, IncrementalDecoder {}\n\n/**\n * Encode-side context for {@link FieldBatchCodec}.\n *\n * Carries only the data the encoder actually consumes. Originator-session\n * lookup, heal flags, and the incremental *decoder* live on\n * {@link FieldBatchDecodingContext}.\n */\nexport interface FieldBatchEncodingContext {\n\treadonly encodeType: TreeCompressionStrategy;\n\treadonly idCompressor: IIdCompressor;\n\treadonly schema?: SchemaAndPolicy;\n\t/**\n\t * Encoder for incremental fields. Defined when incremental encoding is\n\t * supported and enabled.\n\t */\n\treadonly incrementalEncoder?: IncrementalEncoder;\n\t/**\n\t * `true` when encoding to a summary blob. `false` for op-stream encode\n\t * paths and for utility encoders that aren't tied to a persisted document.\n\t *\n\t * @remarks\n\t * Used by the node encoder to decide whether non-finalized op-space ids\n\t * can be written into the batch (they can't, for summaries).\n\t */\n\treadonly isSummary: boolean;\n}\n\n/**\n * Decode-side context for {@link FieldBatchCodec}.\n *\n * Carries the per-call `resolveEncodedId` function that encapsulates the\n * originator-session lookup and (for the forest-summarizer's legacy heal path)\n * the deterministic UUIDv5 synthesis. Heal and originator-session flags live\n * inside that function, not on this context.\n *\n * Constructed via one of the two named static factories — {@link forOp} or\n * {@link forSummary} — depending on the call site's semantics. The constructor\n * is private; there is no general-purpose builder, because the choice between\n * op-style and summary-style decoding is load-bearing (different invariants\n * apply, and bugs in this area are typically the result of conflating them).\n */\nexport class FieldBatchDecodingContext extends IdDecodingContext {\n\tprivate constructor(\n\t\tprivate readonly options: IdDecoderOptionsOriginatorless | IdDecoderOptionsWithOriginator,\n\t\t/**\n\t\t * Decoder for incremental fields. Defined when the encoded batch contains\n\t\t * incremental chunks. Only populated on summary-style contexts; op-style\n\t\t * contexts always have this undefined.\n\t\t */\n\t\tpublic readonly incrementalDecoder?: IncrementalDecoder,\n\t) {\n\t\tsuper(options);\n\t}\n\n\t/**\n\t * Construct a decode context for an op.\n\t *\n\t * The originator is the session that produced the encoded form (carried\n\t * alongside the op envelope by the caller). Heal-on-decode is *not*\n\t * available — an unresolvable id during op decode indicates a real bug,\n\t * not a recoverable state, so the resolver throws rather than synthesizing\n\t * a UUID. Incremental decoding is not used for ops.\n\t */\n\tpublic static forOp(options: IdDecoderOptionsWithOriginator): FieldBatchDecodingContext {\n\t\treturn new FieldBatchDecodingContext(options);\n\t}\n\n\t/**\n\t * Construct a decode context for a summary blob.\n\t *\n\t * Summaries must contain only ids resolvable without an originator — either\n\t * finalized op-space ids, or (when {@link IdentifierHealingConfig} is supplied\n\t * via `healing`) non-final ids that get healed into deterministic UUIDv5\n\t * strings. Incremental decoding is attached via {@link withIncrementalDecoder}.\n\t *\n\t * @privateRemarks\n\t * In the future (if adding a summary format which includes the session id),\n\t * this could allow providing an originator ID to allow for op-space compressed identifiers in attach summaries.\n\t * Non-attach summaries should only have finalized compressed identifiers (due to only being made by summary clients which never allocate identifiers since they never edit).\n\t * Since only non-attach summaries can be incremental, incremental summaries should never have non finalized identifiers.\n\t * `withIncrementalDecoder` has logic to guard against cases which expect session-relative identifiers in incremental chunks,\n\t * as does the encoding-side assert in the {@link EncoderContext}.\n\t */\n\tpublic static forSummary(\n\t\toptions: IdDecoderOptionsOriginatorless | IdDecoderOptionsWithOriginator,\n\t): FieldBatchDecodingContext {\n\t\treturn new FieldBatchDecodingContext(options);\n\t}\n\n\t/**\n\t * Returns a copy of this context with `incrementalDecoder` swapped in. Used by\n\t * the forest summarizer to attach the per-call incremental builder to a base\n\t * decode context.\n\t */\n\tpublic withIncrementalDecoder(\n\t\tincrementalDecoder: IncrementalDecoder,\n\t): FieldBatchDecodingContext {\n\t\t// As different incremental chunks may come from different sessions,\n\t\t// for now we simply enforce that we do not provide an originator session ID\n\t\t// when we might be dealing with incremental chunks.\n\t\t// This mitigates the risk of using incorrect originator session ID identifiers in incremental chunks.\n\t\t// See also private remarks on forSummary.\n\t\tassert(\n\t\t\t!this.hasOriginatorSessionId,\n\t\t\t0xd0c /* withIncrementalDecoder can only be called on contexts without an originator session ID */,\n\t\t);\n\t\treturn new FieldBatchDecodingContext(this.options, incrementalDecoder);\n\t}\n}\n\n/**\n * @remarks\n * Fields in this batch currently don't have field schema for the root, which limits optimizations.\n */\nexport type FieldBatchCodec = VersionDispatchingCodec<\n\tFieldBatch,\n\tFieldBatchEncodingContext,\n\tFieldBatchFormatVersion,\n\tFieldBatchDecodingContext\n>;\n\n/**\n * Creates the encode/decode functions for a specific FieldBatch format version.\n */\nfunction makeFieldBatchCodecForVersion(\n\tversion: FieldBatchFormatVersion,\n\tuncompressedEncodeFn: (batch: FieldBatch) => EncodedFieldBatchV1OrV2,\n\tschemaCompressedEncodeFn: (\n\t\tschema: StoredSchemaCollection,\n\t\tpolicy: SchemaPolicy,\n\t\tfieldBatch: FieldBatch,\n\t\tidCompressor: IIdCompressor,\n\t\tincrementalEncoder: IncrementalEncoder | undefined,\n\t\tisSummary: boolean,\n\t) => EncodedFieldBatchV1OrV2,\n\tencodedFieldBatchType: TSchema,\n): CodecAndSchema<FieldBatch, FieldBatchEncodingContext, FieldBatchDecodingContext> {\n\treturn {\n\t\tencode: (\n\t\t\tdata: FieldBatch,\n\t\t\tcontext: FieldBatchEncodingContext,\n\t\t): EncodedFieldBatchV1OrV2 => {\n\t\t\tfor (const cursor of data) {\n\t\t\t\tassert(\n\t\t\t\t\tcursor.mode === CursorLocationType.Fields,\n\t\t\t\t\t0x8a3 /* FieldBatch expects fields cursors */,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet encoded: EncodedFieldBatchV1OrV2;\n\t\t\tlet incrementalEncoder: IncrementalEncoder | undefined;\n\t\t\tswitch (context.encodeType) {\n\t\t\t\tcase TreeCompressionStrategy.Uncompressed: {\n\t\t\t\t\tencoded = uncompressedEncodeFn(data);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase TreeCompressionStrategy.CompressedIncremental: {\n\t\t\t\t\tassert(\n\t\t\t\t\t\tsupportsIncrementalEncoding(version),\n\t\t\t\t\t\t0xca0 /* Unsupported FieldBatchFormatVersion for incremental encoding; must be v2 or higher */,\n\t\t\t\t\t);\n\t\t\t\t\t// Incremental encoding is only supported for CompressedIncremental.\n\t\t\t\t\tincrementalEncoder = context.incrementalEncoder;\n\t\t\t\t}\n\t\t\t\t// fallthrough\n\t\t\t\tcase TreeCompressionStrategy.Compressed: {\n\t\t\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\t\t\tif (context.schema === undefined) {\n\t\t\t\t\t\t// TODO: consider enabling a somewhat compressed but not schema accelerated encode.\n\t\t\t\t\t\tencoded = uncompressedEncodeFn(data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tencoded = schemaCompressedEncodeFn(\n\t\t\t\t\t\t\tcontext.schema.schema,\n\t\t\t\t\t\t\tcontext.schema.policy,\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\tcontext.idCompressor,\n\t\t\t\t\t\t\tincrementalEncoder,\n\t\t\t\t\t\t\tcontext.isSummary,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tunreachableCase(context.encodeType);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: consider checking input data was in schema.\n\t\t\treturn encoded;\n\t\t},\n\t\tdecode: (\n\t\t\tdata: EncodedFieldBatchV1OrV2,\n\t\t\tcontext: FieldBatchDecodingContext,\n\t\t): FieldBatch => {\n\t\t\t// TODO: consider checking data is in schema.\n\t\t\treturn decode(data, context, context.incrementalDecoder).map((chunk) => chunk.cursor());\n\t\t},\n\t\tschema: encodedFieldBatchType,\n\t};\n}\n\n/**\n * {@link VersionDispatchingCodecBuilder} for field batch codecs.\n */\nexport const fieldBatchCodecBuilder = VersionDispatchingCodecBuilder.build(\"FieldBatch\", [\n\t{\n\t\tminVersionForCollab: lowestMinVersionForCollab,\n\t\tformatVersion: FieldBatchFormatVersion.v1,\n\t\tcodec: makeFieldBatchCodecForVersion(\n\t\t\tFieldBatchFormatVersion.v1,\n\t\t\tuncompressedEncodeV1,\n\t\t\tschemaCompressedEncodeV1,\n\t\t\tEncodedFieldBatchV1,\n\t\t),\n\t},\n\t{\n\t\tminVersionForCollab: FluidClientVersion.v2_73,\n\t\tformatVersion: FieldBatchFormatVersion.v2,\n\t\tcodec: makeFieldBatchCodecForVersion(\n\t\t\tFieldBatchFormatVersion.v2,\n\t\t\tuncompressedEncodeV2,\n\t\t\tschemaCompressedEncodeV2,\n\t\t\tEncodedFieldBatchV2,\n\t\t),\n\t},\n]);\n"]}
@@ -13,12 +13,12 @@ export { cursorForJsonableTreeNode, cursorForJsonableTreeField, jsonableTreeFrom
13
13
  export { buildNodeComparator, type NodeComparator, } from "./cursorComparator.js";
14
14
  import * as SequenceField from "./sequence-field/index.js";
15
15
  export { SequenceField };
16
- export { isNeverField, ModularEditBuilder, type FieldEditDescription as EditDescription, type FieldChangeHandler, type FieldChangeRebaser, type FieldEditor, type FieldChangeMap, type FieldChange, type FieldChangeset, type ToDelta, type ModularChangeset, makeModularChangeCodecFamily, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, type CrossFieldManager, CrossFieldTarget, FlexFieldKind, type FullSchemaPolicy, allowsRepoSuperset, type GenericChangeset, genericFieldKind, type HasFieldChanges, type NodeExistsConstraint, ModularChangeFamily, type RelevantRemovedRootsFromChild, EncodedModularChangesetV1, EncodedModularChangesetV2, updateRefreshers, type NodeId, type FieldChangeEncodingContext, type FieldKindConfiguration, type FieldKindConfigurationEntry, isNeverTree, DefaultRevisionReplacer, ModularChangeFormatVersion, } from "./modular-schema/index.js";
16
+ export { isNeverField, ModularEditBuilder, type FieldEditDescription as EditDescription, type FieldChangeHandler, type FieldChangeRebaser, type FieldEditor, type FieldChangeMap, type FieldChange, type FieldChangeset, type ToDelta, type ModularChangeset, makeModularChangeCodecFamily, type NodeChangeComposer, type NodeChangeInverter, type NodeChangeRebaser, type NodeChangePruner, type CrossFieldManager, CrossFieldTarget, FlexFieldKind, type FullSchemaPolicy, allowsRepoSuperset, type GenericChangeset, genericFieldKind, type HasFieldChanges, type NodeExistsConstraint, ModularChangeFamily, type RelevantRemovedRootsFromChild, EncodedModularChangesetV1, EncodedModularChangesetV2, updateRefreshers, type NodeId, type FieldChangeEncodingContext, type FieldKindConfiguration, type FieldKindConfigurationEntry, isNeverTree, DefaultRevisionReplacer, ModularChangeFormatVersion, minimizeModularChangeset, } from "./modular-schema/index.js";
17
17
  export { mapRootChanges } from "./deltaUtils.js";
18
18
  export { type TreeChunk, chunkTree, chunkField, chunkFieldSingle, buildChunkedForest, defaultChunkPolicy, type FieldBatch, type FieldBatchCodec, FieldBatchFormatVersion, makeTreeChunker, fieldBatchCodecBuilder, FieldBatchDecodingContext, type FieldBatchEncodingContext, emptyChunk, combineChunks, type IncrementalEncodingPolicy, defaultIncrementalEncodingPolicy, type IncrementalDecoder, type IncrementalEncoder, } from "./chunked-forest/index.js";
19
19
  export { compareLocalNodeIdentifiers, createNodeIdentifierManager, isStableNodeIdentifier, type LocalNodeIdentifier, MockNodeIdentifierManager, type NodeIdentifierManager, nodeKeyTreeIdentifier, type StableNodeIdentifier, } from "./node-identifier/index.js";
20
20
  export { FieldKinds, type DefaultChangeset, DefaultChangeFamily, DefaultEditBuilder, type IDefaultEditBuilder, type ValueFieldEditBuilder, type OptionalFieldEditBuilder, type SequenceFieldEditBuilder, defaultSchemaPolicy, fieldKinds, fieldKindConfigurations, intoDelta, relevantRemovedRoots, getCodecTreeForModularChangeFormat, } from "./default-schema/index.js";
21
- export { SchemaValidationError, isNodeInSchema, isFieldInSchema, throwOutOfSchema, } from "./schemaChecker.js";
21
+ export { SchemaValidationError, type SchemaValidationErrorContext, isNodeInSchema, isFieldInSchema, throwOutOfSchema, } from "./schemaChecker.js";
22
22
  export { type FlexTreeOptionalField, type FlexTreeRequiredField, type FlexTreeSequenceField, type FlexTreeContext, type FlexTreeHydratedContext, type FlexTreeTypedField, type FlexTreeEntity, type FlexTreeField, type FlexTreeNode, TreeStatus, Context, type FlexTreeNodeEvents, type FlexTreeUnknownUnboxed, isFlexTreeNode, ContextSlot, flexTreeMarker, assertFlexTreeEntityNotFreed, flexTreeSlot, getSchemaAndPolicy, LazyEntity, treeStatusFromAnchorCache, indexForAt, FlexTreeEntityKind, type FlexibleNodeContent, type FlexibleFieldContent, type FlexTreeHydratedContextMinimal, type HydratedFlexTreeNode, getOrCreateHydratedFlexTreeNode, currentObserver, withObservation, type Observer, } from "./flex-tree/index.js";
23
23
  export { TreeCompressionStrategy } from "./treeCompressionUtils.js";
24
24
  export { valueSchemaAllows } from "./valueUtilities.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/index.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.fieldBatchCodecBuilder = exports.makeTreeChunker = exports.FieldBatchFormatVersion = exports.defaultChunkPolicy = exports.buildChunkedForest = exports.chunkFieldSingle = exports.chunkField = exports.chunkTree = exports.mapRootChanges = exports.ModularChangeFormatVersion = exports.DefaultRevisionReplacer = exports.isNeverTree = exports.updateRefreshers = exports.EncodedModularChangesetV2 = exports.EncodedModularChangesetV1 = exports.ModularChangeFamily = exports.genericFieldKind = exports.allowsRepoSuperset = exports.FlexFieldKind = exports.CrossFieldTarget = exports.makeModularChangeCodecFamily = exports.ModularEditBuilder = exports.isNeverField = exports.SequenceField = exports.buildNodeComparator = exports.jsonableTreeFromForest = exports.jsonableTreeFromFieldCursor = exports.jsonableTreeFromCursor = exports.cursorForJsonableTreeField = exports.cursorForJsonableTreeNode = exports.stackTreeFieldCursor = exports.prefixFieldPath = exports.prefixPath = exports.stackTreeNodeCursor = exports.schemaCodecBuilder = exports.SchemaSummarizer = exports.buildForest = exports.mapTreeWithField = exports.mapTreeFieldsWithField = exports.mapTreeFieldFromCursor = exports.mapTreeFromCursor = exports.cursorForMapTreeNode = exports.cursorForMapTreeField = exports.ForestFormatVersion = exports.forestCodecBuilder = exports.ForestSummarizer = exports.isTreeValue = exports.assertAllowedValue = exports.allowsValue = exports.toDownPath = void 0;
8
- exports.setInChangeAtomIdMap = exports.getFromChangeAtomIdMap = exports.newChangeAtomIdBTree = exports.hasElement = exports.AnchorTreeIndex = exports.makeMitigatedChangeFamily = exports.EncodedSchemaChange = exports.makeSchemaChangeCodec = exports.DetachedFieldIndexSummarizer = exports.valueSchemaAllows = exports.TreeCompressionStrategy = exports.withObservation = exports.currentObserver = exports.getOrCreateHydratedFlexTreeNode = exports.FlexTreeEntityKind = exports.indexForAt = exports.treeStatusFromAnchorCache = exports.LazyEntity = exports.getSchemaAndPolicy = exports.flexTreeSlot = exports.assertFlexTreeEntityNotFreed = exports.flexTreeMarker = exports.ContextSlot = exports.isFlexTreeNode = exports.Context = exports.TreeStatus = exports.throwOutOfSchema = exports.isFieldInSchema = exports.isNodeInSchema = exports.SchemaValidationError = exports.getCodecTreeForModularChangeFormat = exports.relevantRemovedRoots = exports.intoDelta = exports.fieldKindConfigurations = exports.fieldKinds = exports.defaultSchemaPolicy = exports.DefaultEditBuilder = exports.DefaultChangeFamily = exports.FieldKinds = exports.nodeKeyTreeIdentifier = exports.MockNodeIdentifierManager = exports.isStableNodeIdentifier = exports.createNodeIdentifierManager = exports.compareLocalNodeIdentifiers = exports.defaultIncrementalEncodingPolicy = exports.combineChunks = exports.emptyChunk = exports.FieldBatchDecodingContext = void 0;
7
+ exports.makeTreeChunker = exports.FieldBatchFormatVersion = exports.defaultChunkPolicy = exports.buildChunkedForest = exports.chunkFieldSingle = exports.chunkField = exports.chunkTree = exports.mapRootChanges = exports.minimizeModularChangeset = exports.ModularChangeFormatVersion = exports.DefaultRevisionReplacer = exports.isNeverTree = exports.updateRefreshers = exports.EncodedModularChangesetV2 = exports.EncodedModularChangesetV1 = exports.ModularChangeFamily = exports.genericFieldKind = exports.allowsRepoSuperset = exports.FlexFieldKind = exports.CrossFieldTarget = exports.makeModularChangeCodecFamily = exports.ModularEditBuilder = exports.isNeverField = exports.SequenceField = exports.buildNodeComparator = exports.jsonableTreeFromForest = exports.jsonableTreeFromFieldCursor = exports.jsonableTreeFromCursor = exports.cursorForJsonableTreeField = exports.cursorForJsonableTreeNode = exports.stackTreeFieldCursor = exports.prefixFieldPath = exports.prefixPath = exports.stackTreeNodeCursor = exports.schemaCodecBuilder = exports.SchemaSummarizer = exports.buildForest = exports.mapTreeWithField = exports.mapTreeFieldsWithField = exports.mapTreeFieldFromCursor = exports.mapTreeFromCursor = exports.cursorForMapTreeNode = exports.cursorForMapTreeField = exports.ForestFormatVersion = exports.forestCodecBuilder = exports.ForestSummarizer = exports.isTreeValue = exports.assertAllowedValue = exports.allowsValue = exports.toDownPath = void 0;
8
+ exports.setInChangeAtomIdMap = exports.getFromChangeAtomIdMap = exports.newChangeAtomIdBTree = exports.hasElement = exports.AnchorTreeIndex = exports.makeMitigatedChangeFamily = exports.EncodedSchemaChange = exports.makeSchemaChangeCodec = exports.DetachedFieldIndexSummarizer = exports.valueSchemaAllows = exports.TreeCompressionStrategy = exports.withObservation = exports.currentObserver = exports.getOrCreateHydratedFlexTreeNode = exports.FlexTreeEntityKind = exports.indexForAt = exports.treeStatusFromAnchorCache = exports.LazyEntity = exports.getSchemaAndPolicy = exports.flexTreeSlot = exports.assertFlexTreeEntityNotFreed = exports.flexTreeMarker = exports.ContextSlot = exports.isFlexTreeNode = exports.Context = exports.TreeStatus = exports.throwOutOfSchema = exports.isFieldInSchema = exports.isNodeInSchema = exports.SchemaValidationError = exports.getCodecTreeForModularChangeFormat = exports.relevantRemovedRoots = exports.intoDelta = exports.fieldKindConfigurations = exports.fieldKinds = exports.defaultSchemaPolicy = exports.DefaultEditBuilder = exports.DefaultChangeFamily = exports.FieldKinds = exports.nodeKeyTreeIdentifier = exports.MockNodeIdentifierManager = exports.isStableNodeIdentifier = exports.createNodeIdentifierManager = exports.compareLocalNodeIdentifiers = exports.defaultIncrementalEncodingPolicy = exports.combineChunks = exports.emptyChunk = exports.FieldBatchDecodingContext = exports.fieldBatchCodecBuilder = void 0;
9
9
  const tslib_1 = require("tslib");
10
10
  var editableTreeBinder_js_1 = require("./editableTreeBinder.js");
11
11
  Object.defineProperty(exports, "toDownPath", { enumerable: true, get: function () { return editableTreeBinder_js_1.toDownPath; } });
@@ -59,6 +59,7 @@ Object.defineProperty(exports, "updateRefreshers", { enumerable: true, get: func
59
59
  Object.defineProperty(exports, "isNeverTree", { enumerable: true, get: function () { return index_js_4.isNeverTree; } });
60
60
  Object.defineProperty(exports, "DefaultRevisionReplacer", { enumerable: true, get: function () { return index_js_4.DefaultRevisionReplacer; } });
61
61
  Object.defineProperty(exports, "ModularChangeFormatVersion", { enumerable: true, get: function () { return index_js_4.ModularChangeFormatVersion; } });
62
+ Object.defineProperty(exports, "minimizeModularChangeset", { enumerable: true, get: function () { return index_js_4.minimizeModularChangeset; } });
62
63
  var deltaUtils_js_1 = require("./deltaUtils.js");
63
64
  Object.defineProperty(exports, "mapRootChanges", { enumerable: true, get: function () { return deltaUtils_js_1.mapRootChanges; } });
64
65
  var index_js_5 = require("./chunked-forest/index.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feature-libraries/index.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\nexport {\n\ttype DownPath,\n\ttoDownPath,\n} from \"./editableTreeBinder.js\";\nexport { allowsValue, assertAllowedValue, isTreeValue } from \"./valueUtilities.js\";\n\nexport {\n\tForestSummarizer,\n\tforestCodecBuilder,\n\tForestFormatVersion,\n} from \"./forest-summary/index.js\";\nexport {\n\tcursorForMapTreeField,\n\tcursorForMapTreeNode,\n\tmapTreeFromCursor,\n\tmapTreeFieldFromCursor,\n\ttype MinimalMapTreeNodeView,\n\tmapTreeFieldsWithField,\n\tmapTreeWithField,\n\ttype MapTreeFieldViewGeneric,\n\ttype MapTreeNodeViewGeneric,\n\ttype MinimalFieldMap,\n} from \"./mapTreeCursor.js\";\nexport { buildForest } from \"./object-forest/index.js\";\nexport {\n\tSchemaSummarizer,\n\tschemaCodecBuilder,\n} from \"./schema-index/index.js\";\nexport {\n\tstackTreeNodeCursor,\n\ttype CursorAdapter,\n\tprefixPath,\n\tprefixFieldPath,\n\ttype CursorWithNode,\n\tstackTreeFieldCursor,\n} from \"./treeCursorUtils.js\";\nexport {\n\tcursorForJsonableTreeNode,\n\tcursorForJsonableTreeField,\n\tjsonableTreeFromCursor,\n\tjsonableTreeFromFieldCursor,\n\tjsonableTreeFromForest,\n} from \"./treeTextCursor.js\";\nexport {\n\tbuildNodeComparator,\n\ttype NodeComparator,\n} from \"./cursorComparator.js\";\n\nimport * as SequenceField from \"./sequence-field/index.js\";\n// eslint-disable-next-line unicorn/prefer-export-from -- fixing requires `export * as` (breaks API-Extractor) or named exports (changes public API)\nexport { SequenceField };\n\nexport {\n\tisNeverField,\n\tModularEditBuilder,\n\ttype FieldEditDescription as EditDescription,\n\ttype FieldChangeHandler,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype FieldChangeMap,\n\ttype FieldChange,\n\ttype FieldChangeset,\n\ttype ToDelta,\n\ttype ModularChangeset,\n\tmakeModularChangeCodecFamily,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\ttype CrossFieldManager,\n\tCrossFieldTarget,\n\tFlexFieldKind,\n\ttype FullSchemaPolicy,\n\tallowsRepoSuperset,\n\ttype GenericChangeset,\n\tgenericFieldKind,\n\ttype HasFieldChanges,\n\ttype NodeExistsConstraint,\n\tModularChangeFamily,\n\ttype RelevantRemovedRootsFromChild,\n\tEncodedModularChangesetV1,\n\tEncodedModularChangesetV2,\n\tupdateRefreshers,\n\ttype NodeId,\n\ttype FieldChangeEncodingContext,\n\ttype FieldKindConfiguration,\n\ttype FieldKindConfigurationEntry,\n\tisNeverTree,\n\tDefaultRevisionReplacer,\n\tModularChangeFormatVersion,\n} from \"./modular-schema/index.js\";\n\nexport { mapRootChanges } from \"./deltaUtils.js\";\n\nexport {\n\ttype TreeChunk,\n\tchunkTree,\n\tchunkField,\n\tchunkFieldSingle,\n\tbuildChunkedForest,\n\tdefaultChunkPolicy,\n\ttype FieldBatch,\n\ttype FieldBatchCodec,\n\tFieldBatchFormatVersion,\n\tmakeTreeChunker,\n\tfieldBatchCodecBuilder,\n\tFieldBatchDecodingContext,\n\ttype FieldBatchEncodingContext,\n\temptyChunk,\n\tcombineChunks,\n\ttype IncrementalEncodingPolicy,\n\tdefaultIncrementalEncodingPolicy,\n\ttype IncrementalDecoder,\n\ttype IncrementalEncoder,\n} from \"./chunked-forest/index.js\";\n\nexport {\n\tcompareLocalNodeIdentifiers,\n\tcreateNodeIdentifierManager,\n\tisStableNodeIdentifier,\n\ttype LocalNodeIdentifier,\n\tMockNodeIdentifierManager,\n\ttype NodeIdentifierManager,\n\tnodeKeyTreeIdentifier,\n\ttype StableNodeIdentifier,\n} from \"./node-identifier/index.js\";\n\nexport {\n\tFieldKinds,\n\ttype DefaultChangeset,\n\tDefaultChangeFamily,\n\tDefaultEditBuilder,\n\ttype IDefaultEditBuilder,\n\ttype ValueFieldEditBuilder,\n\ttype OptionalFieldEditBuilder,\n\ttype SequenceFieldEditBuilder,\n\tdefaultSchemaPolicy,\n\tfieldKinds,\n\tfieldKindConfigurations,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tgetCodecTreeForModularChangeFormat,\n} from \"./default-schema/index.js\";\n\nexport {\n\tSchemaValidationError,\n\tisNodeInSchema,\n\tisFieldInSchema,\n\tthrowOutOfSchema,\n} from \"./schemaChecker.js\";\n\nexport {\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeSequenceField,\n\ttype FlexTreeContext,\n\ttype FlexTreeHydratedContext,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeEntity,\n\ttype FlexTreeField,\n\ttype FlexTreeNode,\n\tTreeStatus,\n\tContext,\n\ttype FlexTreeNodeEvents,\n\ttype FlexTreeUnknownUnboxed,\n\tisFlexTreeNode,\n\tContextSlot,\n\t// Internal\n\tflexTreeMarker,\n\tassertFlexTreeEntityNotFreed,\n\tflexTreeSlot,\n\tgetSchemaAndPolicy,\n\tLazyEntity,\n\ttreeStatusFromAnchorCache,\n\tindexForAt,\n\tFlexTreeEntityKind,\n\ttype FlexibleNodeContent,\n\ttype FlexibleFieldContent,\n\ttype FlexTreeHydratedContextMinimal,\n\ttype HydratedFlexTreeNode,\n\tgetOrCreateHydratedFlexTreeNode,\n\tcurrentObserver,\n\twithObservation,\n\ttype Observer,\n} from \"./flex-tree/index.js\";\n\nexport { TreeCompressionStrategy } from \"./treeCompressionUtils.js\";\n\nexport { valueSchemaAllows } from \"./valueUtilities.js\";\n\nexport { DetachedFieldIndexSummarizer } from \"./detachedFieldIndexSummarizer.js\";\n\nexport {\n\ttype SchemaChange,\n\tmakeSchemaChangeCodec,\n\tEncodedSchemaChange,\n} from \"./schema-edits/index.js\";\n\nexport { makeMitigatedChangeFamily } from \"./mitigatedChangeFamily.js\";\n\nexport {\n\ttype KeyFinder,\n\tAnchorTreeIndex,\n\thasElement,\n\ttype TreeIndex,\n\ttype TreeIndexNodes,\n} from \"./indexing/index.js\";\n\nexport {\n\ttype ChangeAtomIdBTree,\n\tnewChangeAtomIdBTree,\n\tgetFromChangeAtomIdMap,\n\tsetInChangeAtomIdMap,\n} from \"./changeAtomIdBTree.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feature-libraries/index.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\nexport {\n\ttype DownPath,\n\ttoDownPath,\n} from \"./editableTreeBinder.js\";\nexport { allowsValue, assertAllowedValue, isTreeValue } from \"./valueUtilities.js\";\n\nexport {\n\tForestSummarizer,\n\tforestCodecBuilder,\n\tForestFormatVersion,\n} from \"./forest-summary/index.js\";\nexport {\n\tcursorForMapTreeField,\n\tcursorForMapTreeNode,\n\tmapTreeFromCursor,\n\tmapTreeFieldFromCursor,\n\ttype MinimalMapTreeNodeView,\n\tmapTreeFieldsWithField,\n\tmapTreeWithField,\n\ttype MapTreeFieldViewGeneric,\n\ttype MapTreeNodeViewGeneric,\n\ttype MinimalFieldMap,\n} from \"./mapTreeCursor.js\";\nexport { buildForest } from \"./object-forest/index.js\";\nexport {\n\tSchemaSummarizer,\n\tschemaCodecBuilder,\n} from \"./schema-index/index.js\";\nexport {\n\tstackTreeNodeCursor,\n\ttype CursorAdapter,\n\tprefixPath,\n\tprefixFieldPath,\n\ttype CursorWithNode,\n\tstackTreeFieldCursor,\n} from \"./treeCursorUtils.js\";\nexport {\n\tcursorForJsonableTreeNode,\n\tcursorForJsonableTreeField,\n\tjsonableTreeFromCursor,\n\tjsonableTreeFromFieldCursor,\n\tjsonableTreeFromForest,\n} from \"./treeTextCursor.js\";\nexport {\n\tbuildNodeComparator,\n\ttype NodeComparator,\n} from \"./cursorComparator.js\";\n\nimport * as SequenceField from \"./sequence-field/index.js\";\n// eslint-disable-next-line unicorn/prefer-export-from -- fixing requires `export * as` (breaks API-Extractor) or named exports (changes public API)\nexport { SequenceField };\n\nexport {\n\tisNeverField,\n\tModularEditBuilder,\n\ttype FieldEditDescription as EditDescription,\n\ttype FieldChangeHandler,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype FieldChangeMap,\n\ttype FieldChange,\n\ttype FieldChangeset,\n\ttype ToDelta,\n\ttype ModularChangeset,\n\tmakeModularChangeCodecFamily,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\ttype CrossFieldManager,\n\tCrossFieldTarget,\n\tFlexFieldKind,\n\ttype FullSchemaPolicy,\n\tallowsRepoSuperset,\n\ttype GenericChangeset,\n\tgenericFieldKind,\n\ttype HasFieldChanges,\n\ttype NodeExistsConstraint,\n\tModularChangeFamily,\n\ttype RelevantRemovedRootsFromChild,\n\tEncodedModularChangesetV1,\n\tEncodedModularChangesetV2,\n\tupdateRefreshers,\n\ttype NodeId,\n\ttype FieldChangeEncodingContext,\n\ttype FieldKindConfiguration,\n\ttype FieldKindConfigurationEntry,\n\tisNeverTree,\n\tDefaultRevisionReplacer,\n\tModularChangeFormatVersion,\n\tminimizeModularChangeset,\n} from \"./modular-schema/index.js\";\n\nexport { mapRootChanges } from \"./deltaUtils.js\";\n\nexport {\n\ttype TreeChunk,\n\tchunkTree,\n\tchunkField,\n\tchunkFieldSingle,\n\tbuildChunkedForest,\n\tdefaultChunkPolicy,\n\ttype FieldBatch,\n\ttype FieldBatchCodec,\n\tFieldBatchFormatVersion,\n\tmakeTreeChunker,\n\tfieldBatchCodecBuilder,\n\tFieldBatchDecodingContext,\n\ttype FieldBatchEncodingContext,\n\temptyChunk,\n\tcombineChunks,\n\ttype IncrementalEncodingPolicy,\n\tdefaultIncrementalEncodingPolicy,\n\ttype IncrementalDecoder,\n\ttype IncrementalEncoder,\n} from \"./chunked-forest/index.js\";\n\nexport {\n\tcompareLocalNodeIdentifiers,\n\tcreateNodeIdentifierManager,\n\tisStableNodeIdentifier,\n\ttype LocalNodeIdentifier,\n\tMockNodeIdentifierManager,\n\ttype NodeIdentifierManager,\n\tnodeKeyTreeIdentifier,\n\ttype StableNodeIdentifier,\n} from \"./node-identifier/index.js\";\n\nexport {\n\tFieldKinds,\n\ttype DefaultChangeset,\n\tDefaultChangeFamily,\n\tDefaultEditBuilder,\n\ttype IDefaultEditBuilder,\n\ttype ValueFieldEditBuilder,\n\ttype OptionalFieldEditBuilder,\n\ttype SequenceFieldEditBuilder,\n\tdefaultSchemaPolicy,\n\tfieldKinds,\n\tfieldKindConfigurations,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tgetCodecTreeForModularChangeFormat,\n} from \"./default-schema/index.js\";\n\nexport {\n\tSchemaValidationError,\n\ttype SchemaValidationErrorContext,\n\tisNodeInSchema,\n\tisFieldInSchema,\n\tthrowOutOfSchema,\n} from \"./schemaChecker.js\";\n\nexport {\n\ttype FlexTreeOptionalField,\n\ttype FlexTreeRequiredField,\n\ttype FlexTreeSequenceField,\n\ttype FlexTreeContext,\n\ttype FlexTreeHydratedContext,\n\ttype FlexTreeTypedField,\n\ttype FlexTreeEntity,\n\ttype FlexTreeField,\n\ttype FlexTreeNode,\n\tTreeStatus,\n\tContext,\n\ttype FlexTreeNodeEvents,\n\ttype FlexTreeUnknownUnboxed,\n\tisFlexTreeNode,\n\tContextSlot,\n\t// Internal\n\tflexTreeMarker,\n\tassertFlexTreeEntityNotFreed,\n\tflexTreeSlot,\n\tgetSchemaAndPolicy,\n\tLazyEntity,\n\ttreeStatusFromAnchorCache,\n\tindexForAt,\n\tFlexTreeEntityKind,\n\ttype FlexibleNodeContent,\n\ttype FlexibleFieldContent,\n\ttype FlexTreeHydratedContextMinimal,\n\ttype HydratedFlexTreeNode,\n\tgetOrCreateHydratedFlexTreeNode,\n\tcurrentObserver,\n\twithObservation,\n\ttype Observer,\n} from \"./flex-tree/index.js\";\n\nexport { TreeCompressionStrategy } from \"./treeCompressionUtils.js\";\n\nexport { valueSchemaAllows } from \"./valueUtilities.js\";\n\nexport { DetachedFieldIndexSummarizer } from \"./detachedFieldIndexSummarizer.js\";\n\nexport {\n\ttype SchemaChange,\n\tmakeSchemaChangeCodec,\n\tEncodedSchemaChange,\n} from \"./schema-edits/index.js\";\n\nexport { makeMitigatedChangeFamily } from \"./mitigatedChangeFamily.js\";\n\nexport {\n\ttype KeyFinder,\n\tAnchorTreeIndex,\n\thasElement,\n\ttype TreeIndex,\n\ttype TreeIndexNodes,\n} from \"./indexing/index.js\";\n\nexport {\n\ttype ChangeAtomIdBTree,\n\tnewChangeAtomIdBTree,\n\tgetFromChangeAtomIdMap,\n\tsetInChangeAtomIdMap,\n} from \"./changeAtomIdBTree.js\";\n"]}
@@ -16,4 +16,5 @@ export { ModularChangeFamily, ModularEditBuilder, type EditDescription, type Glo
16
16
  export { ModularChangeFormatVersion, makeModularChangeCodecFamily, } from "./modularChangeCodecs.js";
17
17
  export type { FieldKindConfiguration, FieldKindConfigurationEntry, } from "./fieldKindConfiguration.js";
18
18
  export { DefaultRevisionReplacer } from "./defaultRevisionReplacer.js";
19
+ export { minimizeModularChangeset } from "./minimizeModularChange.js";
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,kCAAkC,EAClC,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,OAAO,EACZ,eAAe,EACf,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,0BAA0B,EAC1B,4BAA4B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACX,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,kBAAkB,EAClB,kCAAkC,EAClC,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,OAAO,EACZ,eAAe,EACf,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,0BAA0B,EAC1B,4BAA4B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACX,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DefaultRevisionReplacer = exports.makeModularChangeCodecFamily = exports.ModularChangeFormatVersion = exports.updateRefreshers = exports.relevantRemovedRoots = exports.intoDelta = exports.rebaseRevisionMetadataFromInfo = exports.ModularEditBuilder = exports.ModularChangeFamily = exports.genericFieldKind = exports.genericChangeHandler = exports.convertGenericChange = exports.NodeAttachState = exports.referenceFreeFieldChangeRebaser = exports.FlexFieldKind = exports.EncodedModularChangesetV2 = exports.EncodedNodeChangeset = exports.EncodedModularChangesetV1 = exports.EncodedRevisionInfo = exports.EncodedChangeAtomId = exports.ChangesetLocalIdSchema = exports.setInCrossFieldMap = exports.CrossFieldTarget = exports.addCrossFieldQuery = exports.isNeverTree = exports.isNeverField = exports.allowsMultiplicitySuperset = exports.allowsTreeSuperset = exports.allowsFieldSuperset = exports.allowsTreeSchemaIdentifierSuperset = exports.allowsRepoSuperset = void 0;
7
+ exports.minimizeModularChangeset = exports.DefaultRevisionReplacer = exports.makeModularChangeCodecFamily = exports.ModularChangeFormatVersion = exports.updateRefreshers = exports.relevantRemovedRoots = exports.intoDelta = exports.rebaseRevisionMetadataFromInfo = exports.ModularEditBuilder = exports.ModularChangeFamily = exports.genericFieldKind = exports.genericChangeHandler = exports.convertGenericChange = exports.NodeAttachState = exports.referenceFreeFieldChangeRebaser = exports.FlexFieldKind = exports.EncodedModularChangesetV2 = exports.EncodedNodeChangeset = exports.EncodedModularChangesetV1 = exports.EncodedRevisionInfo = exports.EncodedChangeAtomId = exports.ChangesetLocalIdSchema = exports.setInCrossFieldMap = exports.CrossFieldTarget = exports.addCrossFieldQuery = exports.isNeverTree = exports.isNeverField = exports.allowsMultiplicitySuperset = exports.allowsTreeSuperset = exports.allowsFieldSuperset = exports.allowsTreeSchemaIdentifierSuperset = exports.allowsRepoSuperset = void 0;
8
8
  var comparison_js_1 = require("./comparison.js");
9
9
  Object.defineProperty(exports, "allowsRepoSuperset", { enumerable: true, get: function () { return comparison_js_1.allowsRepoSuperset; } });
10
10
  Object.defineProperty(exports, "allowsTreeSchemaIdentifierSuperset", { enumerable: true, get: function () { return comparison_js_1.allowsTreeSchemaIdentifierSuperset; } });
@@ -47,4 +47,6 @@ Object.defineProperty(exports, "ModularChangeFormatVersion", { enumerable: true,
47
47
  Object.defineProperty(exports, "makeModularChangeCodecFamily", { enumerable: true, get: function () { return modularChangeCodecs_js_1.makeModularChangeCodecFamily; } });
48
48
  var defaultRevisionReplacer_js_1 = require("./defaultRevisionReplacer.js");
49
49
  Object.defineProperty(exports, "DefaultRevisionReplacer", { enumerable: true, get: function () { return defaultRevisionReplacer_js_1.DefaultRevisionReplacer; } });
50
+ var minimizeModularChange_js_1 = require("./minimizeModularChange.js");
51
+ Object.defineProperty(exports, "minimizeModularChangeset", { enumerable: true, get: function () { return minimizeModularChange_js_1.minimizeModularChangeset; } });
50
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAMyB;AALxB,mHAAA,kBAAkB,OAAA;AAClB,mIAAA,kCAAkC,OAAA;AAClC,oHAAA,mBAAmB,OAAA;AACnB,mHAAA,kBAAkB,OAAA;AAClB,2HAAA,0BAA0B,OAAA;AAE3B,mDAA6D;AAApD,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAClC,+DAOgC;AAN/B,0HAAA,kBAAkB,OAAA;AAIlB,wHAAA,gBAAgB,OAAA;AAChB,0HAAA,kBAAkB,OAAA;AAEnB,uEAMoC;AALnC,kIAAA,sBAAsB,OAAA;AACtB,+HAAA,mBAAmB,OAAA;AACnB,+HAAA,mBAAmB,OAAA;AACnB,qIAAA,yBAAyB,OAAA;AACzB,gIAAA,oBAAoB,OAAA;AAErB,uEAAuE;AAA9D,qIAAA,yBAAyB,OAAA;AAClC,+CAAsE;AAA7D,6GAAA,aAAa,OAAA;AACtB,iEAgBiC;AAPhC,wIAAA,+BAA+B,OAAA;AAI/B,wHAAA,eAAe,OAAA;AAgBhB,6DAI+B;AAH9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,uHAAA,gBAAgB,OAAA;AAGjB,mEAUkC;AATjC,6HAAA,mBAAmB,OAAA;AACnB,4HAAA,kBAAkB,OAAA;AAIlB,wIAAA,8BAA8B,OAAA;AAC9B,mHAAA,SAAS,OAAA;AACT,8HAAA,oBAAoB,OAAA;AACpB,0HAAA,gBAAgB,OAAA;AAEjB,mEAGkC;AAFjC,oIAAA,0BAA0B,OAAA;AAC1B,sIAAA,4BAA4B,OAAA;AAM7B,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tallowsRepoSuperset,\n\tallowsTreeSchemaIdentifierSuperset,\n\tallowsFieldSuperset,\n\tallowsTreeSuperset,\n\tallowsMultiplicitySuperset,\n} from \"./comparison.js\";\nexport { isNeverField, isNeverTree } from \"./isNeverTree.js\";\nexport {\n\taddCrossFieldQuery,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n\ttype CrossFieldQuerySet,\n\tCrossFieldTarget,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nexport {\n\tChangesetLocalIdSchema,\n\tEncodedChangeAtomId,\n\tEncodedRevisionInfo,\n\tEncodedModularChangesetV1,\n\tEncodedNodeChangeset,\n} from \"./modularChangeFormatV1.js\";\nexport { EncodedModularChangesetV2 } from \"./modularChangeFormatV2.js\";\nexport { FlexFieldKind, type FullSchemaPolicy } from \"./fieldKind.js\";\nexport {\n\ttype FieldChangeHandler,\n\ttype FieldChangeDelta,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\treferenceFreeFieldChangeRebaser,\n\ttype RebaseRevisionMetadata,\n\ttype RelevantRemovedRootsFromChild,\n\ttype ToDelta,\n\tNodeAttachState,\n\ttype FieldChangeEncodingContext,\n\ttype NestedChangesIndices,\n} from \"./fieldChangeHandler.js\";\nexport type {\n\tCrossFieldKey,\n\tCrossFieldKeyRange,\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tHasFieldChanges,\n\tModularChangeset,\n\tNoChangeConstraint,\n\tNodeExistsConstraint,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nexport {\n\tconvertGenericChange,\n\tgenericChangeHandler,\n\tgenericFieldKind,\n} from \"./genericFieldKind.js\";\nexport type { GenericChangeset } from \"./genericFieldKindTypes.js\";\nexport {\n\tModularChangeFamily,\n\tModularEditBuilder,\n\ttype EditDescription,\n\ttype GlobalEditDescription,\n\ttype FieldEditDescription,\n\trebaseRevisionMetadataFromInfo,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers,\n} from \"./modularChangeFamily.js\";\nexport {\n\tModularChangeFormatVersion,\n\tmakeModularChangeCodecFamily,\n} from \"./modularChangeCodecs.js\";\nexport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nexport { DefaultRevisionReplacer } from \"./defaultRevisionReplacer.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAMyB;AALxB,mHAAA,kBAAkB,OAAA;AAClB,mIAAA,kCAAkC,OAAA;AAClC,oHAAA,mBAAmB,OAAA;AACnB,mHAAA,kBAAkB,OAAA;AAClB,2HAAA,0BAA0B,OAAA;AAE3B,mDAA6D;AAApD,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAClC,+DAOgC;AAN/B,0HAAA,kBAAkB,OAAA;AAIlB,wHAAA,gBAAgB,OAAA;AAChB,0HAAA,kBAAkB,OAAA;AAEnB,uEAMoC;AALnC,kIAAA,sBAAsB,OAAA;AACtB,+HAAA,mBAAmB,OAAA;AACnB,+HAAA,mBAAmB,OAAA;AACnB,qIAAA,yBAAyB,OAAA;AACzB,gIAAA,oBAAoB,OAAA;AAErB,uEAAuE;AAA9D,qIAAA,yBAAyB,OAAA;AAClC,+CAAsE;AAA7D,6GAAA,aAAa,OAAA;AACtB,iEAgBiC;AAPhC,wIAAA,+BAA+B,OAAA;AAI/B,wHAAA,eAAe,OAAA;AAgBhB,6DAI+B;AAH9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,uHAAA,gBAAgB,OAAA;AAGjB,mEAUkC;AATjC,6HAAA,mBAAmB,OAAA;AACnB,4HAAA,kBAAkB,OAAA;AAIlB,wIAAA,8BAA8B,OAAA;AAC9B,mHAAA,SAAS,OAAA;AACT,8HAAA,oBAAoB,OAAA;AACpB,0HAAA,gBAAgB,OAAA;AAEjB,mEAGkC;AAFjC,oIAAA,0BAA0B,OAAA;AAC1B,sIAAA,4BAA4B,OAAA;AAM7B,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tallowsRepoSuperset,\n\tallowsTreeSchemaIdentifierSuperset,\n\tallowsFieldSuperset,\n\tallowsTreeSuperset,\n\tallowsMultiplicitySuperset,\n} from \"./comparison.js\";\nexport { isNeverField, isNeverTree } from \"./isNeverTree.js\";\nexport {\n\taddCrossFieldQuery,\n\ttype CrossFieldManager,\n\ttype CrossFieldMap,\n\ttype CrossFieldQuerySet,\n\tCrossFieldTarget,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nexport {\n\tChangesetLocalIdSchema,\n\tEncodedChangeAtomId,\n\tEncodedRevisionInfo,\n\tEncodedModularChangesetV1,\n\tEncodedNodeChangeset,\n} from \"./modularChangeFormatV1.js\";\nexport { EncodedModularChangesetV2 } from \"./modularChangeFormatV2.js\";\nexport { FlexFieldKind, type FullSchemaPolicy } from \"./fieldKind.js\";\nexport {\n\ttype FieldChangeHandler,\n\ttype FieldChangeDelta,\n\ttype FieldChangeRebaser,\n\ttype FieldEditor,\n\ttype NodeChangeComposer,\n\ttype NodeChangeInverter,\n\ttype NodeChangeRebaser,\n\ttype NodeChangePruner,\n\treferenceFreeFieldChangeRebaser,\n\ttype RebaseRevisionMetadata,\n\ttype RelevantRemovedRootsFromChild,\n\ttype ToDelta,\n\tNodeAttachState,\n\ttype FieldChangeEncodingContext,\n\ttype NestedChangesIndices,\n} from \"./fieldChangeHandler.js\";\nexport type {\n\tCrossFieldKey,\n\tCrossFieldKeyRange,\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tHasFieldChanges,\n\tModularChangeset,\n\tNoChangeConstraint,\n\tNodeExistsConstraint,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\nexport {\n\tconvertGenericChange,\n\tgenericChangeHandler,\n\tgenericFieldKind,\n} from \"./genericFieldKind.js\";\nexport type { GenericChangeset } from \"./genericFieldKindTypes.js\";\nexport {\n\tModularChangeFamily,\n\tModularEditBuilder,\n\ttype EditDescription,\n\ttype GlobalEditDescription,\n\ttype FieldEditDescription,\n\trebaseRevisionMetadataFromInfo,\n\tintoDelta,\n\trelevantRemovedRoots,\n\tupdateRefreshers,\n} from \"./modularChangeFamily.js\";\nexport {\n\tModularChangeFormatVersion,\n\tmakeModularChangeCodecFamily,\n} from \"./modularChangeCodecs.js\";\nexport type {\n\tFieldKindConfiguration,\n\tFieldKindConfigurationEntry,\n} from \"./fieldKindConfiguration.js\";\nexport { DefaultRevisionReplacer } from \"./defaultRevisionReplacer.js\";\nexport { minimizeModularChangeset } from \"./minimizeModularChange.js\";\n"]}
@@ -0,0 +1,25 @@
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 { FlexFieldKind } from "./fieldKind.js";
7
+ import type { ModularChangeset } from "./modularChangeTypes.js";
8
+ /**
9
+ * "Minimizes" a {@link ModularChangeset} so that it contains no extraneous
10
+ * information, i.e. no new content that isn't observable from document tree
11
+ * and no edits without net observed effect on the document tree.
12
+ * @remarks
13
+ * "Extraneous information" includes, for example, data for nodes that were both created and removed within the same
14
+ * transaction, or changes whose effects cancel out to nothing. Minimizing reduces the size of an edit without altering
15
+ * its observable effect.
16
+ *
17
+ * This is the eventual home of the minimization algorithm, colocated with {@link ModularChangeFamily} so it can use its
18
+ * internals. It is currently a no-op that returns the change unchanged; a real implementation will be provided in a
19
+ * future change.
20
+ *
21
+ * @param change - The change to minimize.
22
+ * @param fieldKinds - The field kinds to delegate to when computing the change's delta.
23
+ */
24
+ export declare function minimizeModularChangeset(change: ModularChangeset, fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>): ModularChangeset;
25
+ //# sourceMappingURL=minimizeModularChange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimizeModularChange.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/minimizeModularChange.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,GACzD,gBAAgB,CAGlB"}
@@ -0,0 +1,29 @@
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.minimizeModularChangeset = void 0;
8
+ /**
9
+ * "Minimizes" a {@link ModularChangeset} so that it contains no extraneous
10
+ * information, i.e. no new content that isn't observable from document tree
11
+ * and no edits without net observed effect on the document tree.
12
+ * @remarks
13
+ * "Extraneous information" includes, for example, data for nodes that were both created and removed within the same
14
+ * transaction, or changes whose effects cancel out to nothing. Minimizing reduces the size of an edit without altering
15
+ * its observable effect.
16
+ *
17
+ * This is the eventual home of the minimization algorithm, colocated with {@link ModularChangeFamily} so it can use its
18
+ * internals. It is currently a no-op that returns the change unchanged; a real implementation will be provided in a
19
+ * future change.
20
+ *
21
+ * @param change - The change to minimize.
22
+ * @param fieldKinds - The field kinds to delegate to when computing the change's delta.
23
+ */
24
+ function minimizeModularChangeset(change, fieldKinds) {
25
+ // TODO: Actually minimize the change. For now this is a no-op that returns the change unchanged.
26
+ return change;
27
+ }
28
+ exports.minimizeModularChangeset = minimizeModularChangeset;
29
+ //# sourceMappingURL=minimizeModularChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimizeModularChange.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/minimizeModularChange.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,wBAAwB,CACvC,MAAwB,EACxB,UAA2D;IAE3D,iGAAiG;IACjG,OAAO,MAAM,CAAC;AACf,CAAC;AAND,4DAMC","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\";\n\nimport type { FlexFieldKind } from \"./fieldKind.js\";\nimport type { ModularChangeset } from \"./modularChangeTypes.js\";\n\n/**\n * \"Minimizes\" a {@link ModularChangeset} so that it contains no extraneous\n * information, i.e. no new content that isn't observable from document tree\n * and no edits without net observed effect on the document tree.\n * @remarks\n * \"Extraneous information\" includes, for example, data for nodes that were both created and removed within the same\n * transaction, or changes whose effects cancel out to nothing. Minimizing reduces the size of an edit without altering\n * its observable effect.\n *\n * This is the eventual home of the minimization algorithm, colocated with {@link ModularChangeFamily} so it can use its\n * internals. It is currently a no-op that returns the change unchanged; a real implementation will be provided in a\n * future change.\n *\n * @param change - The change to minimize.\n * @param fieldKinds - The field kinds to delegate to when computing the change's delta.\n */\nexport function minimizeModularChangeset(\n\tchange: ModularChangeset,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n): ModularChangeset {\n\t// TODO: Actually minimize the change. For now this is a no-op that returns the change unchanged.\n\treturn change;\n}\n"]}
@@ -16,10 +16,29 @@ export declare enum SchemaValidationError {
16
16
  NonLeafNode_ValueNotAllowed = 8,
17
17
  Node_MissingSchema = 9
18
18
  }
19
+ /**
20
+ * Additional context about a schema validation error.
21
+ * @remarks
22
+ * Not all fields are populated for every error type — only those relevant to the specific error.
23
+ */
24
+ export interface SchemaValidationErrorContext {
25
+ /**
26
+ * The type identifier of the node that failed validation.
27
+ */
28
+ readonly nodeType?: string;
29
+ /**
30
+ * The set of type identifiers allowed in the field, if applicable.
31
+ */
32
+ readonly allowedTypes?: ReadonlySet<string>;
33
+ /**
34
+ * Field keys on the node that were not recognized by its schema.
35
+ */
36
+ readonly unexpectedFields?: ReadonlySet<string>;
37
+ }
19
38
  /**
20
39
  * Throws a UsageError indicating a tree is out of schema.
21
40
  */
22
- export declare function throwOutOfSchema(maybeError: SchemaValidationError): never;
41
+ export declare function throwOutOfSchema(maybeError: SchemaValidationError, context?: SchemaValidationErrorContext): never;
23
42
  type NotUndefined = number | string | boolean | bigint | symbol | object;
24
43
  /**
25
44
  * Deeply checks that the provided node complies with the schema based on its identifier.
@@ -28,7 +47,7 @@ type NotUndefined = number | string | boolean | bigint | symbol | object;
28
47
  *
29
48
  * @returns the return value from `onError` if the node or anything inside of it is out of schema, otherwise `undefined`.
30
49
  */
31
- export declare function isNodeInSchema<T extends NotUndefined>(node: MinimalMapTreeNodeView, schemaAndPolicy: SchemaAndPolicy, onError: (error: SchemaValidationError) => T): T | undefined;
50
+ export declare function isNodeInSchema<T extends NotUndefined>(node: MinimalMapTreeNodeView, schemaAndPolicy: SchemaAndPolicy, onError: (error: SchemaValidationError, context?: SchemaValidationErrorContext) => T): T | undefined;
32
51
  /**
33
52
  * Deeply checks that the nodes comply with the field schema and included schema.
34
53
  *
@@ -36,7 +55,7 @@ export declare function isNodeInSchema<T extends NotUndefined>(node: MinimalMapT
36
55
  *
37
56
  * @returns the return value from `onError` if the field or anything inside of it is out of schema, otherwise `undefined`.
38
57
  */
39
- export declare function isFieldInSchema<T extends NotUndefined>(childNodes: MapTreeFieldViewGeneric<MinimalMapTreeNodeView>, schema: TreeFieldStoredSchema, schemaAndPolicy: SchemaAndPolicy, onError: (error: SchemaValidationError) => T): T | undefined;
58
+ export declare function isFieldInSchema<T extends NotUndefined>(childNodes: MapTreeFieldViewGeneric<MinimalMapTreeNodeView>, schema: TreeFieldStoredSchema, schemaAndPolicy: SchemaAndPolicy, onError: (error: SchemaValidationError, context?: SchemaValidationErrorContext) => T): T | undefined;
40
59
  /**
41
60
  * Validates that a given number of items complies with the specified {@link Multiplicity | multiplicity}.
42
61
  * @param numberOfItems - Number of items.
@@ -1 +1 @@
1
- {"version":3,"file":"schemaChecker.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/schemaChecker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,KAAK,qBAAqB,EAI1B,YAAY,EACZ,KAAK,eAAe,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG1F,oBAAY,qBAAqB;IAChC,2BAA2B,IAAA;IAC3B,0BAA0B,IAAA;IAC1B,gCAAgC,IAAA;IAChC,2BAA2B,IAAA;IAC3B,wBAAwB,IAAA;IACxB,qBAAqB,IAAA;IACrB,yBAAyB,IAAA;IACzB,2BAA2B,IAAA;IAC3B,2BAA2B,IAAA;IAC3B,kBAAkB,IAAA;CAClB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,GAAG,KAAK,CAIzE;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EACpD,IAAI,EAAE,sBAAsB,EAC5B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,GAC1C,CAAC,GAAG,SAAS,CA6Df;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,EACrD,UAAU,EAAE,uBAAuB,CAAC,sBAAsB,CAAC,EAC3D,MAAM,EAAE,qBAAqB,EAC7B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,GAC1C,CAAC,GAAG,SAAS,CA6Bf;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,YAAY,GACxB,qBAAqB,GAAG,SAAS,CA4BnC"}
1
+ {"version":3,"file":"schemaChecker.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/schemaChecker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,KAAK,qBAAqB,EAI1B,YAAY,EACZ,KAAK,eAAe,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG1F,oBAAY,qBAAqB;IAChC,2BAA2B,IAAA;IAC3B,0BAA0B,IAAA;IAC1B,gCAAgC,IAAA;IAChC,2BAA2B,IAAA;IAC3B,wBAAwB,IAAA;IACxB,qBAAqB,IAAA;IACrB,yBAAyB,IAAA;IACzB,2BAA2B,IAAA;IAC3B,2BAA2B,IAAA;IAC3B,kBAAkB,IAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,qBAAqB,EACjC,OAAO,CAAC,EAAE,4BAA4B,GACpC,KAAK,CAEP;AAkDD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EACpD,IAAI,EAAE,sBAAsB,EAC5B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,4BAA4B,KAAK,CAAC,GAClF,CAAC,GAAG,SAAS,CAkEf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,EACrD,UAAU,EAAE,uBAAuB,CAAC,sBAAsB,CAAC,EAC3D,MAAM,EAAE,qBAAqB,EAC7B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,4BAA4B,KAAK,CAAC,GAClF,CAAC,GAAG,SAAS,CAgCf;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,YAAY,GACxB,qBAAqB,GAAG,SAAS,CA4BnC"}
@@ -26,10 +26,45 @@ var SchemaValidationError;
26
26
  /**
27
27
  * Throws a UsageError indicating a tree is out of schema.
28
28
  */
29
- function throwOutOfSchema(maybeError) {
30
- throw new internal_2.UsageError(`Tree does not conform to schema: ${SchemaValidationError[maybeError]}`);
29
+ function throwOutOfSchema(maybeError, context) {
30
+ throw new internal_2.UsageError(formatSchemaValidationError(maybeError, context));
31
31
  }
32
32
  exports.throwOutOfSchema = throwOutOfSchema;
33
+ // Not exported: internal helper used by throwOutOfSchema.
34
+ function formatSchemaValidationError(error, context) {
35
+ switch (error) {
36
+ case SchemaValidationError.Field_NodeTypeNotAllowed: {
37
+ const nodeDesc = context?.nodeType === undefined ? "unknown" : `"${context.nodeType}"`;
38
+ const allowedDesc = context?.allowedTypes === undefined
39
+ ? "unknown"
40
+ : `[${[...context.allowedTypes].map((t) => `"${t}"`).join(", ")}]`;
41
+ return (`Tree does not conform to schema. ` +
42
+ `A node of type ${nodeDesc} is not allowed in this field. Allowed types: ${allowedDesc}. ` +
43
+ `If using a staged allowed type, the stored schema has not been upgraded to include this type yet. ` +
44
+ `Either upgrade the schema to enable the staged type or avoid inserting content of this type until the schema is upgraded.`);
45
+ }
46
+ case SchemaValidationError.Node_MissingSchema: {
47
+ const nodeDesc = context?.nodeType === undefined ? "unknown" : `"${context.nodeType}"`;
48
+ return (`Tree does not conform to schema. ` +
49
+ `No schema definition was found for node type ${nodeDesc}. ` +
50
+ `Ensure the node's type is included in the schema and that the stored schema has been upgraded if needed.`);
51
+ }
52
+ case SchemaValidationError.ObjectNode_FieldNotInSchema: {
53
+ const nodeDesc = context?.nodeType === undefined ? "unknown" : `"${context.nodeType}"`;
54
+ const fieldsDesc = context?.unexpectedFields === undefined || context.unexpectedFields.size === 0
55
+ ? undefined
56
+ : `[${[...context.unexpectedFields].map((f) => `"${f}"`).join(", ")}]`;
57
+ const fieldsPart = fieldsDesc === undefined
58
+ ? "The node has fields that are not defined in its schema."
59
+ : `Unexpected fields: ${fieldsDesc}.`;
60
+ return (`Tree does not conform to schema. ` +
61
+ `A node of type ${nodeDesc} has fields not defined in its schema. ${fieldsPart}`);
62
+ }
63
+ default: {
64
+ return `Tree does not conform to schema: ${SchemaValidationError[error]}.`;
65
+ }
66
+ }
67
+ }
33
68
  /**
34
69
  * Deeply checks that the provided node complies with the schema based on its identifier.
35
70
  *
@@ -41,7 +76,9 @@ function isNodeInSchema(node, schemaAndPolicy, onError) {
41
76
  // Validate the schema declared by the node exists
42
77
  const schema = schemaAndPolicy.schema.nodeSchema.get(node.type);
43
78
  if (schema === undefined) {
44
- return onError(SchemaValidationError.Node_MissingSchema);
79
+ return onError(SchemaValidationError.Node_MissingSchema, {
80
+ nodeType: node.type,
81
+ });
45
82
  }
46
83
  // Validate the node is well formed according to its schema
47
84
  if (schema instanceof index_js_1.LeafNodeStoredSchema) {
@@ -71,7 +108,10 @@ function isNodeInSchema(node, schemaAndPolicy, onError) {
71
108
  // Code using this with a stored schema derived from a view schema rather than the document can be problematic because it may be missing unknown fields that the actual document has.
72
109
  // Other schema evolution features like "staged" allowed types will likely cause similar issues elsewhere in this checker.
73
110
  if (uncheckedFieldsFromNode.size > 0) {
74
- return onError(SchemaValidationError.ObjectNode_FieldNotInSchema);
111
+ return onError(SchemaValidationError.ObjectNode_FieldNotInSchema, {
112
+ nodeType: node.type,
113
+ unexpectedFields: uncheckedFieldsFromNode,
114
+ });
75
115
  }
76
116
  }
77
117
  else if (schema instanceof index_js_1.MapNodeStoredSchema) {
@@ -112,7 +152,10 @@ function isFieldInSchema(childNodes, schema, schemaAndPolicy, onError) {
112
152
  for (const node of childNodes) {
113
153
  // Validate the type declared by the node is allowed in this field
114
154
  if (schema.types !== undefined && !schema.types.has(node.type)) {
115
- return onError(SchemaValidationError.Field_NodeTypeNotAllowed);
155
+ return onError(SchemaValidationError.Field_NodeTypeNotAllowed, {
156
+ nodeType: node.type,
157
+ allowedTypes: schema.types,
158
+ });
116
159
  }
117
160
  // Validate the node complies with the type it declares to be.
118
161
  const nodeInSchemaResult = isNodeInSchema(node, schemaAndPolicy, onError);