@fluidframework/tree 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.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 (2507) hide show
  1. package/.eslintrc.cjs +2 -0
  2. package/CHANGELOG.md +74 -0
  3. package/api-extractor.json +2 -3
  4. package/api-report/tree.api.md +208 -154
  5. package/beta.d.ts +11 -0
  6. package/dist/beta.d.ts +90 -0
  7. package/dist/codec/codec.d.ts +10 -4
  8. package/dist/codec/codec.d.ts.map +1 -1
  9. package/dist/codec/codec.js +2 -2
  10. package/dist/codec/codec.js.map +1 -1
  11. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  12. package/dist/codec/discriminatedUnions.js +6 -2
  13. package/dist/codec/discriminatedUnions.js.map +1 -1
  14. package/dist/codec/index.d.ts +2 -2
  15. package/dist/codec/index.d.ts.map +1 -1
  16. package/dist/codec/index.js +3 -2
  17. package/dist/codec/index.js.map +1 -1
  18. package/dist/codec/noopValidator.d.ts.map +1 -1
  19. package/dist/codec/noopValidator.js.map +1 -1
  20. package/dist/codec/versioned/codec.d.ts +10 -2
  21. package/dist/codec/versioned/codec.d.ts.map +1 -1
  22. package/dist/codec/versioned/codec.js +28 -6
  23. package/dist/codec/versioned/codec.js.map +1 -1
  24. package/dist/codec/versioned/index.d.ts +1 -1
  25. package/dist/codec/versioned/index.d.ts.map +1 -1
  26. package/dist/codec/versioned/index.js +2 -1
  27. package/dist/codec/versioned/index.js.map +1 -1
  28. package/dist/core/change-family/changeFamily.d.ts +2 -2
  29. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  30. package/dist/core/change-family/changeFamily.js.map +1 -1
  31. package/dist/core/forest/editableForest.d.ts +1 -1
  32. package/dist/core/forest/editableForest.d.ts.map +1 -1
  33. package/dist/core/forest/editableForest.js +2 -2
  34. package/dist/core/forest/editableForest.js.map +1 -1
  35. package/dist/core/forest/forest.d.ts +5 -1
  36. package/dist/core/forest/forest.d.ts.map +1 -1
  37. package/dist/core/forest/forest.js +2 -2
  38. package/dist/core/forest/forest.js.map +1 -1
  39. package/dist/core/index.d.ts +3 -3
  40. package/dist/core/index.d.ts.map +1 -1
  41. package/dist/core/index.js +6 -3
  42. package/dist/core/index.js.map +1 -1
  43. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  44. package/dist/core/rebase/changeRebaser.js.map +1 -1
  45. package/dist/core/rebase/index.d.ts +1 -1
  46. package/dist/core/rebase/index.d.ts.map +1 -1
  47. package/dist/core/rebase/index.js +4 -1
  48. package/dist/core/rebase/index.js.map +1 -1
  49. package/dist/core/rebase/revisionTagCodec.d.ts.map +1 -1
  50. package/dist/core/rebase/revisionTagCodec.js +2 -2
  51. package/dist/core/rebase/revisionTagCodec.js.map +1 -1
  52. package/dist/core/rebase/types.d.ts +30 -0
  53. package/dist/core/rebase/types.d.ts.map +1 -1
  54. package/dist/core/rebase/types.js +26 -1
  55. package/dist/core/rebase/types.js.map +1 -1
  56. package/dist/core/rebase/utils.d.ts.map +1 -1
  57. package/dist/core/rebase/utils.js +11 -10
  58. package/dist/core/rebase/utils.js.map +1 -1
  59. package/dist/core/revertible/index.d.ts +1 -1
  60. package/dist/core/revertible/index.d.ts.map +1 -1
  61. package/dist/core/revertible/index.js +1 -3
  62. package/dist/core/revertible/index.js.map +1 -1
  63. package/dist/core/revertible/revertible.d.ts +15 -49
  64. package/dist/core/revertible/revertible.d.ts.map +1 -1
  65. package/dist/core/revertible/revertible.js +3 -33
  66. package/dist/core/revertible/revertible.js.map +1 -1
  67. package/dist/core/schema-stored/format.d.ts.map +1 -1
  68. package/dist/core/schema-stored/format.js.map +1 -1
  69. package/dist/core/schema-stored/index.d.ts +2 -1
  70. package/dist/core/schema-stored/index.d.ts.map +1 -1
  71. package/dist/core/schema-stored/index.js +4 -1
  72. package/dist/core/schema-stored/index.js.map +1 -1
  73. package/dist/core/schema-stored/multiplicity.d.ts.map +1 -0
  74. package/dist/{feature-libraries → core/schema-stored}/multiplicity.js +2 -2
  75. package/{lib/feature-libraries → dist/core/schema-stored}/multiplicity.js.map +1 -1
  76. package/dist/core/schema-stored/schema.d.ts +32 -9
  77. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  78. package/dist/core/schema-stored/schema.js +14 -7
  79. package/dist/core/schema-stored/schema.js.map +1 -1
  80. package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  81. package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  82. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  83. package/dist/core/tree/anchorSet.d.ts +31 -16
  84. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  85. package/dist/core/tree/anchorSet.js +37 -62
  86. package/dist/core/tree/anchorSet.js.map +1 -1
  87. package/dist/core/tree/cursor.d.ts.map +1 -1
  88. package/dist/core/tree/cursor.js +4 -4
  89. package/dist/core/tree/cursor.js.map +1 -1
  90. package/dist/core/tree/delta.d.ts.map +1 -1
  91. package/dist/core/tree/delta.js.map +1 -1
  92. package/dist/core/tree/deltaUtil.d.ts +1 -1
  93. package/dist/core/tree/deltaUtil.d.ts.map +1 -1
  94. package/dist/core/tree/deltaUtil.js.map +1 -1
  95. package/dist/core/tree/detachedFieldIndex.d.ts +2 -2
  96. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  97. package/dist/core/tree/detachedFieldIndex.js +15 -15
  98. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  99. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  100. package/dist/core/tree/detachedFieldIndexCodec.js +4 -4
  101. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  102. package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  103. package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
  104. package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  105. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  106. package/dist/core/tree/mapTree.d.ts.map +1 -1
  107. package/dist/core/tree/mapTree.js.map +1 -1
  108. package/dist/core/tree/pathTree.d.ts.map +1 -1
  109. package/dist/core/tree/pathTree.js.map +1 -1
  110. package/dist/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  111. package/dist/core/tree/persistedTreeTextFormat.js.map +1 -1
  112. package/dist/core/tree/sparseTree.d.ts.map +1 -1
  113. package/dist/core/tree/sparseTree.js +5 -5
  114. package/dist/core/tree/sparseTree.js.map +1 -1
  115. package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
  116. package/dist/core/tree/treeTextFormat.js.map +1 -1
  117. package/dist/core/tree/types.d.ts +1 -1
  118. package/dist/core/tree/types.d.ts.map +1 -1
  119. package/dist/core/tree/types.js +7 -7
  120. package/dist/core/tree/types.js.map +1 -1
  121. package/dist/core/tree/visitDelta.d.ts +13 -2
  122. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  123. package/dist/core/tree/visitDelta.js +47 -18
  124. package/dist/core/tree/visitDelta.js.map +1 -1
  125. package/dist/core/tree/visitPath.d.ts +1 -1
  126. package/dist/core/tree/visitPath.d.ts.map +1 -1
  127. package/dist/core/tree/visitPath.js +4 -0
  128. package/dist/core/tree/visitPath.js.map +1 -1
  129. package/dist/core/tree/visitorUtils.d.ts +4 -4
  130. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  131. package/dist/core/tree/visitorUtils.js +2 -2
  132. package/dist/core/tree/visitorUtils.js.map +1 -1
  133. package/dist/domains/json/jsonCursor.d.ts.map +1 -1
  134. package/dist/domains/json/jsonCursor.js +7 -7
  135. package/dist/domains/json/jsonCursor.js.map +1 -1
  136. package/dist/domains/json/jsonDomainSchema.d.ts.map +1 -1
  137. package/dist/domains/json/jsonDomainSchema.js.map +1 -1
  138. package/dist/domains/leafDomain.d.ts.map +1 -1
  139. package/dist/domains/leafDomain.js +8 -8
  140. package/dist/domains/leafDomain.js.map +1 -1
  141. package/dist/domains/nodeKey/nodeKeySchema.d.ts.map +1 -1
  142. package/dist/domains/nodeKey/nodeKeySchema.js +2 -2
  143. package/dist/domains/nodeKey/nodeKeySchema.js.map +1 -1
  144. package/dist/domains/schemaBuilder.d.ts +19 -81
  145. package/dist/domains/schemaBuilder.d.ts.map +1 -1
  146. package/dist/domains/schemaBuilder.js +24 -93
  147. package/dist/domains/schemaBuilder.js.map +1 -1
  148. package/dist/domains/testRecursiveDomain.d.ts +0 -4
  149. package/dist/domains/testRecursiveDomain.d.ts.map +1 -1
  150. package/dist/domains/testRecursiveDomain.js +1 -8
  151. package/dist/domains/testRecursiveDomain.js.map +1 -1
  152. package/dist/events/events.d.ts.map +1 -1
  153. package/dist/events/events.js +2 -2
  154. package/dist/events/events.js.map +1 -1
  155. package/dist/external-utilities/typeboxValidator.d.ts.map +1 -1
  156. package/dist/external-utilities/typeboxValidator.js.map +1 -1
  157. package/dist/feature-libraries/changeAtomIdCodec.d.ts +1 -1
  158. package/dist/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
  159. package/dist/feature-libraries/changeAtomIdCodec.js.map +1 -1
  160. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts +3 -3
  161. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  162. package/dist/feature-libraries/chunked-forest/basicChunk.js +29 -29
  163. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  164. package/dist/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  165. package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  166. package/dist/feature-libraries/chunked-forest/chunk.js +2 -2
  167. package/dist/feature-libraries/chunked-forest/chunk.js.map +1 -1
  168. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +2 -2
  169. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  170. package/dist/feature-libraries/chunked-forest/chunkTree.js +13 -14
  171. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  172. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -2
  173. package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  174. package/dist/feature-libraries/chunked-forest/chunkedForest.js +25 -24
  175. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  176. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +2 -2
  177. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
  178. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +4 -4
  179. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  180. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  181. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  182. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +13 -13
  183. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  184. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  185. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  186. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +3 -3
  187. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  188. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -1
  189. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  190. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  191. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -9
  192. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  193. package/dist/feature-libraries/chunked-forest/codec/codecs.js +6 -5
  194. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  195. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  196. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  197. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +8 -8
  198. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  199. package/dist/feature-libraries/chunked-forest/codec/format.d.ts +1 -1
  200. package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  201. package/dist/feature-libraries/chunked-forest/codec/format.js +1 -2
  202. package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  203. package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +1 -1
  204. package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  205. package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  206. package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  207. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +2 -2
  208. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  209. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
  210. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  211. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts +3 -3
  212. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  213. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +4 -5
  214. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  215. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  216. package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  217. package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  218. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  219. package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
  220. package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  221. package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
  222. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  223. package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  224. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  225. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  226. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +3 -3
  227. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  228. package/dist/feature-libraries/chunked-forest/uniformChunk.js +21 -21
  229. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  230. package/dist/feature-libraries/contextuallyTyped.d.ts +5 -9
  231. package/dist/feature-libraries/contextuallyTyped.d.ts.map +1 -1
  232. package/dist/feature-libraries/contextuallyTyped.js +33 -48
  233. package/dist/feature-libraries/contextuallyTyped.js.map +1 -1
  234. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -5
  235. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  236. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +7 -7
  237. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  238. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +18 -4
  239. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  240. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +59 -24
  241. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  242. package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  243. package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  244. package/dist/feature-libraries/default-schema/index.d.ts +1 -1
  245. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  246. package/dist/feature-libraries/default-schema/index.js +2 -1
  247. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  248. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts +8 -0
  249. package/dist/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -0
  250. package/dist/feature-libraries/default-schema/noChangeCodecs.js +10 -0
  251. package/dist/feature-libraries/default-schema/noChangeCodecs.js.map +1 -0
  252. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +1 -1
  253. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  254. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -2
  255. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  256. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  257. package/dist/feature-libraries/editableTreeBinder.js +6 -6
  258. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  259. package/dist/feature-libraries/fieldGenerator.d.ts +1 -1
  260. package/dist/feature-libraries/fieldGenerator.d.ts.map +1 -1
  261. package/dist/feature-libraries/fieldGenerator.js.map +1 -1
  262. package/dist/feature-libraries/flex-tree/context.d.ts +16 -4
  263. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  264. package/dist/feature-libraries/flex-tree/context.js +27 -15
  265. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  266. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +43 -36
  267. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  268. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +9 -6
  269. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  270. package/dist/feature-libraries/flex-tree/index.d.ts +3 -3
  271. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  272. package/dist/feature-libraries/flex-tree/index.js +3 -2
  273. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  274. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +7 -8
  275. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  276. package/dist/feature-libraries/flex-tree/lazyEntity.js +12 -17
  277. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  278. package/dist/feature-libraries/flex-tree/lazyField.d.ts +21 -7
  279. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  280. package/dist/feature-libraries/flex-tree/lazyField.js +69 -46
  281. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  282. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +12 -9
  283. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  284. package/dist/feature-libraries/flex-tree/lazyNode.js +51 -97
  285. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  286. package/dist/feature-libraries/flex-tree/nodeKeys.d.ts.map +1 -1
  287. package/dist/feature-libraries/flex-tree/nodeKeys.js.map +1 -1
  288. package/dist/feature-libraries/flex-tree/treeEvents.d.ts +7 -70
  289. package/dist/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  290. package/dist/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  291. package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  292. package/dist/feature-libraries/flex-tree/unboxed.js +1 -1
  293. package/dist/feature-libraries/flex-tree/unboxed.js.map +1 -1
  294. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  295. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  296. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  297. package/dist/feature-libraries/forest-summary/codec.js +2 -2
  298. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  299. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  300. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  301. package/dist/feature-libraries/forest-summary/forestSummarizer.js +14 -14
  302. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  303. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  304. package/dist/feature-libraries/forest-summary/format.js +4 -4
  305. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  306. package/dist/feature-libraries/index.d.ts +8 -9
  307. package/dist/feature-libraries/index.d.ts.map +1 -1
  308. package/dist/feature-libraries/index.js +9 -9
  309. package/dist/feature-libraries/index.js.map +1 -1
  310. package/dist/feature-libraries/mapTreeCursor.d.ts +1 -1
  311. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  312. package/dist/feature-libraries/mapTreeCursor.js +2 -2
  313. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  314. package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  315. package/dist/feature-libraries/modular-schema/comparison.d.ts +1 -1
  316. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  317. package/dist/feature-libraries/modular-schema/comparison.js +20 -20
  318. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  319. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -13
  320. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  321. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  322. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +3 -4
  323. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  324. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  325. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +21 -0
  326. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -0
  327. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js +7 -0
  328. package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -0
  329. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +1 -2
  330. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  331. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +4 -4
  332. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  333. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  334. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -7
  335. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  336. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +3 -5
  337. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  338. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +7 -7
  339. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  340. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +1 -1
  341. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  342. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js +1 -1
  343. package/dist/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  344. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +4 -4
  345. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  346. package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  347. package/dist/feature-libraries/modular-schema/index.d.ts +5 -4
  348. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  349. package/dist/feature-libraries/modular-schema/index.js +3 -2
  350. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  351. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +1 -1
  352. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  353. package/dist/feature-libraries/modular-schema/isNeverTree.js +10 -11
  354. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  355. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -5
  356. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  357. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +73 -37
  358. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  359. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +13 -25
  360. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  361. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +261 -169
  362. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  363. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +5 -12
  364. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  365. package/dist/feature-libraries/modular-schema/modularChangeFormat.js +0 -10
  366. package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  367. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +6 -4
  368. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  369. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  370. package/dist/feature-libraries/node-key/nodeKey.d.ts +1 -1
  371. package/dist/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  372. package/dist/feature-libraries/node-key/nodeKey.js.map +1 -1
  373. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts +2 -2
  374. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts.map +1 -1
  375. package/dist/feature-libraries/node-key/nodeKeyIndex.js +3 -3
  376. package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  377. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts +2 -2
  378. package/dist/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  379. package/dist/feature-libraries/node-key/nodeKeyManager.js +9 -9
  380. package/dist/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  381. package/dist/feature-libraries/object-forest/objectForest.d.ts +1 -1
  382. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  383. package/dist/feature-libraries/object-forest/objectForest.js +49 -48
  384. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  385. package/dist/feature-libraries/optional-field/index.d.ts +1 -1
  386. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  387. package/dist/feature-libraries/optional-field/index.js +1 -2
  388. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  389. package/dist/feature-libraries/optional-field/optionalField.d.ts +3 -5
  390. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  391. package/dist/feature-libraries/optional-field/optionalField.js +33 -39
  392. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  393. package/dist/feature-libraries/optional-field/{optionalFieldChangeFormat.d.ts → optionalFieldChangeFormatV1.d.ts} +1 -1
  394. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -0
  395. package/dist/feature-libraries/optional-field/{optionalFieldChangeFormat.js → optionalFieldChangeFormatV1.js} +11 -2
  396. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -0
  397. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +25 -0
  398. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -0
  399. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +44 -0
  400. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -0
  401. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +4 -7
  402. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  403. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  404. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +12 -0
  405. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +1 -0
  406. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +158 -0
  407. package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +1 -0
  408. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +12 -0
  409. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -0
  410. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +87 -0
  411. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -0
  412. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -4
  413. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  414. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +7 -150
  415. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  416. package/dist/feature-libraries/schema-aware/schemaAware.d.ts +3 -4
  417. package/dist/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
  418. package/dist/feature-libraries/schema-aware/schemaAware.js +1 -1
  419. package/dist/feature-libraries/schema-aware/schemaAware.js.map +1 -1
  420. package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
  421. package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
  422. package/dist/feature-libraries/schema-edits/index.js +2 -2
  423. package/dist/feature-libraries/schema-edits/index.js.map +1 -1
  424. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +2 -3
  425. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  426. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +13 -5
  427. package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  428. package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  429. package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  430. package/dist/feature-libraries/schema-edits/schemaChangeTypes.d.ts +5 -0
  431. package/dist/feature-libraries/schema-edits/schemaChangeTypes.d.ts.map +1 -1
  432. package/dist/feature-libraries/schema-edits/schemaChangeTypes.js.map +1 -1
  433. package/dist/feature-libraries/schema-index/codec.d.ts +1 -1
  434. package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
  435. package/dist/feature-libraries/schema-index/codec.js +10 -10
  436. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  437. package/dist/feature-libraries/schema-index/format.d.ts.map +1 -1
  438. package/dist/feature-libraries/schema-index/format.js.map +1 -1
  439. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  440. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  441. package/dist/feature-libraries/schema-index/schemaSummarizer.js +4 -4
  442. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  443. package/dist/feature-libraries/schemaBuilder.d.ts +1 -1
  444. package/dist/feature-libraries/schemaBuilder.d.ts.map +1 -1
  445. package/dist/feature-libraries/schemaBuilder.js +1 -1
  446. package/dist/feature-libraries/schemaBuilder.js.map +1 -1
  447. package/dist/feature-libraries/schemaBuilderBase.d.ts +1 -1
  448. package/dist/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  449. package/dist/feature-libraries/schemaBuilderBase.js +19 -19
  450. package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
  451. package/dist/feature-libraries/sequence-field/compose.d.ts +9 -13
  452. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  453. package/dist/feature-libraries/sequence-field/compose.js +76 -43
  454. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  455. package/dist/feature-libraries/sequence-field/format.d.ts.map +1 -1
  456. package/dist/feature-libraries/sequence-field/format.js +14 -14
  457. package/dist/feature-libraries/sequence-field/format.js.map +1 -1
  458. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +3 -3
  459. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  460. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  461. package/dist/feature-libraries/sequence-field/index.d.ts +5 -5
  462. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  463. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  464. package/dist/feature-libraries/sequence-field/invert.d.ts +1 -2
  465. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  466. package/dist/feature-libraries/sequence-field/invert.js +30 -39
  467. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  468. package/dist/feature-libraries/sequence-field/markListFactory.d.ts +4 -4
  469. package/dist/feature-libraries/sequence-field/markListFactory.d.ts.map +1 -1
  470. package/dist/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  471. package/dist/feature-libraries/sequence-field/markQueue.d.ts +7 -7
  472. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  473. package/dist/feature-libraries/sequence-field/markQueue.js +2 -2
  474. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  475. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +25 -14
  476. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  477. package/dist/feature-libraries/sequence-field/moveEffectTable.js +20 -11
  478. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  479. package/dist/feature-libraries/sequence-field/prune.d.ts +2 -2
  480. package/dist/feature-libraries/sequence-field/prune.d.ts.map +1 -1
  481. package/dist/feature-libraries/sequence-field/prune.js.map +1 -1
  482. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -4
  483. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  484. package/dist/feature-libraries/sequence-field/rebase.js +34 -40
  485. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  486. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +2 -2
  487. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +1 -1
  488. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +2 -2
  489. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +1 -1
  490. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts +1 -1
  491. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  492. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -1
  493. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  494. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +2 -2
  495. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
  496. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +1 -1
  497. package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
  498. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -3
  499. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  500. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +17 -19
  501. package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  502. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -17
  503. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  504. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +2 -2
  505. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  506. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -3
  507. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  508. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +10 -10
  509. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  510. package/dist/feature-libraries/sequence-field/types.d.ts +7 -8
  511. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  512. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  513. package/dist/feature-libraries/sequence-field/utils.d.ts +42 -35
  514. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  515. package/dist/feature-libraries/sequence-field/utils.js +43 -21
  516. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  517. package/dist/feature-libraries/storedToViewSchema.d.ts +2 -2
  518. package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  519. package/dist/feature-libraries/storedToViewSchema.js +3 -3
  520. package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
  521. package/dist/feature-libraries/treeCursorUtils.d.ts +1 -1
  522. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  523. package/dist/feature-libraries/treeCursorUtils.js +8 -8
  524. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  525. package/dist/feature-libraries/treeTextCursor.d.ts +1 -1
  526. package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
  527. package/dist/feature-libraries/treeTextCursor.js +3 -3
  528. package/dist/feature-libraries/treeTextCursor.js.map +1 -1
  529. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -2
  530. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  531. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  532. package/dist/feature-libraries/typed-schema/index.d.ts +0 -1
  533. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  534. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  535. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  536. package/dist/feature-libraries/typed-schema/schemaCollection.js +14 -14
  537. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  538. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -5
  539. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +1 -1
  540. package/dist/feature-libraries/typed-schema/typeUtils.js.map +1 -1
  541. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +5 -4
  542. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  543. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +19 -11
  544. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  545. package/dist/feature-libraries/typed-schema/view.d.ts +1 -1
  546. package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
  547. package/dist/feature-libraries/typed-schema/view.js +10 -10
  548. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  549. package/dist/feature-libraries/valueUtilities.d.ts +6 -3
  550. package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
  551. package/dist/feature-libraries/valueUtilities.js +11 -10
  552. package/dist/feature-libraries/valueUtilities.js.map +1 -1
  553. package/dist/index.d.ts +7 -7
  554. package/dist/index.d.ts.map +1 -1
  555. package/dist/index.js +9 -9
  556. package/dist/index.js.map +1 -1
  557. package/dist/packageVersion.d.ts +1 -1
  558. package/dist/packageVersion.js +1 -1
  559. package/dist/packageVersion.js.map +1 -1
  560. package/dist/public.d.ts +90 -0
  561. package/dist/shared-tree/index.d.ts +3 -3
  562. package/dist/shared-tree/index.d.ts.map +1 -1
  563. package/dist/shared-tree/index.js +2 -1
  564. package/dist/shared-tree/index.js.map +1 -1
  565. package/dist/shared-tree/schematizeTree.d.ts +1 -1
  566. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  567. package/dist/shared-tree/schematizeTree.js +11 -11
  568. package/dist/shared-tree/schematizeTree.js.map +1 -1
  569. package/dist/shared-tree/schematizingTreeView.d.ts +10 -3
  570. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  571. package/dist/shared-tree/schematizingTreeView.js +39 -39
  572. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  573. package/dist/shared-tree/sharedTree.d.ts +58 -8
  574. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  575. package/dist/shared-tree/sharedTree.js +45 -12
  576. package/dist/shared-tree/sharedTree.js.map +1 -1
  577. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +3 -5
  578. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  579. package/dist/shared-tree/sharedTreeChangeCodecs.js +18 -11
  580. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  581. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +1 -0
  582. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  583. package/dist/shared-tree/sharedTreeChangeFamily.js +9 -6
  584. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  585. package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -188
  586. package/dist/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  587. package/dist/shared-tree/sharedTreeChangeFormat.js +3 -3
  588. package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  589. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  590. package/dist/shared-tree/sharedTreeEditBuilder.js +4 -1
  591. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  592. package/dist/shared-tree/treeApi.d.ts +83 -2
  593. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  594. package/dist/shared-tree/treeApi.js +37 -14
  595. package/dist/shared-tree/treeApi.js.map +1 -1
  596. package/dist/shared-tree/treeCheckout.d.ts +41 -20
  597. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  598. package/dist/shared-tree/treeCheckout.js +135 -61
  599. package/dist/shared-tree/treeCheckout.js.map +1 -1
  600. package/dist/shared-tree/treeView.d.ts +3 -3
  601. package/dist/shared-tree/treeView.d.ts.map +1 -1
  602. package/dist/shared-tree/treeView.js.map +1 -1
  603. package/dist/shared-tree-core/branch.d.ts +5 -32
  604. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  605. package/dist/shared-tree-core/branch.js +12 -142
  606. package/dist/shared-tree-core/branch.js.map +1 -1
  607. package/dist/shared-tree-core/editManager.d.ts +2 -15
  608. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  609. package/dist/shared-tree-core/editManager.js +38 -82
  610. package/dist/shared-tree-core/editManager.js.map +1 -1
  611. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -4
  612. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  613. package/dist/shared-tree-core/editManagerCodecs.js +24 -10
  614. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  615. package/dist/shared-tree-core/editManagerFormat.d.ts +4 -5
  616. package/dist/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  617. package/dist/shared-tree-core/editManagerFormat.js +9 -10
  618. package/dist/shared-tree-core/editManagerFormat.js.map +1 -1
  619. package/dist/shared-tree-core/editManagerSummarizer.d.ts +7 -6
  620. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  621. package/dist/shared-tree-core/editManagerSummarizer.js +6 -9
  622. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  623. package/dist/shared-tree-core/index.d.ts +1 -1
  624. package/dist/shared-tree-core/index.d.ts.map +1 -1
  625. package/dist/shared-tree-core/index.js +2 -2
  626. package/dist/shared-tree-core/index.js.map +1 -1
  627. package/dist/shared-tree-core/messageCodecs.d.ts +7 -4
  628. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  629. package/dist/shared-tree-core/messageCodecs.js +21 -4
  630. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  631. package/dist/shared-tree-core/messageFormat.d.ts +10 -2
  632. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  633. package/dist/shared-tree-core/messageFormat.js +1 -0
  634. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  635. package/dist/shared-tree-core/messageTypes.d.ts.map +1 -1
  636. package/dist/shared-tree-core/messageTypes.js.map +1 -1
  637. package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  638. package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
  639. package/dist/shared-tree-core/sharedTreeCore.d.ts +10 -5
  640. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  641. package/dist/shared-tree-core/sharedTreeCore.js +18 -18
  642. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  643. package/dist/simple-tree/arrayNode.d.ts +187 -0
  644. package/dist/simple-tree/arrayNode.d.ts.map +1 -0
  645. package/dist/simple-tree/arrayNode.js +438 -0
  646. package/dist/simple-tree/arrayNode.js.map +1 -0
  647. package/dist/simple-tree/index.d.ts +10 -8
  648. package/dist/simple-tree/index.d.ts.map +1 -1
  649. package/dist/simple-tree/index.js +9 -8
  650. package/dist/simple-tree/index.js.map +1 -1
  651. package/dist/simple-tree/leafNodeSchema.d.ts +11 -0
  652. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -0
  653. package/dist/simple-tree/leafNodeSchema.js +51 -0
  654. package/dist/simple-tree/leafNodeSchema.js.map +1 -0
  655. package/dist/simple-tree/mapNode.d.ts +86 -0
  656. package/dist/simple-tree/mapNode.d.ts.map +1 -0
  657. package/dist/simple-tree/mapNode.js +204 -0
  658. package/dist/simple-tree/mapNode.js.map +1 -0
  659. package/dist/simple-tree/objectNode.d.ts +62 -0
  660. package/dist/simple-tree/objectNode.d.ts.map +1 -0
  661. package/dist/simple-tree/objectNode.js +242 -0
  662. package/dist/simple-tree/objectNode.js.map +1 -0
  663. package/dist/simple-tree/proxies.d.ts +21 -62
  664. package/dist/simple-tree/proxies.d.ts.map +1 -1
  665. package/dist/simple-tree/proxies.js +128 -679
  666. package/dist/simple-tree/proxies.js.map +1 -1
  667. package/dist/simple-tree/proxyBinding.d.ts +48 -0
  668. package/dist/simple-tree/proxyBinding.d.ts.map +1 -0
  669. package/dist/simple-tree/proxyBinding.js +132 -0
  670. package/dist/simple-tree/proxyBinding.js.map +1 -0
  671. package/dist/simple-tree/rawNode.d.ts +9 -50
  672. package/dist/simple-tree/rawNode.d.ts.map +1 -1
  673. package/dist/simple-tree/rawNode.js +15 -91
  674. package/dist/simple-tree/rawNode.js.map +1 -1
  675. package/dist/simple-tree/schemaCaching.d.ts +26 -0
  676. package/dist/simple-tree/schemaCaching.d.ts.map +1 -0
  677. package/dist/simple-tree/schemaCaching.js +69 -0
  678. package/dist/simple-tree/schemaCaching.js.map +1 -0
  679. package/dist/simple-tree/schemaCreationUtilities.d.ts +2 -1
  680. package/dist/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
  681. package/dist/simple-tree/schemaCreationUtilities.js +3 -3
  682. package/dist/simple-tree/schemaCreationUtilities.js.map +1 -1
  683. package/dist/simple-tree/schemaFactory.d.ts +92 -43
  684. package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
  685. package/dist/simple-tree/schemaFactory.js +124 -177
  686. package/dist/simple-tree/schemaFactory.js.map +1 -1
  687. package/dist/simple-tree/schemaFactoryRecursive.d.ts +27 -83
  688. package/dist/simple-tree/schemaFactoryRecursive.d.ts.map +1 -1
  689. package/dist/simple-tree/schemaFactoryRecursive.js +1 -115
  690. package/dist/simple-tree/schemaFactoryRecursive.js.map +1 -1
  691. package/dist/simple-tree/schemaTypes.d.ts +123 -70
  692. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  693. package/dist/simple-tree/schemaTypes.js +86 -5
  694. package/dist/simple-tree/schemaTypes.js.map +1 -1
  695. package/dist/simple-tree/testRecursiveDomain.d.ts +8 -8
  696. package/dist/simple-tree/testRecursiveDomain.d.ts.map +1 -1
  697. package/dist/simple-tree/testRecursiveDomain.js +2 -2
  698. package/dist/simple-tree/testRecursiveDomain.js.map +1 -1
  699. package/dist/simple-tree/toFlexSchema.d.ts +8 -20
  700. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  701. package/dist/simple-tree/toFlexSchema.js +33 -41
  702. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  703. package/dist/simple-tree/toMapTree.d.ts +12 -22
  704. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  705. package/dist/simple-tree/toMapTree.js +185 -136
  706. package/dist/simple-tree/toMapTree.js.map +1 -1
  707. package/dist/simple-tree/tree.d.ts +20 -3
  708. package/dist/simple-tree/tree.d.ts.map +1 -1
  709. package/dist/simple-tree/tree.js.map +1 -1
  710. package/dist/simple-tree/treeApi.d.ts +82 -5
  711. package/dist/simple-tree/treeApi.d.ts.map +1 -1
  712. package/dist/simple-tree/treeApi.js +96 -18
  713. package/dist/simple-tree/treeApi.js.map +1 -1
  714. package/dist/simple-tree/types.d.ts +1 -142
  715. package/dist/simple-tree/types.d.ts.map +1 -1
  716. package/dist/simple-tree/types.js.map +1 -1
  717. package/dist/simple-tree/typesUnsafe.d.ts +32 -17
  718. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  719. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  720. package/dist/treeFactory.d.ts +31 -14
  721. package/dist/treeFactory.d.ts.map +1 -1
  722. package/dist/treeFactory.js +50 -23
  723. package/dist/treeFactory.js.map +1 -1
  724. package/dist/util/brand.d.ts +26 -114
  725. package/dist/util/brand.d.ts.map +1 -1
  726. package/dist/util/brand.js +24 -91
  727. package/dist/util/brand.js.map +1 -1
  728. package/dist/util/idAllocator.d.ts.map +1 -1
  729. package/dist/util/idAllocator.js +2 -2
  730. package/dist/util/idAllocator.js.map +1 -1
  731. package/dist/util/index.d.ts +5 -3
  732. package/dist/util/index.d.ts.map +1 -1
  733. package/dist/util/index.js +8 -9
  734. package/dist/util/index.js.map +1 -1
  735. package/dist/util/nestedSet.d.ts.map +1 -1
  736. package/dist/util/nestedSet.js.map +1 -1
  737. package/dist/util/opaque.d.ts +46 -0
  738. package/dist/util/opaque.d.ts.map +1 -0
  739. package/dist/util/opaque.js +29 -0
  740. package/dist/util/opaque.js.map +1 -0
  741. package/dist/util/referenceCounting.d.ts +1 -1
  742. package/dist/util/referenceCounting.d.ts.map +1 -1
  743. package/dist/util/referenceCounting.js +3 -3
  744. package/dist/util/referenceCounting.js.map +1 -1
  745. package/dist/util/typeCheckTests.d.ts +1 -1
  746. package/dist/util/typeCheckTests.d.ts.map +1 -1
  747. package/dist/util/typeCheckTests.js.map +1 -1
  748. package/dist/util/typeUtils.d.ts +13 -0
  749. package/dist/util/typeUtils.d.ts.map +1 -1
  750. package/dist/util/typeUtils.js.map +1 -1
  751. package/dist/util/typeboxBrand.d.ts +17 -0
  752. package/dist/util/typeboxBrand.d.ts.map +1 -0
  753. package/dist/util/typeboxBrand.js +32 -0
  754. package/dist/util/typeboxBrand.js.map +1 -0
  755. package/dist/util/utils.d.ts +2 -15
  756. package/dist/util/utils.d.ts.map +1 -1
  757. package/dist/util/utils.js +11 -11
  758. package/dist/util/utils.js.map +1 -1
  759. package/docs/main/compatibility.md +95 -0
  760. package/docs/main/schema2.md +3 -3
  761. package/docs/main/sequence-field/move-composition.md +46 -0
  762. package/docs/main/tree-content-apis.md +5 -5
  763. package/docs/roadmap.md +4 -4
  764. package/internal.d.ts +11 -0
  765. package/lib/beta.d.ts +90 -0
  766. package/lib/codec/codec.d.ts +10 -4
  767. package/lib/codec/codec.d.ts.map +1 -1
  768. package/lib/codec/codec.js +2 -2
  769. package/lib/codec/codec.js.map +1 -1
  770. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  771. package/lib/codec/discriminatedUnions.js +5 -1
  772. package/lib/codec/discriminatedUnions.js.map +1 -1
  773. package/lib/codec/index.d.ts +2 -2
  774. package/lib/codec/index.d.ts.map +1 -1
  775. package/lib/codec/index.js +1 -1
  776. package/lib/codec/index.js.map +1 -1
  777. package/lib/codec/noopValidator.d.ts.map +1 -1
  778. package/lib/codec/noopValidator.js.map +1 -1
  779. package/lib/codec/versioned/codec.d.ts +10 -2
  780. package/lib/codec/versioned/codec.d.ts.map +1 -1
  781. package/lib/codec/versioned/codec.js +25 -4
  782. package/lib/codec/versioned/codec.js.map +1 -1
  783. package/lib/codec/versioned/index.d.ts +1 -1
  784. package/lib/codec/versioned/index.d.ts.map +1 -1
  785. package/lib/codec/versioned/index.js +1 -1
  786. package/lib/codec/versioned/index.js.map +1 -1
  787. package/lib/core/change-family/changeFamily.d.ts +2 -2
  788. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  789. package/lib/core/change-family/changeFamily.js.map +1 -1
  790. package/lib/core/forest/editableForest.d.ts +1 -1
  791. package/lib/core/forest/editableForest.d.ts.map +1 -1
  792. package/lib/core/forest/editableForest.js +2 -2
  793. package/lib/core/forest/editableForest.js.map +1 -1
  794. package/lib/core/forest/forest.d.ts +5 -1
  795. package/lib/core/forest/forest.d.ts.map +1 -1
  796. package/lib/core/forest/forest.js +1 -1
  797. package/lib/core/forest/forest.js.map +1 -1
  798. package/lib/core/index.d.ts +3 -3
  799. package/lib/core/index.d.ts.map +1 -1
  800. package/lib/core/index.js +3 -3
  801. package/lib/core/index.js.map +1 -1
  802. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  803. package/lib/core/rebase/changeRebaser.js.map +1 -1
  804. package/lib/core/rebase/index.d.ts +1 -1
  805. package/lib/core/rebase/index.d.ts.map +1 -1
  806. package/lib/core/rebase/index.js +1 -1
  807. package/lib/core/rebase/index.js.map +1 -1
  808. package/lib/core/rebase/revisionTagCodec.d.ts.map +1 -1
  809. package/lib/core/rebase/revisionTagCodec.js +1 -1
  810. package/lib/core/rebase/revisionTagCodec.js.map +1 -1
  811. package/lib/core/rebase/types.d.ts +30 -0
  812. package/lib/core/rebase/types.d.ts.map +1 -1
  813. package/lib/core/rebase/types.js +23 -0
  814. package/lib/core/rebase/types.js.map +1 -1
  815. package/lib/core/rebase/utils.d.ts.map +1 -1
  816. package/lib/core/rebase/utils.js +6 -5
  817. package/lib/core/rebase/utils.js.map +1 -1
  818. package/lib/core/revertible/index.d.ts +1 -1
  819. package/lib/core/revertible/index.d.ts.map +1 -1
  820. package/lib/core/revertible/index.js +1 -1
  821. package/lib/core/revertible/index.js.map +1 -1
  822. package/lib/core/revertible/revertible.d.ts +15 -49
  823. package/lib/core/revertible/revertible.d.ts.map +1 -1
  824. package/lib/core/revertible/revertible.js +2 -32
  825. package/lib/core/revertible/revertible.js.map +1 -1
  826. package/lib/core/schema-stored/format.d.ts.map +1 -1
  827. package/lib/core/schema-stored/format.js.map +1 -1
  828. package/lib/core/schema-stored/index.d.ts +2 -1
  829. package/lib/core/schema-stored/index.d.ts.map +1 -1
  830. package/lib/core/schema-stored/index.js +2 -1
  831. package/lib/core/schema-stored/index.js.map +1 -1
  832. package/lib/core/schema-stored/multiplicity.d.ts.map +1 -0
  833. package/lib/core/schema-stored/multiplicity.js.map +1 -0
  834. package/lib/core/schema-stored/schema.d.ts +32 -9
  835. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  836. package/lib/core/schema-stored/schema.js +13 -7
  837. package/lib/core/schema-stored/schema.js.map +1 -1
  838. package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
  839. package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
  840. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  841. package/lib/core/tree/anchorSet.d.ts +31 -16
  842. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  843. package/lib/core/tree/anchorSet.js +10 -35
  844. package/lib/core/tree/anchorSet.js.map +1 -1
  845. package/lib/core/tree/cursor.d.ts.map +1 -1
  846. package/lib/core/tree/cursor.js +1 -1
  847. package/lib/core/tree/cursor.js.map +1 -1
  848. package/lib/core/tree/delta.d.ts.map +1 -1
  849. package/lib/core/tree/delta.js.map +1 -1
  850. package/lib/core/tree/deltaUtil.d.ts +1 -1
  851. package/lib/core/tree/deltaUtil.d.ts.map +1 -1
  852. package/lib/core/tree/deltaUtil.js.map +1 -1
  853. package/lib/core/tree/detachedFieldIndex.d.ts +2 -2
  854. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  855. package/lib/core/tree/detachedFieldIndex.js +2 -2
  856. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  857. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  858. package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
  859. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  860. package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  861. package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
  862. package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  863. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  864. package/lib/core/tree/mapTree.d.ts.map +1 -1
  865. package/lib/core/tree/mapTree.js.map +1 -1
  866. package/lib/core/tree/pathTree.d.ts.map +1 -1
  867. package/lib/core/tree/pathTree.js.map +1 -1
  868. package/lib/core/tree/persistedTreeTextFormat.d.ts.map +1 -1
  869. package/lib/core/tree/persistedTreeTextFormat.js.map +1 -1
  870. package/lib/core/tree/sparseTree.d.ts.map +1 -1
  871. package/lib/core/tree/sparseTree.js +1 -1
  872. package/lib/core/tree/sparseTree.js.map +1 -1
  873. package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
  874. package/lib/core/tree/treeTextFormat.js.map +1 -1
  875. package/lib/core/tree/types.d.ts +1 -1
  876. package/lib/core/tree/types.d.ts.map +1 -1
  877. package/lib/core/tree/types.js +1 -1
  878. package/lib/core/tree/types.js.map +1 -1
  879. package/lib/core/tree/visitDelta.d.ts +13 -2
  880. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  881. package/lib/core/tree/visitDelta.js +43 -14
  882. package/lib/core/tree/visitDelta.js.map +1 -1
  883. package/lib/core/tree/visitPath.d.ts +1 -1
  884. package/lib/core/tree/visitPath.d.ts.map +1 -1
  885. package/lib/core/tree/visitPath.js +4 -0
  886. package/lib/core/tree/visitPath.js.map +1 -1
  887. package/lib/core/tree/visitorUtils.d.ts +4 -4
  888. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  889. package/lib/core/tree/visitorUtils.js +1 -1
  890. package/lib/core/tree/visitorUtils.js.map +1 -1
  891. package/lib/domains/json/jsonCursor.d.ts.map +1 -1
  892. package/lib/domains/json/jsonCursor.js +1 -1
  893. package/lib/domains/json/jsonCursor.js.map +1 -1
  894. package/lib/domains/json/jsonDomainSchema.d.ts.map +1 -1
  895. package/lib/domains/json/jsonDomainSchema.js.map +1 -1
  896. package/lib/domains/leafDomain.d.ts.map +1 -1
  897. package/lib/domains/leafDomain.js +1 -1
  898. package/lib/domains/leafDomain.js.map +1 -1
  899. package/lib/domains/nodeKey/nodeKeySchema.d.ts.map +1 -1
  900. package/lib/domains/nodeKey/nodeKeySchema.js +2 -2
  901. package/lib/domains/nodeKey/nodeKeySchema.js.map +1 -1
  902. package/lib/domains/schemaBuilder.d.ts +19 -81
  903. package/lib/domains/schemaBuilder.d.ts.map +1 -1
  904. package/lib/domains/schemaBuilder.js +24 -92
  905. package/lib/domains/schemaBuilder.js.map +1 -1
  906. package/lib/domains/testRecursiveDomain.d.ts +0 -4
  907. package/lib/domains/testRecursiveDomain.d.ts.map +1 -1
  908. package/lib/domains/testRecursiveDomain.js +1 -8
  909. package/lib/domains/testRecursiveDomain.js.map +1 -1
  910. package/lib/events/events.d.ts.map +1 -1
  911. package/lib/events/events.js +1 -1
  912. package/lib/events/events.js.map +1 -1
  913. package/lib/external-utilities/typeboxValidator.d.ts.map +1 -1
  914. package/lib/external-utilities/typeboxValidator.js.map +1 -1
  915. package/lib/feature-libraries/changeAtomIdCodec.d.ts +1 -1
  916. package/lib/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
  917. package/lib/feature-libraries/changeAtomIdCodec.js.map +1 -1
  918. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts +3 -3
  919. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  920. package/lib/feature-libraries/chunked-forest/basicChunk.js +4 -4
  921. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  922. package/lib/feature-libraries/chunked-forest/chunk.d.ts +1 -1
  923. package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
  924. package/lib/feature-libraries/chunked-forest/chunk.js +1 -1
  925. package/lib/feature-libraries/chunked-forest/chunk.js.map +1 -1
  926. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +2 -2
  927. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  928. package/lib/feature-libraries/chunked-forest/chunkTree.js +5 -6
  929. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  930. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -2
  931. package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
  932. package/lib/feature-libraries/chunked-forest/chunkedForest.js +4 -3
  933. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  934. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +2 -2
  935. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
  936. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +1 -1
  937. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  938. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
  939. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  940. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +3 -3
  941. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  942. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
  943. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  944. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +1 -1
  945. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  946. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -1
  947. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
  948. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  949. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -9
  950. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  951. package/lib/feature-libraries/chunked-forest/codec/codecs.js +4 -3
  952. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  953. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
  954. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  955. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  956. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  957. package/lib/feature-libraries/chunked-forest/codec/format.d.ts +1 -1
  958. package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
  959. package/lib/feature-libraries/chunked-forest/codec/format.js +2 -3
  960. package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
  961. package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +1 -1
  962. package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
  963. package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
  964. package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
  965. package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
  966. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +2 -2
  967. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  968. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
  969. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  970. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts +3 -3
  971. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  972. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -4
  973. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  974. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
  975. package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
  976. package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
  977. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  978. package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
  979. package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
  980. package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
  981. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
  982. package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
  983. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
  984. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  985. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +3 -3
  986. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  987. package/lib/feature-libraries/chunked-forest/uniformChunk.js +4 -4
  988. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  989. package/lib/feature-libraries/contextuallyTyped.d.ts +5 -9
  990. package/lib/feature-libraries/contextuallyTyped.d.ts.map +1 -1
  991. package/lib/feature-libraries/contextuallyTyped.js +6 -20
  992. package/lib/feature-libraries/contextuallyTyped.js.map +1 -1
  993. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -5
  994. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  995. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -6
  996. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  997. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +18 -4
  998. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  999. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -20
  1000. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  1001. package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
  1002. package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
  1003. package/lib/feature-libraries/default-schema/index.d.ts +1 -1
  1004. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  1005. package/lib/feature-libraries/default-schema/index.js +1 -1
  1006. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  1007. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts +8 -0
  1008. package/lib/feature-libraries/default-schema/noChangeCodecs.d.ts.map +1 -0
  1009. package/lib/feature-libraries/default-schema/noChangeCodecs.js +7 -0
  1010. package/lib/feature-libraries/default-schema/noChangeCodecs.js.map +1 -0
  1011. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +1 -1
  1012. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  1013. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +1 -1
  1014. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  1015. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  1016. package/lib/feature-libraries/editableTreeBinder.js +1 -1
  1017. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  1018. package/lib/feature-libraries/fieldGenerator.d.ts +1 -1
  1019. package/lib/feature-libraries/fieldGenerator.d.ts.map +1 -1
  1020. package/lib/feature-libraries/fieldGenerator.js.map +1 -1
  1021. package/lib/feature-libraries/flex-tree/context.d.ts +16 -4
  1022. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  1023. package/lib/feature-libraries/flex-tree/context.js +17 -5
  1024. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  1025. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +43 -36
  1026. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  1027. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +8 -5
  1028. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  1029. package/lib/feature-libraries/flex-tree/index.d.ts +3 -3
  1030. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  1031. package/lib/feature-libraries/flex-tree/index.js +2 -2
  1032. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  1033. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +7 -8
  1034. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  1035. package/lib/feature-libraries/flex-tree/lazyEntity.js +8 -12
  1036. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  1037. package/lib/feature-libraries/flex-tree/lazyField.d.ts +21 -7
  1038. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  1039. package/lib/feature-libraries/flex-tree/lazyField.js +43 -22
  1040. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  1041. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +12 -9
  1042. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  1043. package/lib/feature-libraries/flex-tree/lazyNode.js +35 -80
  1044. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  1045. package/lib/feature-libraries/flex-tree/nodeKeys.d.ts.map +1 -1
  1046. package/lib/feature-libraries/flex-tree/nodeKeys.js.map +1 -1
  1047. package/lib/feature-libraries/flex-tree/treeEvents.d.ts +7 -70
  1048. package/lib/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
  1049. package/lib/feature-libraries/flex-tree/treeEvents.js.map +1 -1
  1050. package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +1 -1
  1051. package/lib/feature-libraries/flex-tree/unboxed.js +1 -1
  1052. package/lib/feature-libraries/flex-tree/unboxed.js.map +1 -1
  1053. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  1054. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  1055. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  1056. package/lib/feature-libraries/forest-summary/codec.js +1 -1
  1057. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  1058. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
  1059. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  1060. package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -3
  1061. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  1062. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  1063. package/lib/feature-libraries/forest-summary/format.js +1 -1
  1064. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  1065. package/lib/feature-libraries/index.d.ts +8 -9
  1066. package/lib/feature-libraries/index.d.ts.map +1 -1
  1067. package/lib/feature-libraries/index.js +6 -7
  1068. package/lib/feature-libraries/index.js.map +1 -1
  1069. package/lib/feature-libraries/mapTreeCursor.d.ts +1 -1
  1070. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  1071. package/lib/feature-libraries/mapTreeCursor.js +2 -2
  1072. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  1073. package/lib/feature-libraries/memoizedIdRangeAllocator.js +1 -1
  1074. package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
  1075. package/lib/feature-libraries/modular-schema/comparison.d.ts +1 -1
  1076. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  1077. package/lib/feature-libraries/modular-schema/comparison.js +3 -3
  1078. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  1079. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +19 -13
  1080. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  1081. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  1082. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +3 -4
  1083. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  1084. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  1085. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +21 -0
  1086. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -0
  1087. package/lib/{test/codec/codec.spec.d.ts → feature-libraries/modular-schema/fieldKindConfiguration.js} +1 -1
  1088. package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -0
  1089. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +1 -2
  1090. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
  1091. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +3 -3
  1092. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  1093. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  1094. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -7
  1095. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  1096. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +3 -5
  1097. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
  1098. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +7 -7
  1099. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  1100. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts +1 -1
  1101. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.d.ts.map +1 -1
  1102. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js +1 -1
  1103. package/lib/feature-libraries/modular-schema/genericFieldKindFormat.js.map +1 -1
  1104. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +4 -4
  1105. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
  1106. package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
  1107. package/lib/feature-libraries/modular-schema/index.d.ts +5 -4
  1108. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  1109. package/lib/feature-libraries/modular-schema/index.js +2 -2
  1110. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  1111. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +1 -1
  1112. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  1113. package/lib/feature-libraries/modular-schema/isNeverTree.js +6 -7
  1114. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  1115. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -5
  1116. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  1117. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +63 -27
  1118. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  1119. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +13 -25
  1120. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  1121. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +202 -110
  1122. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  1123. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +5 -12
  1124. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  1125. package/lib/feature-libraries/modular-schema/modularChangeFormat.js +2 -12
  1126. package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  1127. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +6 -4
  1128. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  1129. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  1130. package/lib/feature-libraries/node-key/nodeKey.d.ts +1 -1
  1131. package/lib/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
  1132. package/lib/feature-libraries/node-key/nodeKey.js.map +1 -1
  1133. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts +2 -2
  1134. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts.map +1 -1
  1135. package/lib/feature-libraries/node-key/nodeKeyIndex.js +2 -2
  1136. package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  1137. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts +2 -2
  1138. package/lib/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
  1139. package/lib/feature-libraries/node-key/nodeKeyManager.js +2 -2
  1140. package/lib/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
  1141. package/lib/feature-libraries/object-forest/objectForest.d.ts +1 -1
  1142. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  1143. package/lib/feature-libraries/object-forest/objectForest.js +6 -5
  1144. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  1145. package/lib/feature-libraries/optional-field/index.d.ts +1 -1
  1146. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  1147. package/lib/feature-libraries/optional-field/index.js +1 -1
  1148. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  1149. package/lib/feature-libraries/optional-field/optionalField.d.ts +3 -5
  1150. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  1151. package/lib/feature-libraries/optional-field/optionalField.js +18 -22
  1152. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  1153. package/lib/feature-libraries/optional-field/{optionalFieldChangeFormat.d.ts → optionalFieldChangeFormatV1.d.ts} +1 -1
  1154. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -0
  1155. package/lib/feature-libraries/optional-field/{optionalFieldChangeFormat.js → optionalFieldChangeFormatV1.js} +11 -2
  1156. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.js.map +1 -0
  1157. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +25 -0
  1158. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -0
  1159. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js +40 -0
  1160. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.js.map +1 -0
  1161. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +4 -7
  1162. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  1163. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  1164. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +12 -0
  1165. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +1 -0
  1166. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +154 -0
  1167. package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +1 -0
  1168. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +12 -0
  1169. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -0
  1170. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +83 -0
  1171. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -0
  1172. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +2 -4
  1173. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  1174. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +7 -150
  1175. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  1176. package/lib/feature-libraries/schema-aware/schemaAware.d.ts +3 -4
  1177. package/lib/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
  1178. package/lib/feature-libraries/schema-aware/schemaAware.js +1 -1
  1179. package/lib/feature-libraries/schema-aware/schemaAware.js.map +1 -1
  1180. package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
  1181. package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
  1182. package/lib/feature-libraries/schema-edits/index.js +1 -1
  1183. package/lib/feature-libraries/schema-edits/index.js.map +1 -1
  1184. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +2 -3
  1185. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
  1186. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +10 -2
  1187. package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
  1188. package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
  1189. package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
  1190. package/lib/feature-libraries/schema-edits/schemaChangeTypes.d.ts +5 -0
  1191. package/lib/feature-libraries/schema-edits/schemaChangeTypes.d.ts.map +1 -1
  1192. package/lib/feature-libraries/schema-edits/schemaChangeTypes.js.map +1 -1
  1193. package/lib/feature-libraries/schema-index/codec.d.ts +1 -1
  1194. package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
  1195. package/lib/feature-libraries/schema-index/codec.js +3 -3
  1196. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  1197. package/lib/feature-libraries/schema-index/format.d.ts.map +1 -1
  1198. package/lib/feature-libraries/schema-index/format.js.map +1 -1
  1199. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
  1200. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  1201. package/lib/feature-libraries/schema-index/schemaSummarizer.js +2 -2
  1202. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  1203. package/lib/feature-libraries/schemaBuilder.d.ts +1 -1
  1204. package/lib/feature-libraries/schemaBuilder.d.ts.map +1 -1
  1205. package/lib/feature-libraries/schemaBuilder.js +1 -1
  1206. package/lib/feature-libraries/schemaBuilder.js.map +1 -1
  1207. package/lib/feature-libraries/schemaBuilderBase.d.ts +1 -1
  1208. package/lib/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
  1209. package/lib/feature-libraries/schemaBuilderBase.js +2 -2
  1210. package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
  1211. package/lib/feature-libraries/sequence-field/compose.d.ts +9 -13
  1212. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  1213. package/lib/feature-libraries/sequence-field/compose.js +63 -30
  1214. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  1215. package/lib/feature-libraries/sequence-field/format.d.ts.map +1 -1
  1216. package/lib/feature-libraries/sequence-field/format.js +1 -1
  1217. package/lib/feature-libraries/sequence-field/format.js.map +1 -1
  1218. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +3 -3
  1219. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  1220. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  1221. package/lib/feature-libraries/sequence-field/index.d.ts +5 -5
  1222. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  1223. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  1224. package/lib/feature-libraries/sequence-field/invert.d.ts +1 -2
  1225. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  1226. package/lib/feature-libraries/sequence-field/invert.js +20 -29
  1227. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  1228. package/lib/feature-libraries/sequence-field/markListFactory.d.ts +4 -4
  1229. package/lib/feature-libraries/sequence-field/markListFactory.d.ts.map +1 -1
  1230. package/lib/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  1231. package/lib/feature-libraries/sequence-field/markQueue.d.ts +7 -7
  1232. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  1233. package/lib/feature-libraries/sequence-field/markQueue.js +1 -1
  1234. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  1235. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +25 -14
  1236. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  1237. package/lib/feature-libraries/sequence-field/moveEffectTable.js +15 -6
  1238. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  1239. package/lib/feature-libraries/sequence-field/prune.d.ts +2 -2
  1240. package/lib/feature-libraries/sequence-field/prune.d.ts.map +1 -1
  1241. package/lib/feature-libraries/sequence-field/prune.js.map +1 -1
  1242. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -4
  1243. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  1244. package/lib/feature-libraries/sequence-field/rebase.js +11 -17
  1245. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  1246. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +2 -2
  1247. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +1 -1
  1248. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +2 -2
  1249. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +1 -1
  1250. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts +1 -1
  1251. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  1252. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -1
  1253. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  1254. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +2 -2
  1255. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
  1256. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +1 -1
  1257. package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
  1258. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +2 -3
  1259. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
  1260. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +13 -15
  1261. package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
  1262. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -17
  1263. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  1264. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +1 -1
  1265. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  1266. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -3
  1267. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  1268. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +7 -7
  1269. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  1270. package/lib/feature-libraries/sequence-field/types.d.ts +7 -8
  1271. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  1272. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  1273. package/lib/feature-libraries/sequence-field/utils.d.ts +42 -35
  1274. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  1275. package/lib/feature-libraries/sequence-field/utils.js +28 -7
  1276. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  1277. package/lib/feature-libraries/storedToViewSchema.d.ts +2 -2
  1278. package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
  1279. package/lib/feature-libraries/storedToViewSchema.js +3 -3
  1280. package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
  1281. package/lib/feature-libraries/treeCursorUtils.d.ts +1 -1
  1282. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  1283. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  1284. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  1285. package/lib/feature-libraries/treeTextCursor.d.ts +1 -1
  1286. package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
  1287. package/lib/feature-libraries/treeTextCursor.js +2 -2
  1288. package/lib/feature-libraries/treeTextCursor.js.map +1 -1
  1289. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -2
  1290. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  1291. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  1292. package/lib/feature-libraries/typed-schema/index.d.ts +0 -1
  1293. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  1294. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  1295. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
  1296. package/lib/feature-libraries/typed-schema/schemaCollection.js +4 -4
  1297. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
  1298. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -5
  1299. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +1 -1
  1300. package/lib/feature-libraries/typed-schema/typeUtils.js.map +1 -1
  1301. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +5 -4
  1302. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  1303. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +16 -8
  1304. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  1305. package/lib/feature-libraries/typed-schema/view.d.ts +1 -1
  1306. package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
  1307. package/lib/feature-libraries/typed-schema/view.js +1 -1
  1308. package/lib/feature-libraries/typed-schema/view.js.map +1 -1
  1309. package/lib/feature-libraries/valueUtilities.d.ts +6 -3
  1310. package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
  1311. package/lib/feature-libraries/valueUtilities.js +8 -7
  1312. package/lib/feature-libraries/valueUtilities.js.map +1 -1
  1313. package/lib/index.d.ts +7 -7
  1314. package/lib/index.d.ts.map +1 -1
  1315. package/lib/index.js +5 -7
  1316. package/lib/index.js.map +1 -1
  1317. package/lib/packageVersion.d.ts +1 -1
  1318. package/lib/packageVersion.js +1 -1
  1319. package/lib/packageVersion.js.map +1 -1
  1320. package/lib/public.d.ts +90 -0
  1321. package/lib/shared-tree/index.d.ts +3 -3
  1322. package/lib/shared-tree/index.d.ts.map +1 -1
  1323. package/lib/shared-tree/index.js +2 -2
  1324. package/lib/shared-tree/index.js.map +1 -1
  1325. package/lib/shared-tree/schematizeTree.d.ts +1 -1
  1326. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  1327. package/lib/shared-tree/schematizeTree.js +6 -6
  1328. package/lib/shared-tree/schematizeTree.js.map +1 -1
  1329. package/lib/shared-tree/schematizingTreeView.d.ts +10 -3
  1330. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  1331. package/lib/shared-tree/schematizingTreeView.js +21 -21
  1332. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  1333. package/lib/shared-tree/sharedTree.d.ts +58 -8
  1334. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  1335. package/lib/shared-tree/sharedTree.js +43 -10
  1336. package/lib/shared-tree/sharedTree.js.map +1 -1
  1337. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +3 -5
  1338. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  1339. package/lib/shared-tree/sharedTreeChangeCodecs.js +18 -10
  1340. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  1341. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +1 -0
  1342. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  1343. package/lib/shared-tree/sharedTreeChangeFamily.js +7 -5
  1344. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  1345. package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -188
  1346. package/lib/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
  1347. package/lib/shared-tree/sharedTreeChangeFormat.js +3 -3
  1348. package/lib/shared-tree/sharedTreeChangeFormat.js.map +1 -1
  1349. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  1350. package/lib/shared-tree/sharedTreeEditBuilder.js +4 -1
  1351. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  1352. package/lib/shared-tree/treeApi.d.ts +83 -2
  1353. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  1354. package/lib/shared-tree/treeApi.js +30 -7
  1355. package/lib/shared-tree/treeApi.js.map +1 -1
  1356. package/lib/shared-tree/treeCheckout.d.ts +41 -20
  1357. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  1358. package/lib/shared-tree/treeCheckout.js +115 -41
  1359. package/lib/shared-tree/treeCheckout.js.map +1 -1
  1360. package/lib/shared-tree/treeView.d.ts +3 -3
  1361. package/lib/shared-tree/treeView.d.ts.map +1 -1
  1362. package/lib/shared-tree/treeView.js.map +1 -1
  1363. package/lib/shared-tree-core/branch.d.ts +5 -32
  1364. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  1365. package/lib/shared-tree-core/branch.js +9 -139
  1366. package/lib/shared-tree-core/branch.js.map +1 -1
  1367. package/lib/shared-tree-core/editManager.d.ts +2 -15
  1368. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  1369. package/lib/shared-tree-core/editManager.js +4 -48
  1370. package/lib/shared-tree-core/editManager.js.map +1 -1
  1371. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -4
  1372. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  1373. package/lib/shared-tree-core/editManagerCodecs.js +19 -6
  1374. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  1375. package/lib/shared-tree-core/editManagerFormat.d.ts +4 -5
  1376. package/lib/shared-tree-core/editManagerFormat.d.ts.map +1 -1
  1377. package/lib/shared-tree-core/editManagerFormat.js +2 -3
  1378. package/lib/shared-tree-core/editManagerFormat.js.map +1 -1
  1379. package/lib/shared-tree-core/editManagerSummarizer.d.ts +7 -6
  1380. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  1381. package/lib/shared-tree-core/editManagerSummarizer.js +4 -7
  1382. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  1383. package/lib/shared-tree-core/index.d.ts +1 -1
  1384. package/lib/shared-tree-core/index.d.ts.map +1 -1
  1385. package/lib/shared-tree-core/index.js.map +1 -1
  1386. package/lib/shared-tree-core/messageCodecs.d.ts +7 -4
  1387. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  1388. package/lib/shared-tree-core/messageCodecs.js +19 -3
  1389. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  1390. package/lib/shared-tree-core/messageFormat.d.ts +10 -2
  1391. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  1392. package/lib/shared-tree-core/messageFormat.js +1 -0
  1393. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  1394. package/lib/shared-tree-core/messageTypes.d.ts.map +1 -1
  1395. package/lib/shared-tree-core/messageTypes.js.map +1 -1
  1396. package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
  1397. package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
  1398. package/lib/shared-tree-core/sharedTreeCore.d.ts +10 -5
  1399. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  1400. package/lib/shared-tree-core/sharedTreeCore.js +12 -12
  1401. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  1402. package/lib/simple-tree/arrayNode.d.ts +187 -0
  1403. package/lib/simple-tree/arrayNode.d.ts.map +1 -0
  1404. package/lib/simple-tree/arrayNode.js +433 -0
  1405. package/lib/simple-tree/arrayNode.js.map +1 -0
  1406. package/lib/simple-tree/index.d.ts +10 -8
  1407. package/lib/simple-tree/index.d.ts.map +1 -1
  1408. package/lib/simple-tree/index.js +4 -4
  1409. package/lib/simple-tree/index.js.map +1 -1
  1410. package/lib/simple-tree/leafNodeSchema.d.ts +11 -0
  1411. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -0
  1412. package/lib/simple-tree/leafNodeSchema.js +48 -0
  1413. package/lib/simple-tree/leafNodeSchema.js.map +1 -0
  1414. package/lib/simple-tree/mapNode.d.ts +86 -0
  1415. package/lib/simple-tree/mapNode.d.ts.map +1 -0
  1416. package/lib/simple-tree/mapNode.js +198 -0
  1417. package/lib/simple-tree/mapNode.js.map +1 -0
  1418. package/lib/simple-tree/objectNode.d.ts +62 -0
  1419. package/lib/simple-tree/objectNode.d.ts.map +1 -0
  1420. package/lib/simple-tree/objectNode.js +236 -0
  1421. package/lib/simple-tree/objectNode.js.map +1 -0
  1422. package/lib/simple-tree/proxies.d.ts +21 -62
  1423. package/lib/simple-tree/proxies.d.ts.map +1 -1
  1424. package/lib/simple-tree/proxies.js +119 -667
  1425. package/lib/simple-tree/proxies.js.map +1 -1
  1426. package/lib/simple-tree/proxyBinding.d.ts +48 -0
  1427. package/lib/simple-tree/proxyBinding.d.ts.map +1 -0
  1428. package/lib/simple-tree/proxyBinding.js +124 -0
  1429. package/lib/simple-tree/proxyBinding.js.map +1 -0
  1430. package/lib/simple-tree/rawNode.d.ts +9 -50
  1431. package/lib/simple-tree/rawNode.d.ts.map +1 -1
  1432. package/lib/simple-tree/rawNode.js +12 -85
  1433. package/lib/simple-tree/rawNode.js.map +1 -1
  1434. package/lib/simple-tree/schemaCaching.d.ts +26 -0
  1435. package/lib/simple-tree/schemaCaching.d.ts.map +1 -0
  1436. package/lib/simple-tree/schemaCaching.js +61 -0
  1437. package/lib/simple-tree/schemaCaching.js.map +1 -0
  1438. package/lib/simple-tree/schemaCreationUtilities.d.ts +2 -1
  1439. package/lib/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
  1440. package/lib/simple-tree/schemaCreationUtilities.js +1 -1
  1441. package/lib/simple-tree/schemaCreationUtilities.js.map +1 -1
  1442. package/lib/simple-tree/schemaFactory.d.ts +92 -43
  1443. package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
  1444. package/lib/simple-tree/schemaFactory.js +105 -157
  1445. package/lib/simple-tree/schemaFactory.js.map +1 -1
  1446. package/lib/simple-tree/schemaFactoryRecursive.d.ts +27 -83
  1447. package/lib/simple-tree/schemaFactoryRecursive.d.ts.map +1 -1
  1448. package/lib/simple-tree/schemaFactoryRecursive.js +1 -114
  1449. package/lib/simple-tree/schemaFactoryRecursive.js.map +1 -1
  1450. package/lib/simple-tree/schemaTypes.d.ts +123 -70
  1451. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  1452. package/lib/simple-tree/schemaTypes.js +81 -4
  1453. package/lib/simple-tree/schemaTypes.js.map +1 -1
  1454. package/lib/simple-tree/testRecursiveDomain.d.ts +8 -8
  1455. package/lib/simple-tree/testRecursiveDomain.d.ts.map +1 -1
  1456. package/lib/simple-tree/testRecursiveDomain.js +2 -2
  1457. package/lib/simple-tree/testRecursiveDomain.js.map +1 -1
  1458. package/lib/simple-tree/toFlexSchema.d.ts +8 -20
  1459. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  1460. package/lib/simple-tree/toFlexSchema.js +22 -27
  1461. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  1462. package/lib/simple-tree/toMapTree.d.ts +12 -22
  1463. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  1464. package/lib/simple-tree/toMapTree.js +183 -133
  1465. package/lib/simple-tree/toMapTree.js.map +1 -1
  1466. package/lib/simple-tree/tree.d.ts +20 -3
  1467. package/lib/simple-tree/tree.d.ts.map +1 -1
  1468. package/lib/simple-tree/tree.js.map +1 -1
  1469. package/lib/simple-tree/treeApi.d.ts +82 -5
  1470. package/lib/simple-tree/treeApi.d.ts.map +1 -1
  1471. package/lib/simple-tree/treeApi.js +90 -12
  1472. package/lib/simple-tree/treeApi.js.map +1 -1
  1473. package/lib/simple-tree/types.d.ts +1 -142
  1474. package/lib/simple-tree/types.d.ts.map +1 -1
  1475. package/lib/simple-tree/types.js.map +1 -1
  1476. package/lib/simple-tree/typesUnsafe.d.ts +32 -17
  1477. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  1478. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  1479. package/lib/treeFactory.d.ts +31 -14
  1480. package/lib/treeFactory.d.ts.map +1 -1
  1481. package/lib/treeFactory.js +48 -22
  1482. package/lib/treeFactory.js.map +1 -1
  1483. package/lib/util/brand.d.ts +26 -114
  1484. package/lib/util/brand.d.ts.map +1 -1
  1485. package/lib/util/brand.js +23 -83
  1486. package/lib/util/brand.js.map +1 -1
  1487. package/lib/util/idAllocator.d.ts.map +1 -1
  1488. package/lib/util/idAllocator.js +1 -1
  1489. package/lib/util/idAllocator.js.map +1 -1
  1490. package/lib/util/index.d.ts +5 -3
  1491. package/lib/util/index.d.ts.map +1 -1
  1492. package/lib/util/index.js +3 -1
  1493. package/lib/util/index.js.map +1 -1
  1494. package/lib/util/nestedSet.d.ts.map +1 -1
  1495. package/lib/util/nestedSet.js.map +1 -1
  1496. package/lib/util/opaque.d.ts +46 -0
  1497. package/lib/util/opaque.d.ts.map +1 -0
  1498. package/lib/util/opaque.js +24 -0
  1499. package/lib/util/opaque.js.map +1 -0
  1500. package/lib/util/referenceCounting.d.ts +1 -1
  1501. package/lib/util/referenceCounting.d.ts.map +1 -1
  1502. package/lib/util/referenceCounting.js +2 -2
  1503. package/lib/util/referenceCounting.js.map +1 -1
  1504. package/lib/util/typeCheckTests.d.ts +1 -1
  1505. package/lib/util/typeCheckTests.d.ts.map +1 -1
  1506. package/lib/util/typeCheckTests.js.map +1 -1
  1507. package/lib/util/typeUtils.d.ts +13 -0
  1508. package/lib/util/typeUtils.d.ts.map +1 -1
  1509. package/lib/util/typeUtils.js.map +1 -1
  1510. package/lib/util/typeboxBrand.d.ts +17 -0
  1511. package/lib/util/typeboxBrand.d.ts.map +1 -0
  1512. package/lib/util/typeboxBrand.js +27 -0
  1513. package/lib/util/typeboxBrand.js.map +1 -0
  1514. package/lib/util/utils.d.ts +2 -15
  1515. package/lib/util/utils.d.ts.map +1 -1
  1516. package/lib/util/utils.js +3 -3
  1517. package/lib/util/utils.js.map +1 -1
  1518. package/package.json +55 -50
  1519. package/src/codec/codec.ts +15 -7
  1520. package/src/codec/discriminatedUnions.ts +3 -1
  1521. package/src/codec/index.ts +8 -1
  1522. package/src/codec/noopValidator.ts +1 -0
  1523. package/src/codec/versioned/codec.ts +55 -25
  1524. package/src/codec/versioned/index.ts +5 -1
  1525. package/src/core/README.md +1 -5
  1526. package/src/core/change-family/changeFamily.ts +3 -2
  1527. package/src/core/forest/editableForest.ts +7 -5
  1528. package/src/core/forest/forest.ts +11 -4
  1529. package/src/core/index.ts +10 -8
  1530. package/src/core/rebase/changeRebaser.ts +1 -0
  1531. package/src/core/rebase/index.ts +4 -0
  1532. package/src/core/rebase/revisionTagCodec.ts +3 -1
  1533. package/src/core/rebase/types.ts +46 -1
  1534. package/src/core/rebase/utils.ts +9 -6
  1535. package/src/core/revertible/index.ts +1 -1
  1536. package/src/core/revertible/revertible.ts +17 -50
  1537. package/src/core/schema-stored/format.ts +1 -0
  1538. package/src/core/schema-stored/index.ts +5 -2
  1539. package/src/{feature-libraries → core/schema-stored}/multiplicity.ts +1 -0
  1540. package/src/core/schema-stored/schema.ts +51 -23
  1541. package/src/core/schema-stored/storedSchemaRepository.ts +4 -2
  1542. package/src/core/tree/anchorSet.ts +52 -63
  1543. package/src/core/tree/cursor.ts +3 -1
  1544. package/src/core/tree/delta.ts +1 -0
  1545. package/src/core/tree/deltaUtil.ts +2 -1
  1546. package/src/core/tree/detachedFieldIndex.ts +6 -4
  1547. package/src/core/tree/detachedFieldIndexCodec.ts +4 -2
  1548. package/src/core/tree/detachedFieldIndexFormat.ts +2 -0
  1549. package/src/core/tree/detachedFieldIndexTypes.ts +1 -0
  1550. package/src/core/tree/mapTree.ts +1 -0
  1551. package/src/core/tree/pathTree.ts +1 -0
  1552. package/src/core/tree/persistedTreeTextFormat.ts +1 -0
  1553. package/src/core/tree/sparseTree.ts +4 -2
  1554. package/src/core/tree/treeTextFormat.ts +1 -0
  1555. package/src/core/tree/types.ts +2 -1
  1556. package/src/core/tree/visitDelta.ts +65 -18
  1557. package/src/core/tree/visitPath.ts +2 -1
  1558. package/src/core/tree/visitorUtils.ts +7 -5
  1559. package/src/domains/json/jsonCursor.ts +6 -4
  1560. package/src/domains/json/jsonDomainSchema.ts +1 -2
  1561. package/src/domains/leafDomain.ts +1 -1
  1562. package/src/domains/nodeKey/nodeKeySchema.ts +5 -4
  1563. package/src/domains/schemaBuilder.ts +25 -214
  1564. package/src/domains/testRecursiveDomain.ts +2 -25
  1565. package/src/events/events.ts +2 -1
  1566. package/src/external-utilities/typeboxValidator.ts +2 -1
  1567. package/src/feature-libraries/README.md +4 -4
  1568. package/src/feature-libraries/changeAtomIdCodec.ts +4 -4
  1569. package/src/feature-libraries/chunked-forest/basicChunk.ts +12 -10
  1570. package/src/feature-libraries/chunked-forest/chunk.ts +3 -2
  1571. package/src/feature-libraries/chunked-forest/chunkTree.ts +17 -15
  1572. package/src/feature-libraries/chunked-forest/chunkedForest.ts +20 -17
  1573. package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +4 -3
  1574. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +16 -14
  1575. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +5 -3
  1576. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
  1577. package/src/feature-libraries/chunked-forest/codec/codecs.ts +9 -12
  1578. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +11 -9
  1579. package/src/feature-libraries/chunked-forest/codec/format.ts +4 -3
  1580. package/src/feature-libraries/chunked-forest/codec/index.ts +1 -6
  1581. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +8 -6
  1582. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +13 -11
  1583. package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -1
  1584. package/src/feature-libraries/chunked-forest/emptyChunk.ts +5 -4
  1585. package/src/feature-libraries/chunked-forest/index.ts +0 -1
  1586. package/src/feature-libraries/chunked-forest/sequenceChunk.ts +3 -2
  1587. package/src/feature-libraries/chunked-forest/uniformChunk.ts +11 -9
  1588. package/src/feature-libraries/contextuallyTyped.ts +23 -36
  1589. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +36 -57
  1590. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +78 -25
  1591. package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
  1592. package/src/feature-libraries/default-schema/index.ts +2 -0
  1593. package/src/feature-libraries/default-schema/noChangeCodecs.ts +12 -0
  1594. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +4 -3
  1595. package/src/feature-libraries/editableTreeBinder.ts +3 -1
  1596. package/src/feature-libraries/fieldGenerator.ts +2 -1
  1597. package/src/feature-libraries/flex-tree/README.md +2 -2
  1598. package/src/feature-libraries/flex-tree/context.ts +34 -8
  1599. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +63 -45
  1600. package/src/feature-libraries/flex-tree/index.ts +3 -3
  1601. package/src/feature-libraries/flex-tree/lazyEntity.ts +13 -23
  1602. package/src/feature-libraries/flex-tree/lazyField.ts +95 -47
  1603. package/src/feature-libraries/flex-tree/lazyNode.ts +65 -131
  1604. package/src/feature-libraries/flex-tree/nodeKeys.ts +1 -0
  1605. package/src/feature-libraries/flex-tree/treeEvents.ts +7 -73
  1606. package/src/feature-libraries/flex-tree/unboxed.ts +3 -2
  1607. package/src/feature-libraries/flex-tree/utilities.ts +1 -0
  1608. package/src/feature-libraries/forest-summary/codec.ts +3 -1
  1609. package/src/feature-libraries/forest-summary/forestSummarizer.ts +13 -11
  1610. package/src/feature-libraries/forest-summary/format.ts +2 -1
  1611. package/src/feature-libraries/index.ts +13 -12
  1612. package/src/feature-libraries/mapTreeCursor.ts +8 -6
  1613. package/src/feature-libraries/memoizedIdRangeAllocator.ts +3 -3
  1614. package/src/feature-libraries/modular-schema/comparison.ts +11 -9
  1615. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +29 -28
  1616. package/src/feature-libraries/modular-schema/fieldKind.ts +8 -4
  1617. package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +24 -0
  1618. package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +7 -5
  1619. package/src/feature-libraries/modular-schema/genericFieldKind.ts +12 -20
  1620. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +18 -31
  1621. package/src/feature-libraries/modular-schema/genericFieldKindFormat.ts +2 -2
  1622. package/src/feature-libraries/modular-schema/genericFieldKindTypes.ts +4 -4
  1623. package/src/feature-libraries/modular-schema/index.ts +5 -2
  1624. package/src/feature-libraries/modular-schema/isNeverTree.ts +12 -12
  1625. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +151 -56
  1626. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +460 -251
  1627. package/src/feature-libraries/modular-schema/modularChangeFormat.ts +4 -22
  1628. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +7 -3
  1629. package/src/feature-libraries/node-key/nodeKey.ts +2 -1
  1630. package/src/feature-libraries/node-key/nodeKeyIndex.ts +5 -3
  1631. package/src/feature-libraries/node-key/nodeKeyManager.ts +6 -4
  1632. package/src/feature-libraries/object-forest/objectForest.ts +25 -23
  1633. package/src/feature-libraries/optional-field/index.ts +1 -1
  1634. package/src/feature-libraries/optional-field/optionalField.ts +38 -44
  1635. package/src/feature-libraries/optional-field/{optionalFieldChangeFormat.ts → optionalFieldChangeFormatV1.ts} +10 -1
  1636. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV2.ts +60 -0
  1637. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +4 -7
  1638. package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +204 -0
  1639. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +135 -0
  1640. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +11 -207
  1641. package/src/feature-libraries/schema-aware/README.md +1 -1
  1642. package/src/feature-libraries/schema-aware/schemaAware.ts +13 -9
  1643. package/src/feature-libraries/schema-edits/index.ts +1 -1
  1644. package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +23 -3
  1645. package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +1 -0
  1646. package/src/feature-libraries/schema-edits/schemaChangeTypes.ts +6 -0
  1647. package/src/feature-libraries/schema-index/codec.ts +8 -7
  1648. package/src/feature-libraries/schema-index/format.ts +1 -0
  1649. package/src/feature-libraries/schema-index/schemaSummarizer.ts +10 -8
  1650. package/src/feature-libraries/schemaBuilder.ts +2 -1
  1651. package/src/feature-libraries/schemaBuilderBase.ts +16 -14
  1652. package/src/feature-libraries/sequence-field/compose.ts +283 -176
  1653. package/src/feature-libraries/sequence-field/format.ts +2 -1
  1654. package/src/feature-libraries/sequence-field/helperTypes.ts +5 -5
  1655. package/src/feature-libraries/sequence-field/index.ts +4 -5
  1656. package/src/feature-libraries/sequence-field/invert.ts +49 -82
  1657. package/src/feature-libraries/sequence-field/markListFactory.ts +4 -4
  1658. package/src/feature-libraries/sequence-field/markQueue.ts +12 -10
  1659. package/src/feature-libraries/sequence-field/moveEffectTable.ts +61 -31
  1660. package/src/feature-libraries/sequence-field/prune.ts +4 -8
  1661. package/src/feature-libraries/sequence-field/rebase.ts +128 -141
  1662. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +9 -10
  1663. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +3 -2
  1664. package/src/feature-libraries/sequence-field/sequenceFieldChangeRebaser.ts +3 -2
  1665. package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +31 -38
  1666. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +38 -59
  1667. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +15 -15
  1668. package/src/feature-libraries/sequence-field/types.ts +7 -9
  1669. package/src/feature-libraries/sequence-field/utils.ts +95 -76
  1670. package/src/feature-libraries/storedToViewSchema.ts +13 -12
  1671. package/src/feature-libraries/treeCursorUtils.ts +9 -8
  1672. package/src/feature-libraries/treeTextCursor.ts +12 -10
  1673. package/src/feature-libraries/typed-schema/flexList.ts +1 -3
  1674. package/src/feature-libraries/typed-schema/index.ts +0 -2
  1675. package/src/feature-libraries/typed-schema/schemaCollection.ts +11 -10
  1676. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -6
  1677. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +32 -18
  1678. package/src/feature-libraries/typed-schema/view.ts +6 -5
  1679. package/src/feature-libraries/valueUtilities.ts +11 -9
  1680. package/src/index.ts +34 -26
  1681. package/src/packageVersion.ts +1 -1
  1682. package/src/shared-tree/index.ts +9 -1
  1683. package/src/shared-tree/schematizeTree.ts +12 -10
  1684. package/src/shared-tree/schematizingTreeView.ts +47 -28
  1685. package/src/shared-tree/sharedTree.ts +131 -44
  1686. package/src/shared-tree/sharedTreeChangeCodecs.ts +79 -62
  1687. package/src/shared-tree/sharedTreeChangeFamily.ts +13 -7
  1688. package/src/shared-tree/sharedTreeChangeFormat.ts +4 -3
  1689. package/src/shared-tree/sharedTreeEditBuilder.ts +5 -1
  1690. package/src/shared-tree/treeApi.ts +141 -10
  1691. package/src/shared-tree/treeCheckout.ts +203 -60
  1692. package/src/shared-tree/treeView.ts +5 -4
  1693. package/src/shared-tree-core/branch.ts +20 -204
  1694. package/src/shared-tree-core/editManager.ts +20 -78
  1695. package/src/shared-tree-core/editManagerCodecs.ts +111 -63
  1696. package/src/shared-tree-core/editManagerFormat.ts +7 -8
  1697. package/src/shared-tree-core/editManagerSummarizer.ts +14 -36
  1698. package/src/shared-tree-core/index.ts +2 -0
  1699. package/src/shared-tree-core/messageCodecs.ts +62 -5
  1700. package/src/shared-tree-core/messageFormat.ts +12 -2
  1701. package/src/shared-tree-core/messageTypes.ts +1 -0
  1702. package/src/shared-tree-core/sequenceIdUtils.ts +1 -0
  1703. package/src/shared-tree-core/sharedTreeCore.ts +40 -22
  1704. package/src/simple-tree/ProxyBinding.md +102 -0
  1705. package/src/simple-tree/README.md +0 -6
  1706. package/src/simple-tree/arrayNode.ts +769 -0
  1707. package/src/simple-tree/index.ts +16 -9
  1708. package/src/simple-tree/leafNodeSchema.ts +72 -0
  1709. package/src/simple-tree/mapNode.ts +343 -0
  1710. package/src/simple-tree/objectNode.ts +411 -0
  1711. package/src/simple-tree/proxies.ts +197 -932
  1712. package/src/simple-tree/proxyBinding.ts +182 -0
  1713. package/src/simple-tree/rawNode.ts +19 -135
  1714. package/src/simple-tree/schemaCaching.ts +90 -0
  1715. package/src/simple-tree/schemaCreationUtilities.ts +6 -9
  1716. package/src/simple-tree/schemaFactory.ts +247 -261
  1717. package/src/simple-tree/schemaFactoryRecursive.ts +32 -185
  1718. package/src/simple-tree/schemaTypes.ts +149 -81
  1719. package/src/simple-tree/testRecursiveDomain.ts +3 -3
  1720. package/src/simple-tree/toFlexSchema.ts +39 -47
  1721. package/src/simple-tree/toMapTree.ts +236 -196
  1722. package/src/simple-tree/tree.ts +24 -3
  1723. package/src/simple-tree/treeApi.ts +209 -24
  1724. package/src/simple-tree/types.ts +1 -173
  1725. package/src/simple-tree/typesUnsafe.ts +42 -21
  1726. package/src/treeFactory.ts +51 -26
  1727. package/src/util/brand.ts +36 -168
  1728. package/src/util/idAllocator.ts +2 -1
  1729. package/src/util/index.ts +4 -18
  1730. package/src/util/nestedSet.ts +1 -1
  1731. package/src/util/opaque.ts +68 -0
  1732. package/src/util/referenceCounting.ts +3 -3
  1733. package/src/util/typeCheckTests.ts +7 -7
  1734. package/src/util/typeUtils.ts +14 -0
  1735. package/src/util/typeboxBrand.ts +31 -0
  1736. package/src/util/utils.ts +3 -17
  1737. package/tsconfig.json +1 -1
  1738. package/api-extractor-cjs.json +0 -18
  1739. package/api-extractor-esm.json +0 -14
  1740. package/dist/feature-libraries/multiplicity.d.ts.map +0 -1
  1741. package/dist/feature-libraries/multiplicity.js.map +0 -1
  1742. package/dist/feature-libraries/optional-field/optionalFieldChangeFormat.d.ts.map +0 -1
  1743. package/dist/feature-libraries/optional-field/optionalFieldChangeFormat.js.map +0 -1
  1744. package/dist/simple-tree/flexNode.d.ts +0 -35
  1745. package/dist/simple-tree/flexNode.d.ts.map +0 -1
  1746. package/dist/simple-tree/flexNode.js +0 -62
  1747. package/dist/simple-tree/flexNode.js.map +0 -1
  1748. package/dist/simple-tree/treeArrayNode.d.ts +0 -46
  1749. package/dist/simple-tree/treeArrayNode.d.ts.map +0 -1
  1750. package/dist/simple-tree/treeArrayNode.js +0 -50
  1751. package/dist/simple-tree/treeArrayNode.js.map +0 -1
  1752. package/dist/tree-alpha.d.ts +0 -2159
  1753. package/dist/tree-beta.d.ts +0 -2159
  1754. package/dist/tree-public.d.ts +0 -1942
  1755. package/dist/tree-untrimmed.d.ts +0 -6880
  1756. package/lib/feature-libraries/multiplicity.d.ts.map +0 -1
  1757. package/lib/feature-libraries/optional-field/optionalFieldChangeFormat.d.ts.map +0 -1
  1758. package/lib/feature-libraries/optional-field/optionalFieldChangeFormat.js.map +0 -1
  1759. package/lib/simple-tree/flexNode.d.ts +0 -35
  1760. package/lib/simple-tree/flexNode.d.ts.map +0 -1
  1761. package/lib/simple-tree/flexNode.js +0 -55
  1762. package/lib/simple-tree/flexNode.js.map +0 -1
  1763. package/lib/simple-tree/treeArrayNode.d.ts +0 -46
  1764. package/lib/simple-tree/treeArrayNode.d.ts.map +0 -1
  1765. package/lib/simple-tree/treeArrayNode.js +0 -46
  1766. package/lib/simple-tree/treeArrayNode.js.map +0 -1
  1767. package/lib/test/codec/ajvValidator.cjs +0 -70
  1768. package/lib/test/codec/ajvValidator.cjs.map +0 -1
  1769. package/lib/test/codec/ajvValidator.d.cts +0 -13
  1770. package/lib/test/codec/ajvValidator.d.cts.map +0 -1
  1771. package/lib/test/codec/codec.spec.d.ts.map +0 -1
  1772. package/lib/test/codec/codec.spec.js +0 -36
  1773. package/lib/test/codec/codec.spec.js.map +0 -1
  1774. package/lib/test/codec/index.d.ts +0 -7
  1775. package/lib/test/codec/index.d.ts.map +0 -1
  1776. package/lib/test/codec/index.js +0 -7
  1777. package/lib/test/codec/index.js.map +0 -1
  1778. package/lib/test/codec/utils.d.ts +0 -58
  1779. package/lib/test/codec/utils.d.ts.map +0 -1
  1780. package/lib/test/codec/utils.js +0 -61
  1781. package/lib/test/codec/utils.js.map +0 -1
  1782. package/lib/test/cursorTestSuite.d.ts +0 -106
  1783. package/lib/test/cursorTestSuite.d.ts.map +0 -1
  1784. package/lib/test/cursorTestSuite.js +0 -680
  1785. package/lib/test/cursorTestSuite.js.map +0 -1
  1786. package/lib/test/domains/json/benchmarks.d.ts +0 -17
  1787. package/lib/test/domains/json/benchmarks.d.ts.map +0 -1
  1788. package/lib/test/domains/json/benchmarks.js +0 -61
  1789. package/lib/test/domains/json/benchmarks.js.map +0 -1
  1790. package/lib/test/domains/json/canada.d.ts +0 -33
  1791. package/lib/test/domains/json/canada.d.ts.map +0 -1
  1792. package/lib/test/domains/json/canada.js +0 -81
  1793. package/lib/test/domains/json/canada.js.map +0 -1
  1794. package/lib/test/domains/json/citm.d.ts +0 -81
  1795. package/lib/test/domains/json/citm.d.ts.map +0 -1
  1796. package/lib/test/domains/json/citm.js +0 -515
  1797. package/lib/test/domains/json/citm.js.map +0 -1
  1798. package/lib/test/domains/json/jsDirectObject.bench.d.ts +0 -13
  1799. package/lib/test/domains/json/jsDirectObject.bench.d.ts.map +0 -1
  1800. package/lib/test/domains/json/jsDirectObject.bench.js +0 -74
  1801. package/lib/test/domains/json/jsDirectObject.bench.js.map +0 -1
  1802. package/lib/test/domains/json/jsObjectUtil.d.ts +0 -12
  1803. package/lib/test/domains/json/jsObjectUtil.d.ts.map +0 -1
  1804. package/lib/test/domains/json/jsObjectUtil.js +0 -36
  1805. package/lib/test/domains/json/jsObjectUtil.js.map +0 -1
  1806. package/lib/test/domains/json/jsonCursor.bench.d.ts +0 -11
  1807. package/lib/test/domains/json/jsonCursor.bench.d.ts.map +0 -1
  1808. package/lib/test/domains/json/jsonCursor.bench.js +0 -220
  1809. package/lib/test/domains/json/jsonCursor.bench.js.map +0 -1
  1810. package/lib/test/domains/json/jsonCursor.spec.d.ts +0 -6
  1811. package/lib/test/domains/json/jsonCursor.spec.d.ts.map +0 -1
  1812. package/lib/test/domains/json/jsonCursor.spec.js +0 -75
  1813. package/lib/test/domains/json/jsonCursor.spec.js.map +0 -1
  1814. package/lib/test/domains/json/jsonGeneratorUtils.d.ts +0 -9
  1815. package/lib/test/domains/json/jsonGeneratorUtils.d.ts.map +0 -1
  1816. package/lib/test/domains/json/jsonGeneratorUtils.js +0 -36
  1817. package/lib/test/domains/json/jsonGeneratorUtils.js.map +0 -1
  1818. package/lib/test/domains/json/twitter.d.ts +0 -204
  1819. package/lib/test/domains/json/twitter.d.ts.map +0 -1
  1820. package/lib/test/domains/json/twitter.js +0 -7413
  1821. package/lib/test/domains/json/twitter.js.map +0 -1
  1822. package/lib/test/domains/schemaBuilder.spec.d.ts +0 -6
  1823. package/lib/test/domains/schemaBuilder.spec.d.ts.map +0 -1
  1824. package/lib/test/domains/schemaBuilder.spec.js +0 -148
  1825. package/lib/test/domains/schemaBuilder.spec.js.map +0 -1
  1826. package/lib/test/editMinter.d.ts +0 -8
  1827. package/lib/test/editMinter.d.ts.map +0 -1
  1828. package/lib/test/editMinter.js +0 -21
  1829. package/lib/test/editMinter.js.map +0 -1
  1830. package/lib/test/events/eventEmitter.spec.d.ts +0 -6
  1831. package/lib/test/events/eventEmitter.spec.d.ts.map +0 -1
  1832. package/lib/test/events/eventEmitter.spec.js +0 -159
  1833. package/lib/test/events/eventEmitter.spec.js.map +0 -1
  1834. package/lib/test/exhaustiveRebaserUtils.d.ts +0 -78
  1835. package/lib/test/exhaustiveRebaserUtils.d.ts.map +0 -1
  1836. package/lib/test/exhaustiveRebaserUtils.js +0 -53
  1837. package/lib/test/exhaustiveRebaserUtils.js.map +0 -1
  1838. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.d.ts +0 -6
  1839. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.d.ts.map +0 -1
  1840. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.js +0 -161
  1841. package/lib/test/feature-libraries/chunked-forest/basicChunk.spec.js.map +0 -1
  1842. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.d.ts +0 -2
  1843. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.d.ts.map +0 -1
  1844. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.js +0 -102
  1845. package/lib/test/feature-libraries/chunked-forest/chunkEncodingEndToEnd.js.map +0 -1
  1846. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.d.ts +0 -6
  1847. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.d.ts.map +0 -1
  1848. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.js +0 -259
  1849. package/lib/test/feature-libraries/chunked-forest/chunkTree.spec.js.map +0 -1
  1850. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.d.ts +0 -6
  1851. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.d.ts.map +0 -1
  1852. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.js +0 -47
  1853. package/lib/test/feature-libraries/chunked-forest/chunkedForest.spec.js.map +0 -1
  1854. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.d.ts +0 -9
  1855. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.d.ts.map +0 -1
  1856. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.js +0 -124
  1857. package/lib/test/feature-libraries/chunked-forest/codec/checkEncode.js.map +0 -1
  1858. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.d.ts +0 -6
  1859. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.d.ts.map +0 -1
  1860. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.js +0 -187
  1861. package/lib/test/feature-libraries/chunked-forest/codec/chunkCodecUtilities.spec.js.map +0 -1
  1862. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.d.ts +0 -6
  1863. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.d.ts.map +0 -1
  1864. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.js +0 -308
  1865. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecoding.spec.js.map +0 -1
  1866. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.d.ts +0 -6
  1867. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.d.ts.map +0 -1
  1868. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.js +0 -123
  1869. package/lib/test/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.spec.js.map +0 -1
  1870. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.d.ts +0 -7
  1871. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.d.ts.map +0 -1
  1872. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.js +0 -135
  1873. package/lib/test/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.spec.js.map +0 -1
  1874. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.d.ts +0 -11
  1875. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.d.ts.map +0 -1
  1876. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.js +0 -211
  1877. package/lib/test/feature-libraries/chunked-forest/codec/compressedEncode.spec.js.map +0 -1
  1878. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.d.ts +0 -6
  1879. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.d.ts.map +0 -1
  1880. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.js +0 -15
  1881. package/lib/test/feature-libraries/chunked-forest/codec/format.spec.js.map +0 -1
  1882. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.d.ts +0 -6
  1883. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.d.ts.map +0 -1
  1884. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.js +0 -98
  1885. package/lib/test/feature-libraries/chunked-forest/codec/nodeShape.spec.js.map +0 -1
  1886. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.d.ts +0 -6
  1887. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.d.ts.map +0 -1
  1888. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.js +0 -176
  1889. package/lib/test/feature-libraries/chunked-forest/codec/schemaBasedEncoding.spec.js.map +0 -1
  1890. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.d.ts +0 -6
  1891. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.d.ts.map +0 -1
  1892. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.js +0 -29
  1893. package/lib/test/feature-libraries/chunked-forest/codec/uncompressedEncode.spec.js.map +0 -1
  1894. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.d.ts +0 -12
  1895. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.d.ts.map +0 -1
  1896. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.js +0 -38
  1897. package/lib/test/feature-libraries/chunked-forest/fieldCursorTestUtilities.js.map +0 -1
  1898. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.d.ts +0 -6
  1899. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.d.ts.map +0 -1
  1900. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.js +0 -138
  1901. package/lib/test/feature-libraries/chunked-forest/uniformChunk.spec.js.map +0 -1
  1902. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.d.ts +0 -34
  1903. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.d.ts.map +0 -1
  1904. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.js +0 -114
  1905. package/lib/test/feature-libraries/chunked-forest/uniformChunkTestData.js.map +0 -1
  1906. package/lib/test/feature-libraries/contextuallyTyped.spec.d.ts +0 -6
  1907. package/lib/test/feature-libraries/contextuallyTyped.spec.d.ts.map +0 -1
  1908. package/lib/test/feature-libraries/contextuallyTyped.spec.js +0 -107
  1909. package/lib/test/feature-libraries/contextuallyTyped.spec.js.map +0 -1
  1910. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.d.ts +0 -6
  1911. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.d.ts.map +0 -1
  1912. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.js +0 -850
  1913. package/lib/test/feature-libraries/default-field-kinds/defaultChangeFamily.spec.js.map +0 -1
  1914. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.d.ts +0 -6
  1915. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.d.ts.map +0 -1
  1916. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.js +0 -110
  1917. package/lib/test/feature-libraries/default-field-kinds/defaultFieldKinds.spec.js.map +0 -1
  1918. package/lib/test/feature-libraries/deltaUtils.spec.d.ts +0 -6
  1919. package/lib/test/feature-libraries/deltaUtils.spec.d.ts.map +0 -1
  1920. package/lib/test/feature-libraries/deltaUtils.spec.js +0 -87
  1921. package/lib/test/feature-libraries/deltaUtils.spec.js.map +0 -1
  1922. package/lib/test/feature-libraries/fieldKindTestUtils.d.ts +0 -20
  1923. package/lib/test/feature-libraries/fieldKindTestUtils.d.ts.map +0 -1
  1924. package/lib/test/feature-libraries/fieldKindTestUtils.js +0 -42
  1925. package/lib/test/feature-libraries/fieldKindTestUtils.js.map +0 -1
  1926. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.d.ts +0 -6
  1927. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.d.ts.map +0 -1
  1928. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.js +0 -91
  1929. package/lib/test/feature-libraries/flex-tree/editableTree.identifier.spec.js.map +0 -1
  1930. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.d.ts +0 -6
  1931. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.d.ts.map +0 -1
  1932. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.js +0 -225
  1933. package/lib/test/feature-libraries/flex-tree/editableTreeTypes.spec.js.map +0 -1
  1934. package/lib/test/feature-libraries/flex-tree/events.spec.d.ts +0 -2
  1935. package/lib/test/feature-libraries/flex-tree/events.spec.d.ts.map +0 -1
  1936. package/lib/test/feature-libraries/flex-tree/events.spec.js +0 -605
  1937. package/lib/test/feature-libraries/flex-tree/events.spec.js.map +0 -1
  1938. package/lib/test/feature-libraries/flex-tree/lazyField.spec.d.ts +0 -6
  1939. package/lib/test/feature-libraries/flex-tree/lazyField.spec.d.ts.map +0 -1
  1940. package/lib/test/feature-libraries/flex-tree/lazyField.spec.js +0 -326
  1941. package/lib/test/feature-libraries/flex-tree/lazyField.spec.js.map +0 -1
  1942. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.d.ts +0 -6
  1943. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.d.ts.map +0 -1
  1944. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.js +0 -381
  1945. package/lib/test/feature-libraries/flex-tree/lazyNode.spec.js.map +0 -1
  1946. package/lib/test/feature-libraries/flex-tree/navigation.spec.d.ts +0 -6
  1947. package/lib/test/feature-libraries/flex-tree/navigation.spec.d.ts.map +0 -1
  1948. package/lib/test/feature-libraries/flex-tree/navigation.spec.js +0 -50
  1949. package/lib/test/feature-libraries/flex-tree/navigation.spec.js.map +0 -1
  1950. package/lib/test/feature-libraries/flex-tree/unboxed.spec.d.ts +0 -6
  1951. package/lib/test/feature-libraries/flex-tree/unboxed.spec.d.ts.map +0 -1
  1952. package/lib/test/feature-libraries/flex-tree/unboxed.spec.js +0 -197
  1953. package/lib/test/feature-libraries/flex-tree/unboxed.spec.js.map +0 -1
  1954. package/lib/test/feature-libraries/flex-tree/utilities.spec.d.ts +0 -6
  1955. package/lib/test/feature-libraries/flex-tree/utilities.spec.d.ts.map +0 -1
  1956. package/lib/test/feature-libraries/flex-tree/utilities.spec.js +0 -109
  1957. package/lib/test/feature-libraries/flex-tree/utilities.spec.js.map +0 -1
  1958. package/lib/test/feature-libraries/flex-tree/utils.d.ts +0 -32
  1959. package/lib/test/feature-libraries/flex-tree/utils.d.ts.map +0 -1
  1960. package/lib/test/feature-libraries/flex-tree/utils.js +0 -50
  1961. package/lib/test/feature-libraries/flex-tree/utils.js.map +0 -1
  1962. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.d.ts +0 -6
  1963. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.d.ts.map +0 -1
  1964. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.js +0 -115
  1965. package/lib/test/feature-libraries/forest-summary/forestSummarizerCodec.spec.js.map +0 -1
  1966. package/lib/test/feature-libraries/mapTreeCursor.spec.d.ts +0 -6
  1967. package/lib/test/feature-libraries/mapTreeCursor.spec.d.ts.map +0 -1
  1968. package/lib/test/feature-libraries/mapTreeCursor.spec.js +0 -8
  1969. package/lib/test/feature-libraries/mapTreeCursor.spec.js.map +0 -1
  1970. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.d.ts +0 -6
  1971. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.d.ts.map +0 -1
  1972. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.js +0 -80
  1973. package/lib/test/feature-libraries/memoizedIdRangeAllocator.spec.js.map +0 -1
  1974. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.d.ts +0 -6
  1975. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.d.ts.map +0 -1
  1976. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.js +0 -96
  1977. package/lib/test/feature-libraries/mitigatedChangeFamily.spec.js.map +0 -1
  1978. package/lib/test/feature-libraries/modular-schema/basicRebasers.d.ts +0 -44
  1979. package/lib/test/feature-libraries/modular-schema/basicRebasers.d.ts.map +0 -1
  1980. package/lib/test/feature-libraries/modular-schema/basicRebasers.js +0 -77
  1981. package/lib/test/feature-libraries/modular-schema/basicRebasers.js.map +0 -1
  1982. package/lib/test/feature-libraries/modular-schema/comparison.spec.d.ts +0 -6
  1983. package/lib/test/feature-libraries/modular-schema/comparison.spec.d.ts.map +0 -1
  1984. package/lib/test/feature-libraries/modular-schema/comparison.spec.js +0 -264
  1985. package/lib/test/feature-libraries/modular-schema/comparison.spec.js.map +0 -1
  1986. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.d.ts +0 -6
  1987. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.d.ts.map +0 -1
  1988. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.js +0 -345
  1989. package/lib/test/feature-libraries/modular-schema/genericFieldKind.spec.js.map +0 -1
  1990. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.d.ts +0 -6
  1991. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.d.ts.map +0 -1
  1992. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.js +0 -49
  1993. package/lib/test/feature-libraries/modular-schema/genericFieldSnapshots.test.js.map +0 -1
  1994. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.d.ts +0 -6
  1995. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.d.ts.map +0 -1
  1996. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.js +0 -126
  1997. package/lib/test/feature-libraries/modular-schema/isNeverTree.spec.js.map +0 -1
  1998. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.d.ts +0 -6
  1999. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.d.ts.map +0 -1
  2000. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.js +0 -1070
  2001. package/lib/test/feature-libraries/modular-schema/modularChangeFamily.spec.js.map +0 -1
  2002. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.d.ts +0 -6
  2003. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.d.ts.map +0 -1
  2004. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.js +0 -182
  2005. package/lib/test/feature-libraries/modular-schema/rangeMap.spec.js.map +0 -1
  2006. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.d.ts +0 -6
  2007. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.d.ts.map +0 -1
  2008. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.js +0 -390
  2009. package/lib/test/feature-libraries/modular-schema/schemaEvolutionExamples.spec.js.map +0 -1
  2010. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.d.ts +0 -6
  2011. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.d.ts.map +0 -1
  2012. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.js +0 -556
  2013. package/lib/test/feature-libraries/modularChangeFamilyIntegration.spec.js.map +0 -1
  2014. package/lib/test/feature-libraries/node-key/nodeKey.spec.d.ts +0 -6
  2015. package/lib/test/feature-libraries/node-key/nodeKey.spec.d.ts.map +0 -1
  2016. package/lib/test/feature-libraries/node-key/nodeKey.spec.js +0 -74
  2017. package/lib/test/feature-libraries/node-key/nodeKey.spec.js.map +0 -1
  2018. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.d.ts +0 -6
  2019. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.d.ts.map +0 -1
  2020. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.js +0 -258
  2021. package/lib/test/feature-libraries/node-key/nodeKeyIndex.bench.js.map +0 -1
  2022. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.d.ts +0 -6
  2023. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.d.ts.map +0 -1
  2024. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.js +0 -262
  2025. package/lib/test/feature-libraries/node-key/nodeKeyIndex.spec.js.map +0 -1
  2026. package/lib/test/feature-libraries/objectForest.spec.d.ts +0 -6
  2027. package/lib/test/feature-libraries/objectForest.spec.d.ts.map +0 -1
  2028. package/lib/test/feature-libraries/objectForest.spec.js +0 -62
  2029. package/lib/test/feature-libraries/objectForest.spec.js.map +0 -1
  2030. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.d.ts +0 -6
  2031. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.d.ts.map +0 -1
  2032. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.js +0 -352
  2033. package/lib/test/feature-libraries/optional-field/optionalChangeRebaser.test.js.map +0 -1
  2034. package/lib/test/feature-libraries/optional-field/optionalField.spec.d.ts +0 -6
  2035. package/lib/test/feature-libraries/optional-field/optionalField.spec.d.ts.map +0 -1
  2036. package/lib/test/feature-libraries/optional-field/optionalField.spec.js +0 -396
  2037. package/lib/test/feature-libraries/optional-field/optionalField.spec.js.map +0 -1
  2038. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.d.ts +0 -6
  2039. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.d.ts.map +0 -1
  2040. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.js +0 -50
  2041. package/lib/test/feature-libraries/optional-field/optionalFieldChangeCodecs.test.js.map +0 -1
  2042. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.d.ts +0 -6
  2043. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.d.ts.map +0 -1
  2044. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.js +0 -59
  2045. package/lib/test/feature-libraries/optional-field/optionalFieldSnapshots.test.js.map +0 -1
  2046. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.d.ts +0 -62
  2047. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.d.ts.map +0 -1
  2048. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.js +0 -232
  2049. package/lib/test/feature-libraries/optional-field/optionalFieldUtils.js.map +0 -1
  2050. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.d.ts +0 -6
  2051. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.d.ts.map +0 -1
  2052. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.js +0 -133
  2053. package/lib/test/feature-libraries/schema-aware/schemaAware.spec.js.map +0 -1
  2054. package/lib/test/feature-libraries/schema-aware/schemaComplex.d.ts +0 -16
  2055. package/lib/test/feature-libraries/schema-aware/schemaComplex.d.ts.map +0 -1
  2056. package/lib/test/feature-libraries/schema-aware/schemaComplex.js +0 -40
  2057. package/lib/test/feature-libraries/schema-aware/schemaComplex.js.map +0 -1
  2058. package/lib/test/feature-libraries/schema-aware/schemaSimple.d.ts +0 -13
  2059. package/lib/test/feature-libraries/schema-aware/schemaSimple.d.ts.map +0 -1
  2060. package/lib/test/feature-libraries/schema-aware/schemaSimple.js +0 -28
  2061. package/lib/test/feature-libraries/schema-aware/schemaSimple.js.map +0 -1
  2062. package/lib/test/feature-libraries/schema-index/codec.spec.d.ts +0 -6
  2063. package/lib/test/feature-libraries/schema-index/codec.spec.d.ts.map +0 -1
  2064. package/lib/test/feature-libraries/schema-index/codec.spec.js +0 -81
  2065. package/lib/test/feature-libraries/schema-index/codec.spec.js.map +0 -1
  2066. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.d.ts +0 -6
  2067. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.d.ts.map +0 -1
  2068. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.js +0 -28
  2069. package/lib/test/feature-libraries/schema-index/schemaSummarizer.spec.js.map +0 -1
  2070. package/lib/test/feature-libraries/schemaBuilder.spec.d.ts +0 -6
  2071. package/lib/test/feature-libraries/schemaBuilder.spec.d.ts.map +0 -1
  2072. package/lib/test/feature-libraries/schemaBuilder.spec.js +0 -88
  2073. package/lib/test/feature-libraries/schemaBuilder.spec.js.map +0 -1
  2074. package/lib/test/feature-libraries/sequence-field/compose.test.d.ts +0 -6
  2075. package/lib/test/feature-libraries/sequence-field/compose.test.d.ts.map +0 -1
  2076. package/lib/test/feature-libraries/sequence-field/compose.test.js +0 -1431
  2077. package/lib/test/feature-libraries/sequence-field/compose.test.js.map +0 -1
  2078. package/lib/test/feature-libraries/sequence-field/invert.test.d.ts +0 -6
  2079. package/lib/test/feature-libraries/sequence-field/invert.test.d.ts.map +0 -1
  2080. package/lib/test/feature-libraries/sequence-field/invert.test.js +0 -418
  2081. package/lib/test/feature-libraries/sequence-field/invert.test.js.map +0 -1
  2082. package/lib/test/feature-libraries/sequence-field/markListFactory.test.d.ts +0 -6
  2083. package/lib/test/feature-libraries/sequence-field/markListFactory.test.d.ts.map +0 -1
  2084. package/lib/test/feature-libraries/sequence-field/markListFactory.test.js +0 -239
  2085. package/lib/test/feature-libraries/sequence-field/markListFactory.test.js.map +0 -1
  2086. package/lib/test/feature-libraries/sequence-field/populatedMarks.d.ts +0 -18
  2087. package/lib/test/feature-libraries/sequence-field/populatedMarks.d.ts.map +0 -1
  2088. package/lib/test/feature-libraries/sequence-field/populatedMarks.js +0 -95
  2089. package/lib/test/feature-libraries/sequence-field/populatedMarks.js.map +0 -1
  2090. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.d.ts +0 -12
  2091. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.d.ts.map +0 -1
  2092. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.js +0 -35
  2093. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.js.map +0 -1
  2094. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.d.ts +0 -6
  2095. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.d.ts.map +0 -1
  2096. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.js +0 -42
  2097. package/lib/test/feature-libraries/sequence-field/randomChangeGenerator.test.js.map +0 -1
  2098. package/lib/test/feature-libraries/sequence-field/rebase.test.d.ts +0 -6
  2099. package/lib/test/feature-libraries/sequence-field/rebase.test.d.ts.map +0 -1
  2100. package/lib/test/feature-libraries/sequence-field/rebase.test.js +0 -1038
  2101. package/lib/test/feature-libraries/sequence-field/rebase.test.js.map +0 -1
  2102. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.d.ts +0 -6
  2103. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.d.ts.map +0 -1
  2104. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.js +0 -211
  2105. package/lib/test/feature-libraries/sequence-field/relevantRemovedRoots.test.js.map +0 -1
  2106. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.d.ts +0 -11
  2107. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.d.ts.map +0 -1
  2108. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.js +0 -784
  2109. package/lib/test/feature-libraries/sequence-field/sequenceChangeRebaser.test.js.map +0 -1
  2110. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.d.ts +0 -6
  2111. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.d.ts.map +0 -1
  2112. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.js +0 -36
  2113. package/lib/test/feature-libraries/sequence-field/sequenceField.spec.js.map +0 -1
  2114. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.d.ts +0 -6
  2115. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.d.ts.map +0 -1
  2116. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.js +0 -34
  2117. package/lib/test/feature-libraries/sequence-field/sequenceFieldCodecs.test.js.map +0 -1
  2118. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.d.ts +0 -6
  2119. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.d.ts.map +0 -1
  2120. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.js +0 -38
  2121. package/lib/test/feature-libraries/sequence-field/sequenceFieldEditor.test.js.map +0 -1
  2122. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.d.ts +0 -6
  2123. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.d.ts.map +0 -1
  2124. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.js +0 -34
  2125. package/lib/test/feature-libraries/sequence-field/sequenceFieldSnapshots.test.js.map +0 -1
  2126. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.d.ts +0 -6
  2127. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.d.ts.map +0 -1
  2128. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.js +0 -417
  2129. package/lib/test/feature-libraries/sequence-field/sequenceFieldToDelta.test.js.map +0 -1
  2130. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.d.ts +0 -6
  2131. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.d.ts.map +0 -1
  2132. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.js +0 -40
  2133. package/lib/test/feature-libraries/sequence-field/sequenceFieldUtils.test.js.map +0 -1
  2134. package/lib/test/feature-libraries/sequence-field/testEdits.d.ts +0 -124
  2135. package/lib/test/feature-libraries/sequence-field/testEdits.d.ts.map +0 -1
  2136. package/lib/test/feature-libraries/sequence-field/testEdits.js +0 -270
  2137. package/lib/test/feature-libraries/sequence-field/testEdits.js.map +0 -1
  2138. package/lib/test/feature-libraries/sequence-field/utils.d.ts +0 -106
  2139. package/lib/test/feature-libraries/sequence-field/utils.d.ts.map +0 -1
  2140. package/lib/test/feature-libraries/sequence-field/utils.js +0 -535
  2141. package/lib/test/feature-libraries/sequence-field/utils.js.map +0 -1
  2142. package/lib/test/feature-libraries/storedToViewSchema.spec.d.ts +0 -6
  2143. package/lib/test/feature-libraries/storedToViewSchema.spec.d.ts.map +0 -1
  2144. package/lib/test/feature-libraries/storedToViewSchema.spec.js +0 -117
  2145. package/lib/test/feature-libraries/storedToViewSchema.spec.js.map +0 -1
  2146. package/lib/test/feature-libraries/treeCursorUtils.spec.d.ts +0 -6
  2147. package/lib/test/feature-libraries/treeCursorUtils.spec.d.ts.map +0 -1
  2148. package/lib/test/feature-libraries/treeCursorUtils.spec.js +0 -237
  2149. package/lib/test/feature-libraries/treeCursorUtils.spec.js.map +0 -1
  2150. package/lib/test/feature-libraries/treeTextCursor.spec.d.ts +0 -6
  2151. package/lib/test/feature-libraries/treeTextCursor.spec.d.ts.map +0 -1
  2152. package/lib/test/feature-libraries/treeTextCursor.spec.js +0 -8
  2153. package/lib/test/feature-libraries/treeTextCursor.spec.js.map +0 -1
  2154. package/lib/test/feature-libraries/typedSchema/example.spec.d.ts +0 -6
  2155. package/lib/test/feature-libraries/typedSchema/example.spec.d.ts.map +0 -1
  2156. package/lib/test/feature-libraries/typedSchema/example.spec.js +0 -20
  2157. package/lib/test/feature-libraries/typedSchema/example.spec.js.map +0 -1
  2158. package/lib/test/feature-libraries/typedSchema/flexList.spec.d.ts +0 -6
  2159. package/lib/test/feature-libraries/typedSchema/flexList.spec.d.ts.map +0 -1
  2160. package/lib/test/feature-libraries/typedSchema/flexList.spec.js +0 -52
  2161. package/lib/test/feature-libraries/typedSchema/flexList.spec.js.map +0 -1
  2162. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.d.ts +0 -6
  2163. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.d.ts.map +0 -1
  2164. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.js +0 -10
  2165. package/lib/test/feature-libraries/typedSchema/typeUtils.spec.js.map +0 -1
  2166. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.d.ts +0 -6
  2167. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.d.ts.map +0 -1
  2168. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.js +0 -83
  2169. package/lib/test/feature-libraries/typedSchema/typedTreeSchema.spec.js.map +0 -1
  2170. package/lib/test/feature-libraries/valueUtilities.spec.d.ts +0 -6
  2171. package/lib/test/feature-libraries/valueUtilities.spec.d.ts.map +0 -1
  2172. package/lib/test/feature-libraries/valueUtilities.spec.js +0 -69
  2173. package/lib/test/feature-libraries/valueUtilities.spec.js.map +0 -1
  2174. package/lib/test/forestTestSuite.d.ts +0 -26
  2175. package/lib/test/forestTestSuite.d.ts.map +0 -1
  2176. package/lib/test/forestTestSuite.js +0 -793
  2177. package/lib/test/forestTestSuite.js.map +0 -1
  2178. package/lib/test/objMerge.d.ts +0 -24
  2179. package/lib/test/objMerge.d.ts.map +0 -1
  2180. package/lib/test/objMerge.js +0 -181
  2181. package/lib/test/objMerge.js.map +0 -1
  2182. package/lib/test/rebase/findAncestor.spec.d.ts +0 -6
  2183. package/lib/test/rebase/findAncestor.spec.d.ts.map +0 -1
  2184. package/lib/test/rebase/findAncestor.spec.js +0 -139
  2185. package/lib/test/rebase/findAncestor.spec.js.map +0 -1
  2186. package/lib/test/rebase/fuzz.d.ts +0 -16
  2187. package/lib/test/rebase/fuzz.d.ts.map +0 -1
  2188. package/lib/test/rebase/fuzz.js +0 -57
  2189. package/lib/test/rebase/fuzz.js.map +0 -1
  2190. package/lib/test/rebase/generateFuzzyCombinedChange.spec.d.ts +0 -6
  2191. package/lib/test/rebase/generateFuzzyCombinedChange.spec.d.ts.map +0 -1
  2192. package/lib/test/rebase/generateFuzzyCombinedChange.spec.js +0 -42
  2193. package/lib/test/rebase/generateFuzzyCombinedChange.spec.js.map +0 -1
  2194. package/lib/test/rebase/rebaseBranch.spec.d.ts +0 -6
  2195. package/lib/test/rebase/rebaseBranch.spec.d.ts.map +0 -1
  2196. package/lib/test/rebase/rebaseBranch.spec.js +0 -208
  2197. package/lib/test/rebase/rebaseBranch.spec.js.map +0 -1
  2198. package/lib/test/rebase/rebaser.spec.d.ts +0 -14
  2199. package/lib/test/rebase/rebaser.spec.d.ts.map +0 -1
  2200. package/lib/test/rebase/rebaser.spec.js +0 -166
  2201. package/lib/test/rebase/rebaser.spec.js.map +0 -1
  2202. package/lib/test/rebase/revisionTagCodec.spec.d.ts +0 -6
  2203. package/lib/test/rebase/revisionTagCodec.spec.d.ts.map +0 -1
  2204. package/lib/test/rebase/revisionTagCodec.spec.js +0 -56
  2205. package/lib/test/rebase/revisionTagCodec.spec.js.map +0 -1
  2206. package/lib/test/rebase/verifyChangeRebaser.spec.d.ts +0 -6
  2207. package/lib/test/rebase/verifyChangeRebaser.spec.d.ts.map +0 -1
  2208. package/lib/test/rebase/verifyChangeRebaser.spec.js +0 -52
  2209. package/lib/test/rebase/verifyChangeRebaser.spec.js.map +0 -1
  2210. package/lib/test/rebaserAxiomaticTests.d.ts +0 -15
  2211. package/lib/test/rebaserAxiomaticTests.d.ts.map +0 -1
  2212. package/lib/test/rebaserAxiomaticTests.js +0 -202
  2213. package/lib/test/rebaserAxiomaticTests.js.map +0 -1
  2214. package/lib/test/scalableTestTrees.d.ts +0 -89
  2215. package/lib/test/scalableTestTrees.d.ts.map +0 -1
  2216. package/lib/test/scalableTestTrees.js +0 -188
  2217. package/lib/test/scalableTestTrees.js.map +0 -1
  2218. package/lib/test/shared-tree/editing.spec.d.ts +0 -2
  2219. package/lib/test/shared-tree/editing.spec.d.ts.map +0 -1
  2220. package/lib/test/shared-tree/editing.spec.js +0 -2091
  2221. package/lib/test/shared-tree/editing.spec.js.map +0 -1
  2222. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.d.ts +0 -2
  2223. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.d.ts.map +0 -1
  2224. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.js +0 -161
  2225. package/lib/test/shared-tree/fuzz/anchorStability.fuzz.spec.js.map +0 -1
  2226. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.d.ts +0 -2
  2227. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.d.ts.map +0 -1
  2228. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.js +0 -105
  2229. package/lib/test/shared-tree/fuzz/composeVsIndividual.fuzz.spec.js.map +0 -1
  2230. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.d.ts +0 -127
  2231. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.d.ts.map +0 -1
  2232. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.js +0 -439
  2233. package/lib/test/shared-tree/fuzz/fuzzEditGenerators.js.map +0 -1
  2234. package/lib/test/shared-tree/fuzz/fuzzEditReducers.d.ts +0 -21
  2235. package/lib/test/shared-tree/fuzz/fuzzEditReducers.d.ts.map +0 -1
  2236. package/lib/test/shared-tree/fuzz/fuzzEditReducers.js +0 -214
  2237. package/lib/test/shared-tree/fuzz/fuzzEditReducers.js.map +0 -1
  2238. package/lib/test/shared-tree/fuzz/fuzzUtils.d.ts +0 -33
  2239. package/lib/test/shared-tree/fuzz/fuzzUtils.d.ts.map +0 -1
  2240. package/lib/test/shared-tree/fuzz/fuzzUtils.js +0 -78
  2241. package/lib/test/shared-tree/fuzz/fuzzUtils.js.map +0 -1
  2242. package/lib/test/shared-tree/fuzz/operationTypes.d.ts +0 -116
  2243. package/lib/test/shared-tree/fuzz/operationTypes.d.ts.map +0 -1
  2244. package/lib/test/shared-tree/fuzz/operationTypes.js +0 -6
  2245. package/lib/test/shared-tree/fuzz/operationTypes.js.map +0 -1
  2246. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.d.ts +0 -2
  2247. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.d.ts.map +0 -1
  2248. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.js +0 -110
  2249. package/lib/test/shared-tree/fuzz/topLevel.fuzz.spec.js.map +0 -1
  2250. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.d.ts +0 -6
  2251. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.d.ts.map +0 -1
  2252. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.js +0 -220
  2253. package/lib/test/shared-tree/fuzz/undoRedo.fuzz.spec.js.map +0 -1
  2254. package/lib/test/shared-tree/opSize.bench.d.ts +0 -2
  2255. package/lib/test/shared-tree/opSize.bench.d.ts.map +0 -1
  2256. package/lib/test/shared-tree/opSize.bench.js +0 -559
  2257. package/lib/test/shared-tree/opSize.bench.js.map +0 -1
  2258. package/lib/test/shared-tree/schematizeTree.spec.d.ts +0 -6
  2259. package/lib/test/shared-tree/schematizeTree.spec.d.ts.map +0 -1
  2260. package/lib/test/shared-tree/schematizeTree.spec.js +0 -331
  2261. package/lib/test/shared-tree/schematizeTree.spec.js.map +0 -1
  2262. package/lib/test/shared-tree/schematizingTreeView.spec.d.ts +0 -6
  2263. package/lib/test/shared-tree/schematizingTreeView.spec.d.ts.map +0 -1
  2264. package/lib/test/shared-tree/schematizingTreeView.spec.js +0 -137
  2265. package/lib/test/shared-tree/schematizingTreeView.spec.js.map +0 -1
  2266. package/lib/test/shared-tree/sharedTree.bench.d.ts +0 -2
  2267. package/lib/test/shared-tree/sharedTree.bench.d.ts.map +0 -1
  2268. package/lib/test/shared-tree/sharedTree.bench.js +0 -349
  2269. package/lib/test/shared-tree/sharedTree.bench.js.map +0 -1
  2270. package/lib/test/shared-tree/sharedTree.spec.d.ts +0 -2
  2271. package/lib/test/shared-tree/sharedTree.spec.d.ts.map +0 -1
  2272. package/lib/test/shared-tree/sharedTree.spec.js +0 -1375
  2273. package/lib/test/shared-tree/sharedTree.spec.js.map +0 -1
  2274. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.d.ts +0 -6
  2275. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.d.ts.map +0 -1
  2276. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.js +0 -52
  2277. package/lib/test/shared-tree/sharedTreeChangeCodec.spec.js.map +0 -1
  2278. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.d.ts +0 -6
  2279. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.d.ts.map +0 -1
  2280. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.js +0 -139
  2281. package/lib/test/shared-tree/sharedTreeChangeFamily.spec.js.map +0 -1
  2282. package/lib/test/shared-tree/summary.bench.d.ts +0 -6
  2283. package/lib/test/shared-tree/summary.bench.d.ts.map +0 -1
  2284. package/lib/test/shared-tree/summary.bench.js +0 -111
  2285. package/lib/test/shared-tree/summary.bench.js.map +0 -1
  2286. package/lib/test/shared-tree/treeApi.spec.d.ts +0 -2
  2287. package/lib/test/shared-tree/treeApi.spec.d.ts.map +0 -1
  2288. package/lib/test/shared-tree/treeApi.spec.js +0 -151
  2289. package/lib/test/shared-tree/treeApi.spec.js.map +0 -1
  2290. package/lib/test/shared-tree/treeCheckout.spec.d.ts +0 -2
  2291. package/lib/test/shared-tree/treeCheckout.spec.d.ts.map +0 -1
  2292. package/lib/test/shared-tree/treeCheckout.spec.js +0 -678
  2293. package/lib/test/shared-tree/treeCheckout.spec.js.map +0 -1
  2294. package/lib/test/shared-tree/treeView.spec.d.ts +0 -2
  2295. package/lib/test/shared-tree/treeView.spec.d.ts.map +0 -1
  2296. package/lib/test/shared-tree/treeView.spec.js +0 -16
  2297. package/lib/test/shared-tree/treeView.spec.js.map +0 -1
  2298. package/lib/test/shared-tree/undo.spec.d.ts +0 -2
  2299. package/lib/test/shared-tree/undo.spec.d.ts.map +0 -1
  2300. package/lib/test/shared-tree/undo.spec.js +0 -298
  2301. package/lib/test/shared-tree/undo.spec.js.map +0 -1
  2302. package/lib/test/shared-tree-core/branch.spec.d.ts +0 -6
  2303. package/lib/test/shared-tree-core/branch.spec.d.ts.map +0 -1
  2304. package/lib/test/shared-tree-core/branch.spec.js +0 -766
  2305. package/lib/test/shared-tree-core/branch.spec.js.map +0 -1
  2306. package/lib/test/shared-tree-core/edit-manager/editManager.bench.d.ts +0 -6
  2307. package/lib/test/shared-tree-core/edit-manager/editManager.bench.d.ts.map +0 -1
  2308. package/lib/test/shared-tree-core/edit-manager/editManager.bench.js +0 -227
  2309. package/lib/test/shared-tree-core/edit-manager/editManager.bench.js.map +0 -1
  2310. package/lib/test/shared-tree-core/edit-manager/editManager.spec.d.ts +0 -6
  2311. package/lib/test/shared-tree-core/edit-manager/editManager.spec.d.ts.map +0 -1
  2312. package/lib/test/shared-tree-core/edit-manager/editManager.spec.js +0 -13
  2313. package/lib/test/shared-tree-core/edit-manager/editManager.spec.js.map +0 -1
  2314. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.d.ts +0 -6
  2315. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.d.ts.map +0 -1
  2316. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.js +0 -161
  2317. package/lib/test/shared-tree-core/edit-manager/editManagerCodecs.test.js.map +0 -1
  2318. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.d.ts +0 -6
  2319. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.d.ts.map +0 -1
  2320. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.js +0 -568
  2321. package/lib/test/shared-tree-core/edit-manager/editManagerCorrectness.test.js.map +0 -1
  2322. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.d.ts +0 -6
  2323. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.d.ts.map +0 -1
  2324. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.js +0 -442
  2325. package/lib/test/shared-tree-core/edit-manager/editManagerPerf.test.js.map +0 -1
  2326. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.d.ts +0 -80
  2327. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.d.ts.map +0 -1
  2328. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.js +0 -267
  2329. package/lib/test/shared-tree-core/edit-manager/editManagerScenario.js.map +0 -1
  2330. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.d.ts +0 -211
  2331. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.d.ts.map +0 -1
  2332. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.js +0 -130
  2333. package/lib/test/shared-tree-core/edit-manager/editManagerTestUtils.js.map +0 -1
  2334. package/lib/test/shared-tree-core/message.spec.d.ts +0 -2
  2335. package/lib/test/shared-tree-core/message.spec.d.ts.map +0 -1
  2336. package/lib/test/shared-tree-core/message.spec.js +0 -99
  2337. package/lib/test/shared-tree-core/message.spec.js.map +0 -1
  2338. package/lib/test/shared-tree-core/sharedTreeCore.spec.d.ts +0 -2
  2339. package/lib/test/shared-tree-core/sharedTreeCore.spec.d.ts.map +0 -1
  2340. package/lib/test/shared-tree-core/sharedTreeCore.spec.js +0 -316
  2341. package/lib/test/shared-tree-core/sharedTreeCore.spec.js.map +0 -1
  2342. package/lib/test/shared-tree-core/utils.d.ts +0 -19
  2343. package/lib/test/shared-tree-core/utils.d.ts.map +0 -1
  2344. package/lib/test/shared-tree-core/utils.js +0 -26
  2345. package/lib/test/shared-tree-core/utils.js.map +0 -1
  2346. package/lib/test/simple-tree/list.spec.d.ts +0 -6
  2347. package/lib/test/simple-tree/list.spec.d.ts.map +0 -1
  2348. package/lib/test/simple-tree/list.spec.js +0 -613
  2349. package/lib/test/simple-tree/list.spec.js.map +0 -1
  2350. package/lib/test/simple-tree/object.spec.d.ts +0 -6
  2351. package/lib/test/simple-tree/object.spec.d.ts.map +0 -1
  2352. package/lib/test/simple-tree/object.spec.js +0 -390
  2353. package/lib/test/simple-tree/object.spec.js.map +0 -1
  2354. package/lib/test/simple-tree/objectFactory.spec.d.ts +0 -6
  2355. package/lib/test/simple-tree/objectFactory.spec.d.ts.map +0 -1
  2356. package/lib/test/simple-tree/objectFactory.spec.js +0 -210
  2357. package/lib/test/simple-tree/objectFactory.spec.js.map +0 -1
  2358. package/lib/test/simple-tree/primitives.spec.d.ts +0 -6
  2359. package/lib/test/simple-tree/primitives.spec.d.ts.map +0 -1
  2360. package/lib/test/simple-tree/primitives.spec.js +0 -134
  2361. package/lib/test/simple-tree/primitives.spec.js.map +0 -1
  2362. package/lib/test/simple-tree/proxies.spec.d.ts +0 -6
  2363. package/lib/test/simple-tree/proxies.spec.d.ts.map +0 -1
  2364. package/lib/test/simple-tree/proxies.spec.js +0 -597
  2365. package/lib/test/simple-tree/proxies.spec.js.map +0 -1
  2366. package/lib/test/simple-tree/rawObjectNode.spec.d.ts +0 -6
  2367. package/lib/test/simple-tree/rawObjectNode.spec.d.ts.map +0 -1
  2368. package/lib/test/simple-tree/rawObjectNode.spec.js +0 -73
  2369. package/lib/test/simple-tree/rawObjectNode.spec.js.map +0 -1
  2370. package/lib/test/simple-tree/schemaCreationUtilities.spec.d.ts +0 -6
  2371. package/lib/test/simple-tree/schemaCreationUtilities.spec.d.ts.map +0 -1
  2372. package/lib/test/simple-tree/schemaCreationUtilities.spec.js +0 -153
  2373. package/lib/test/simple-tree/schemaCreationUtilities.spec.js.map +0 -1
  2374. package/lib/test/simple-tree/schemaFactory.examples.spec.d.ts +0 -6
  2375. package/lib/test/simple-tree/schemaFactory.examples.spec.d.ts.map +0 -1
  2376. package/lib/test/simple-tree/schemaFactory.examples.spec.js +0 -107
  2377. package/lib/test/simple-tree/schemaFactory.examples.spec.js.map +0 -1
  2378. package/lib/test/simple-tree/schemaFactory.spec.d.ts +0 -6
  2379. package/lib/test/simple-tree/schemaFactory.spec.d.ts.map +0 -1
  2380. package/lib/test/simple-tree/schemaFactory.spec.js +0 -515
  2381. package/lib/test/simple-tree/schemaFactory.spec.js.map +0 -1
  2382. package/lib/test/simple-tree/schemaFactoryRecursive.spec.d.ts +0 -6
  2383. package/lib/test/simple-tree/schemaFactoryRecursive.spec.d.ts.map +0 -1
  2384. package/lib/test/simple-tree/schemaFactoryRecursive.spec.js +0 -282
  2385. package/lib/test/simple-tree/schemaFactoryRecursive.spec.js.map +0 -1
  2386. package/lib/test/simple-tree/schemaTypes.spec.d.ts +0 -6
  2387. package/lib/test/simple-tree/schemaTypes.spec.d.ts.map +0 -1
  2388. package/lib/test/simple-tree/schemaTypes.spec.js +0 -89
  2389. package/lib/test/simple-tree/schemaTypes.spec.js.map +0 -1
  2390. package/lib/test/simple-tree/toFlexSchema.spec.d.ts +0 -6
  2391. package/lib/test/simple-tree/toFlexSchema.spec.d.ts.map +0 -1
  2392. package/lib/test/simple-tree/toFlexSchema.spec.js +0 -30
  2393. package/lib/test/simple-tree/toFlexSchema.spec.js.map +0 -1
  2394. package/lib/test/simple-tree/toMapTree.spec.d.ts +0 -6
  2395. package/lib/test/simple-tree/toMapTree.spec.d.ts.map +0 -1
  2396. package/lib/test/simple-tree/toMapTree.spec.js +0 -423
  2397. package/lib/test/simple-tree/toMapTree.spec.js.map +0 -1
  2398. package/lib/test/simple-tree/tree.spec.d.ts +0 -6
  2399. package/lib/test/simple-tree/tree.spec.d.ts.map +0 -1
  2400. package/lib/test/simple-tree/tree.spec.js +0 -71
  2401. package/lib/test/simple-tree/tree.spec.js.map +0 -1
  2402. package/lib/test/simple-tree/treeApi.spec.d.ts +0 -6
  2403. package/lib/test/simple-tree/treeApi.spec.d.ts.map +0 -1
  2404. package/lib/test/simple-tree/treeApi.spec.js +0 -146
  2405. package/lib/test/simple-tree/treeApi.spec.js.map +0 -1
  2406. package/lib/test/simple-tree/utils.d.ts +0 -16
  2407. package/lib/test/simple-tree/utils.d.ts.map +0 -1
  2408. package/lib/test/simple-tree/utils.js +0 -33
  2409. package/lib/test/simple-tree/utils.js.map +0 -1
  2410. package/lib/test/snapshots/gc.spec.d.ts +0 -6
  2411. package/lib/test/snapshots/gc.spec.d.ts.map +0 -1
  2412. package/lib/test/snapshots/gc.spec.js +0 -106
  2413. package/lib/test/snapshots/gc.spec.js.map +0 -1
  2414. package/lib/test/snapshots/index.d.ts +0 -6
  2415. package/lib/test/snapshots/index.d.ts.map +0 -1
  2416. package/lib/test/snapshots/index.js +0 -6
  2417. package/lib/test/snapshots/index.js.map +0 -1
  2418. package/lib/test/snapshots/schema.spec.d.ts +0 -6
  2419. package/lib/test/snapshots/schema.spec.d.ts.map +0 -1
  2420. package/lib/test/snapshots/schema.spec.js +0 -17
  2421. package/lib/test/snapshots/schema.spec.js.map +0 -1
  2422. package/lib/test/snapshots/snapshotTools.d.ts +0 -25
  2423. package/lib/test/snapshots/snapshotTools.d.ts.map +0 -1
  2424. package/lib/test/snapshots/snapshotTools.js +0 -85
  2425. package/lib/test/snapshots/snapshotTools.js.map +0 -1
  2426. package/lib/test/snapshots/summary.spec.d.ts +0 -6
  2427. package/lib/test/snapshots/summary.spec.d.ts.map +0 -1
  2428. package/lib/test/snapshots/summary.spec.js +0 -26
  2429. package/lib/test/snapshots/summary.spec.js.map +0 -1
  2430. package/lib/test/snapshots/testTrees.d.ts +0 -15
  2431. package/lib/test/snapshots/testTrees.d.ts.map +0 -1
  2432. package/lib/test/snapshots/testTrees.js +0 -374
  2433. package/lib/test/snapshots/testTrees.js.map +0 -1
  2434. package/lib/test/snapshots/utils.d.ts +0 -7
  2435. package/lib/test/snapshots/utils.d.ts.map +0 -1
  2436. package/lib/test/snapshots/utils.js +0 -106
  2437. package/lib/test/snapshots/utils.js.map +0 -1
  2438. package/lib/test/testChange.d.ts +0 -90
  2439. package/lib/test/testChange.d.ts.map +0 -1
  2440. package/lib/test/testChange.js +0 -234
  2441. package/lib/test/testChange.js.map +0 -1
  2442. package/lib/test/testChange.spec.d.ts +0 -6
  2443. package/lib/test/testChange.spec.d.ts.map +0 -1
  2444. package/lib/test/testChange.spec.js +0 -113
  2445. package/lib/test/testChange.spec.js.map +0 -1
  2446. package/lib/test/testTrees.d.ts +0 -56
  2447. package/lib/test/testTrees.d.ts.map +0 -1
  2448. package/lib/test/testTrees.js +0 -175
  2449. package/lib/test/testTrees.js.map +0 -1
  2450. package/lib/test/tree/anchorSet.spec.d.ts +0 -6
  2451. package/lib/test/tree/anchorSet.spec.d.ts.map +0 -1
  2452. package/lib/test/tree/anchorSet.spec.js +0 -593
  2453. package/lib/test/tree/anchorSet.spec.js.map +0 -1
  2454. package/lib/test/tree/detachedFieldIndex.spec.d.ts +0 -11
  2455. package/lib/test/tree/detachedFieldIndex.spec.d.ts.map +0 -1
  2456. package/lib/test/tree/detachedFieldIndex.spec.js +0 -218
  2457. package/lib/test/tree/detachedFieldIndex.spec.js.map +0 -1
  2458. package/lib/test/tree/pathTree.spec.d.ts +0 -6
  2459. package/lib/test/tree/pathTree.spec.d.ts.map +0 -1
  2460. package/lib/test/tree/pathTree.spec.js +0 -122
  2461. package/lib/test/tree/pathTree.spec.js.map +0 -1
  2462. package/lib/test/tree/visitDelta.spec.d.ts +0 -6
  2463. package/lib/test/tree/visitDelta.spec.d.ts.map +0 -1
  2464. package/lib/test/tree/visitDelta.spec.js +0 -1055
  2465. package/lib/test/tree/visitDelta.spec.js.map +0 -1
  2466. package/lib/test/util/brand.spec.d.ts +0 -22
  2467. package/lib/test/util/brand.spec.d.ts.map +0 -1
  2468. package/lib/test/util/brand.spec.js +0 -19
  2469. package/lib/test/util/brand.spec.js.map +0 -1
  2470. package/lib/test/util/deepFreeze.spec.d.ts +0 -6
  2471. package/lib/test/util/deepFreeze.spec.d.ts.map +0 -1
  2472. package/lib/test/util/deepFreeze.spec.js +0 -176
  2473. package/lib/test/util/deepFreeze.spec.js.map +0 -1
  2474. package/lib/test/util/nestedMap.spec.d.ts +0 -6
  2475. package/lib/test/util/nestedMap.spec.d.ts.map +0 -1
  2476. package/lib/test/util/nestedMap.spec.js +0 -190
  2477. package/lib/test/util/nestedMap.spec.js.map +0 -1
  2478. package/lib/test/util/offsetList.spec.d.ts +0 -6
  2479. package/lib/test/util/offsetList.spec.d.ts.map +0 -1
  2480. package/lib/test/util/offsetList.spec.js +0 -35
  2481. package/lib/test/util/offsetList.spec.js.map +0 -1
  2482. package/lib/test/util/testTreeProvider.spec.d.ts +0 -6
  2483. package/lib/test/util/testTreeProvider.spec.d.ts.map +0 -1
  2484. package/lib/test/util/testTreeProvider.spec.js +0 -56
  2485. package/lib/test/util/testTreeProvider.spec.js.map +0 -1
  2486. package/lib/test/util/typeUtils.spec.d.ts +0 -6
  2487. package/lib/test/util/typeUtils.spec.d.ts.map +0 -1
  2488. package/lib/test/util/typeUtils.spec.js +0 -19
  2489. package/lib/test/util/typeUtils.spec.js.map +0 -1
  2490. package/lib/test/util/utils.spec.d.ts +0 -6
  2491. package/lib/test/util/utils.spec.d.ts.map +0 -1
  2492. package/lib/test/util/utils.spec.js +0 -27
  2493. package/lib/test/util/utils.spec.js.map +0 -1
  2494. package/lib/test/utils.d.ts +0 -313
  2495. package/lib/test/utils.d.ts.map +0 -1
  2496. package/lib/test/utils.js +0 -765
  2497. package/lib/test/utils.js.map +0 -1
  2498. package/lib/tree-alpha.d.ts +0 -2159
  2499. package/lib/tree-beta.d.ts +0 -2159
  2500. package/lib/tree-public.d.ts +0 -1942
  2501. package/lib/tree-untrimmed.d.ts +0 -6880
  2502. package/src/simple-tree/flexNode.ts +0 -96
  2503. package/src/simple-tree/treeArrayNode.ts +0 -70
  2504. /package/dist/{feature-libraries → core/schema-stored}/multiplicity.d.ts +0 -0
  2505. /package/lib/{feature-libraries → core/schema-stored}/multiplicity.d.ts +0 -0
  2506. /package/lib/{feature-libraries → core/schema-stored}/multiplicity.js +0 -0
  2507. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFamily.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.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 } from \"@fluidframework/core-utils\";\nimport { ICodecFamily, ICodecOptions, makeCodecFamily } from \"../../codec/index.js\";\nimport {\n\tChangeFamily,\n\tEditBuilder,\n\tChangeRebaser,\n\tFieldKindIdentifier,\n\tFieldKey,\n\tUpPath,\n\tTaggedChange,\n\tRevisionTag,\n\ttagChange,\n\tmakeAnonChange,\n\tChangeFamilyEditor,\n\tFieldUpPath,\n\tChangesetLocalId,\n\tisEmptyFieldChanges,\n\tRevisionMetadataSource,\n\tRevisionInfo,\n\trevisionMetadataSourceFromInfo,\n\tChangeAtomIdMap,\n\tmakeDetachedNodeId,\n\temptyDelta,\n\tDeltaFieldMap,\n\tDeltaFieldChanges,\n\tDeltaDetachedNodeBuild,\n\tDeltaDetachedNodeDestruction,\n\tDeltaRoot,\n\tDeltaDetachedNodeId,\n\tChangeEncodingContext,\n\tRevisionTagCodec,\n\tmapCursorField,\n\tITreeCursorSynchronous,\n\tCursorLocationType,\n} from \"../../core/index.js\";\nimport {\n\tbrand,\n\tdeleteFromNestedMap,\n\tfail,\n\tforEachInNestedMap,\n\tgetOrAddInMap,\n\tIdAllocationState,\n\tIdAllocator,\n\tidAllocatorFromMaxId,\n\tidAllocatorFromState,\n\tMutable,\n\tpopulateNestedMap,\n\tsetInNestedMap,\n\ttryGetFromNestedMap,\n} from \"../../util/index.js\";\nimport { MemoizedIdRangeAllocator } from \"../memoizedIdRangeAllocator.js\";\nimport {\n\tTreeChunk,\n\tchunkFieldSingle,\n\tdefaultChunkPolicy,\n\tFieldBatchCodec,\n\tchunkTree,\n} from \"../chunked-forest/index.js\";\nimport { cursorForMapTreeNode, mapTreeFromCursor } from \"../mapTreeCursor.js\";\nimport { TreeCompressionStrategy } from \"../treeCompressionUtils.js\";\nimport {\n\tCrossFieldManager,\n\tCrossFieldMap,\n\tCrossFieldTarget,\n\tgetFirstFromCrossFieldMap,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nimport {\n\tFieldChangeHandler,\n\tNodeExistenceState,\n\tRebaseRevisionMetadata,\n} from \"./fieldChangeHandler.js\";\nimport { FlexFieldKind } from \"./fieldKind.js\";\nimport { FieldKindWithEditor, withEditor } from \"./fieldKindWithEditor.js\";\nimport { convertGenericChange, genericFieldKind, newGenericChangeset } from \"./genericFieldKind.js\";\nimport { GenericChangeset } from \"./genericFieldKindTypes.js\";\nimport {\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tModularChangeset,\n\tNodeChangeset,\n} from \"./modularChangeTypes.js\";\nimport { makeV0Codec } from \"./modularChangeCodecs.js\";\n\n/**\n * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind\n * as determined by the schema.\n */\nexport class ModularChangeFamily\n\timplements ChangeFamily<ModularEditBuilder, ModularChangeset>, ChangeRebaser<ModularChangeset>\n{\n\tpublic static readonly emptyChange: ModularChangeset = makeModularChangeset();\n\n\tpublic readonly latestCodec: ReturnType<typeof makeV0Codec>;\n\n\tpublic readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>;\n\n\tpublic constructor(\n\t\tpublic readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n\t\trevisionTagCodec: RevisionTagCodec,\n\t\tfieldBatchCodec: FieldBatchCodec,\n\t\tcodecOptions: ICodecOptions,\n\t\tchunkCompressionStrategy?: TreeCompressionStrategy,\n\t) {\n\t\tthis.latestCodec = makeV0Codec(\n\t\t\tfieldKinds,\n\t\t\trevisionTagCodec,\n\t\t\tfieldBatchCodec,\n\t\t\tcodecOptions,\n\t\t\tchunkCompressionStrategy,\n\t\t);\n\t\tthis.codecs = makeCodecFamily([[0, this.latestCodec]]);\n\t}\n\n\tpublic get rebaser(): ChangeRebaser<ModularChangeset> {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Produces an equivalent list of `FieldChangeset`s that all target the same {@link FlexFieldKind}.\n\t * @param changes - The list of `FieldChange`s whose `FieldChangeset`s needs to be normalized.\n\t * @returns An object that contains both the equivalent list of `FieldChangeset`s that all\n\t * target the same {@link FlexFieldKind}, and the `FieldKind` that they target.\n\t * The returned `FieldChangeset`s may be a shallow copy of the input `FieldChange`s.\n\t */\n\tprivate normalizeFieldChanges(\n\t\tchange1: FieldChange | undefined,\n\t\tchange2: FieldChange | undefined,\n\t\tgenId: IdAllocator,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): {\n\t\tfieldKind: FieldKindWithEditor;\n\t\tchange1: FieldChangeset | undefined;\n\t\tchange2: FieldChangeset | undefined;\n\t} {\n\t\t// TODO: Handle the case where changes have conflicting field kinds\n\t\tconst kind =\n\t\t\tchange1 !== undefined && change1.fieldKind !== genericFieldKind.identifier\n\t\t\t\t? change1.fieldKind\n\t\t\t\t: change2?.fieldKind ?? genericFieldKind.identifier;\n\n\t\tif (kind === genericFieldKind.identifier) {\n\t\t\t// All the changes are generic\n\t\t\treturn {\n\t\t\t\tfieldKind: genericFieldKind,\n\t\t\t\tchange1: change1?.change,\n\t\t\t\tchange2: change2?.change,\n\t\t\t};\n\t\t}\n\t\tconst fieldKind = getFieldKind(this.fieldKinds, kind);\n\t\tconst handler = fieldKind.changeHandler;\n\t\tconst normalizedChange1 = this.normalizeFieldChange(\n\t\t\tchange1,\n\t\t\thandler,\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t);\n\t\tconst normalizedChange2 = this.normalizeFieldChange(\n\t\t\tchange2,\n\t\t\thandler,\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t);\n\t\treturn { fieldKind, change1: normalizedChange1, change2: normalizedChange2 };\n\t}\n\n\tprivate normalizeFieldChange<T>(\n\t\tfieldChange: FieldChange | undefined,\n\t\thandler: FieldChangeHandler<T>,\n\t\tgenId: IdAllocator,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeset | undefined {\n\t\tif (fieldChange === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldChange.fieldKind !== genericFieldKind.identifier) {\n\t\t\treturn fieldChange.change;\n\t\t}\n\n\t\t// The cast is based on the `fieldKind` check above\n\t\tconst genericChange = fieldChange.change as unknown as GenericChangeset;\n\t\tconst convertedChange = convertGenericChange(\n\t\t\tgenericChange,\n\t\t\thandler,\n\t\t\t(child1, child2) =>\n\t\t\t\tthis.composeNodeChanges(\n\t\t\t\t\tchild1,\n\t\t\t\t\tundefined,\n\t\t\t\t\tchild2,\n\t\t\t\t\tundefined,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewComposeTable(),\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t),\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t) as FieldChangeset;\n\n\t\treturn convertedChange;\n\t}\n\n\tpublic compose(changes: TaggedChange<ModularChangeset>[]): ModularChangeset {\n\t\tconst activeChanges = changes.filter(\n\t\t\t(change) => (change.change.constraintViolationCount ?? 0) === 0,\n\t\t);\n\n\t\tconst { revInfos, maxId } = getRevInfoFromTaggedChanges(changes);\n\t\tconst idState: IdAllocationState = { maxId };\n\n\t\treturn activeChanges.reduce(\n\t\t\t(change1, change2) =>\n\t\t\t\tmakeAnonChange(this.composePair(change1, change2, revInfos, idState)),\n\t\t\tmakeAnonChange({ fieldChanges: new Map() }),\n\t\t).change;\n\t}\n\n\tprivate composePair(\n\t\tchange1: TaggedChange<ModularChangeset>,\n\t\tchange2: TaggedChange<ModularChangeset>,\n\t\trevInfos: RevisionInfo[],\n\t\tidState: IdAllocationState,\n\t) {\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst revisionMetadata: RevisionMetadataSource = revisionMetadataSourceFromInfo(revInfos);\n\n\t\tconst crossFieldTable = newComposeTable();\n\n\t\tconst composedFields = this.composeFieldMaps(\n\t\t\tchange1.change.fieldChanges,\n\t\t\tchange1.revision,\n\t\t\tchange2.change.fieldChanges,\n\t\t\tchange2.revision,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\n\t\twhile (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tfor (const fieldChange of fieldsToUpdate) {\n\t\t\t\tconst context = crossFieldTable.fieldToContext.get(fieldChange);\n\t\t\t\tassert(\n\t\t\t\t\tcontext !== undefined,\n\t\t\t\t\t0x8cc /* Should have context for every invalidated field */,\n\t\t\t\t);\n\t\t\t\tconst { change1: fieldChange1, change2: fieldChange2, composedChange } = context;\n\n\t\t\t\tconst rebaser = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser;\n\t\t\t\tconst composeNodes = (\n\t\t\t\t\tnode1: NodeChangeset | undefined,\n\t\t\t\t\tnode2: NodeChangeset | undefined,\n\t\t\t\t): NodeChangeset => {\n\t\t\t\t\tconst key = composeCacheKeyFromNodeChangesets(node1, node2);\n\t\t\t\t\tconst cachedResult = crossFieldTable.nodeCache.get(key);\n\t\t\t\t\tif (cachedResult !== undefined) {\n\t\t\t\t\t\treturn cachedResult;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.composeNodeChanges(\n\t\t\t\t\t\tnode1,\n\t\t\t\t\t\tfieldChange1.revision,\n\t\t\t\t\t\tnode2,\n\t\t\t\t\t\tfieldChange2.revision,\n\t\t\t\t\t\tgenId,\n\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\trevisionMetadata,\n\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\tconst amendedChange = rebaser.compose(\n\t\t\t\t\tfieldChange1,\n\t\t\t\t\tfieldChange2,\n\t\t\t\t\tcomposeNodes,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, fieldChange, false),\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\t\t\t\tcomposedChange.change = brand(amendedChange);\n\t\t\t}\n\t\t}\n\n\t\tconst { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers([\n\t\t\tchange1,\n\t\t\tchange2,\n\t\t]);\n\n\t\treturn makeModularChangeset(\n\t\t\tthis.pruneFieldMap(composedFields),\n\t\t\tidState.maxId,\n\t\t\trevInfos,\n\t\t\tundefined,\n\t\t\tallBuilds,\n\t\t\tallDestroys,\n\t\t\tallRefreshers,\n\t\t);\n\t}\n\n\tprivate composeFieldMaps(\n\t\tchange1: FieldChangeMap | undefined,\n\t\trevision1: RevisionTag | undefined,\n\t\tchange2: FieldChangeMap | undefined,\n\t\trevision2: RevisionTag | undefined,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: ComposeTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeMap {\n\t\tconst composedFields: FieldChangeMap = new Map();\n\t\tconst fields = new Set<FieldKey>();\n\t\tfor (const field of change1?.keys() ?? []) {\n\t\t\tfields.add(field);\n\t\t}\n\n\t\tfor (const field of change2?.keys() ?? []) {\n\t\t\tfields.add(field);\n\t\t}\n\n\t\tfor (const field of fields) {\n\t\t\tconst fieldChange1 = change1?.get(field);\n\t\t\tconst fieldChange2 = change2?.get(field);\n\n\t\t\tconst {\n\t\t\t\tfieldKind,\n\t\t\t\tchange1: normalizedFieldChange1,\n\t\t\t\tchange2: normalizedFieldChange2,\n\t\t\t} = this.normalizeFieldChanges(fieldChange1, fieldChange2, genId, revisionMetadata);\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange1 ?? fieldChange2);\n\t\t\tconst taggedChange1 = tagChange(\n\t\t\t\tnormalizedFieldChange1 ?? fieldKind.changeHandler.createEmpty(),\n\t\t\t\tfieldChange1?.revision ?? revision1,\n\t\t\t);\n\t\t\tconst taggedChange2 = tagChange(\n\t\t\t\tnormalizedFieldChange2 ?? fieldKind.changeHandler.createEmpty(),\n\t\t\t\tfieldChange2?.revision ?? revision2,\n\t\t\t);\n\n\t\t\tconst composedChange = fieldKind.changeHandler.rebaser.compose(\n\t\t\t\ttaggedChange1,\n\t\t\t\ttaggedChange2,\n\t\t\t\t(child1, child2) =>\n\t\t\t\t\tthis.composeNodeChanges(\n\t\t\t\t\t\tchild1,\n\t\t\t\t\t\trevision1,\n\t\t\t\t\t\tchild2,\n\t\t\t\t\t\trevision2,\n\t\t\t\t\t\tgenId,\n\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\trevisionMetadata,\n\t\t\t\t\t),\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst composedField: FieldChange = {\n\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\tchange: brand(composedChange),\n\t\t\t};\n\n\t\t\tconst fieldKey =\n\t\t\t\tfieldChange1 ?? fieldChange2 ?? fail(\"At least one field should have changes\");\n\n\t\t\tcrossFieldTable.fieldToContext.set(fieldKey, {\n\t\t\t\tchange1: taggedChange1,\n\t\t\t\tchange2: taggedChange2,\n\t\t\t\tcomposedChange: composedField,\n\t\t\t});\n\n\t\t\t// TODO: Could optimize by checking that composedField is non-empty\n\t\t\tcomposedFields.set(field, composedField);\n\t\t}\n\n\t\treturn composedFields;\n\t}\n\n\tprivate composeNodeChanges(\n\t\tchange1: NodeChangeset | undefined,\n\t\trevision1: RevisionTag | undefined,\n\t\tchange2: NodeChangeset | undefined,\n\t\trevision2: RevisionTag | undefined,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: ComposeTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): NodeChangeset {\n\t\tconst nodeExistsConstraint = change1?.nodeExistsConstraint ?? change2?.nodeExistsConstraint;\n\n\t\tconst composedFieldChanges = this.composeFieldMaps(\n\t\t\tchange1?.fieldChanges,\n\t\t\trevision1,\n\t\t\tchange2?.fieldChanges,\n\t\t\trevision2,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\t\tconst composedNodeChange: NodeChangeset = {};\n\n\t\tif (composedFieldChanges.size > 0) {\n\t\t\tcomposedNodeChange.fieldChanges = composedFieldChanges;\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tcomposedNodeChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\tconst key = composeCacheKeyFromNodeChangesets(change1, change2);\n\t\tcrossFieldTable.nodeCache.set(key, composedNodeChange);\n\t\treturn composedNodeChange;\n\t}\n\n\t/**\n\t * @param change - The change to invert.\n\t * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when\n\t * performing a sandwich rebase.\n\t * @param repairStore - The store to query for repair data.\n\t */\n\tpublic invert(change: TaggedChange<ModularChangeset>, isRollback: boolean): ModularChangeset {\n\t\t// Return an empty inverse for changes with constraint violations\n\t\tif ((change.change.constraintViolationCount ?? 0) > 0) {\n\t\t\treturn makeModularChangeset();\n\t\t}\n\n\t\tconst idState: IdAllocationState = { maxId: change.change.maxId ?? -1 };\n\t\t// This idState is used for the whole of the IdAllocator's lifetime, which allows\n\t\t// this function to read the updated idState.maxId after more IDs are allocated.\n\t\t// TODO: add a getMax function to IdAllocator to make for a clearer contract.\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst crossFieldTable: InvertTable = {\n\t\t\t...newCrossFieldTable<FieldChange>(),\n\t\t\toriginalFieldToContext: new Map(),\n\t\t};\n\n\t\tconst { revInfos } = getRevInfoFromTaggedChanges([change]);\n\t\tconst revisionMetadata = revisionMetadataSourceFromInfo(revInfos);\n\n\t\tconst invertedFields = this.invertFieldMap(\n\t\t\ttagChange(change.change.fieldChanges, revisionFromTaggedChange(change)),\n\t\t\tisRollback,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\n\t\tif (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tfor (const fieldChange of fieldsToUpdate) {\n\t\t\t\tconst originalFieldChange = fieldChange.change;\n\t\t\t\tconst context = crossFieldTable.originalFieldToContext.get(fieldChange);\n\t\t\t\tassert(\n\t\t\t\t\tcontext !== undefined,\n\t\t\t\t\t0x851 /* Should have context for every invalidated field */,\n\t\t\t\t);\n\t\t\t\tconst { invertedField, revision } = context;\n\n\t\t\t\tconst amendedChange = getChangeHandler(\n\t\t\t\t\tthis.fieldKinds,\n\t\t\t\t\tfieldChange.fieldKind,\n\t\t\t\t).rebaser.invert(\n\t\t\t\t\ttagChange(originalFieldChange, revision),\n\t\t\t\t\t(nodeChangeset) => nodeChangeset,\n\t\t\t\t\tisRollback,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, fieldChange),\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\t\t\t\tinvertedField.change = brand(amendedChange);\n\t\t\t}\n\t\t}\n\n\t\t// Rollback changesets destroy the nodes created by the change being rolled back.\n\t\tconst destroys = isRollback\n\t\t\t? invertBuilds(change.change.builds, change.revision)\n\t\t\t: undefined;\n\n\t\t// Destroys only occur in rollback changesets, which are never inverted.\n\t\tassert(\n\t\t\tchange.change.destroys === undefined,\n\t\t\t0x89a /* Unexpected destroys in change to invert */,\n\t\t);\n\n\t\tconst revInfo = change.change.revisions;\n\t\treturn makeModularChangeset(\n\t\t\tinvertedFields,\n\t\t\tidState.maxId,\n\t\t\trevInfo === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (isRollback\n\t\t\t\t\t\t? revInfo.map(({ revision }) => ({ revision, rollbackOf: revision }))\n\t\t\t\t\t\t: Array.from(revInfo)\n\t\t\t\t ).reverse(),\n\t\t\tchange.change.constraintViolationCount,\n\t\t\tundefined,\n\t\t\tdestroys,\n\t\t);\n\t}\n\n\tprivate invertFieldMap(\n\t\tchanges: TaggedChange<FieldChangeMap>,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: InvertTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeMap {\n\t\tconst invertedFields: FieldChangeMap = new Map();\n\n\t\tfor (const [field, fieldChange] of changes.change) {\n\t\t\tconst { revision } = fieldChange.revision !== undefined ? fieldChange : changes;\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\t\t\tconst invertedChange = getChangeHandler(\n\t\t\t\tthis.fieldKinds,\n\t\t\t\tfieldChange.fieldKind,\n\t\t\t).rebaser.invert(\n\t\t\t\t{ revision, change: fieldChange.change },\n\t\t\t\t(childChanges) =>\n\t\t\t\t\tthis.invertNodeChange(\n\t\t\t\t\t\t{ revision, change: childChanges },\n\t\t\t\t\t\tisRollback,\n\t\t\t\t\t\tgenId,\n\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\trevisionMetadata,\n\t\t\t\t\t),\n\t\t\t\tisRollback,\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst invertedFieldChange: FieldChange = {\n\t\t\t\t...fieldChange,\n\t\t\t\tchange: brand(invertedChange),\n\t\t\t};\n\t\t\tinvertedFields.set(field, invertedFieldChange);\n\n\t\t\tcrossFieldTable.originalFieldToContext.set(fieldChange, {\n\t\t\t\tinvertedField: invertedFieldChange,\n\t\t\t\trevision,\n\t\t\t});\n\t\t}\n\n\t\treturn invertedFields;\n\t}\n\n\tprivate invertNodeChange(\n\t\tchange: TaggedChange<NodeChangeset>,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: InvertTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): NodeChangeset {\n\t\tconst inverse: NodeChangeset = {};\n\n\t\tif (change.change.fieldChanges !== undefined) {\n\t\t\tinverse.fieldChanges = this.invertFieldMap(\n\t\t\t\t{ ...change, change: change.change.fieldChanges },\n\t\t\t\tisRollback,\n\t\t\t\tgenId,\n\t\t\t\tcrossFieldTable,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\t\t}\n\n\t\treturn inverse;\n\t}\n\n\tpublic rebase(\n\t\tchange: ModularChangeset,\n\t\tover: TaggedChange<ModularChangeset>,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): ModularChangeset {\n\t\tconst maxId = Math.max(change.maxId ?? -1, over.change.maxId ?? -1);\n\t\tconst idState: IdAllocationState = { maxId };\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst crossFieldTable: RebaseTable = {\n\t\t\t...newCrossFieldTable<FieldChange>(),\n\t\t\tfieldToContext: new Map(),\n\t\t\trebasedNodeCache: new Map(),\n\t\t};\n\n\t\tlet constraintState = newConstraintState(change.constraintViolationCount ?? 0);\n\n\t\tconst getBaseRevisions = () =>\n\t\t\trevisionInfoFromTaggedChange(over).map((info) => info.revision);\n\n\t\tconst rebaseMetadata = {\n\t\t\t...revisionMetadata,\n\t\t\tgetBaseRevisions,\n\t\t};\n\n\t\tconst rebasedFields = this.rebaseFieldMap(\n\t\t\tchange.fieldChanges,\n\t\t\ttagChange(over.change.fieldChanges, revisionFromTaggedChange(over)),\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\t() => true,\n\t\t\trebaseMetadata,\n\t\t\tconstraintState,\n\t\t);\n\n\t\tif (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tconstraintState = newConstraintState(change.constraintViolationCount ?? 0);\n\t\t\tfor (const field of fieldsToUpdate) {\n\t\t\t\t// TODO: Should we copy the context table out before this loop?\n\t\t\t\tconst context = crossFieldTable.fieldToContext.get(field);\n\t\t\t\tassert(context !== undefined, 0x852 /* Every field should have a context */);\n\t\t\t\tconst {\n\t\t\t\t\tfieldKind,\n\t\t\t\t\tchange1: fieldChangeset,\n\t\t\t\t\tchange2: baseChangeset,\n\t\t\t\t} = this.normalizeFieldChanges(\n\t\t\t\t\tcontext.newChange,\n\t\t\t\t\tcontext.baseChange,\n\t\t\t\t\tgenId,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\n\t\t\t\tcontext.rebasedChange.change = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\t\tfieldChangeset,\n\t\t\t\t\ttagChange(baseChangeset, context.baseRevision),\n\t\t\t\t\t(curr, base, existenceState) => {\n\t\t\t\t\t\tconst key = curr ?? base;\n\t\t\t\t\t\tif (key === undefined) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst prior = crossFieldTable.rebasedNodeCache.get(key);\n\t\t\t\t\t\tif (prior !== undefined) {\n\t\t\t\t\t\t\treturn prior;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// This is needed when the first rebase pass results in node changes from the rebased\n\t\t\t\t\t\t// changeset being moved to a different location.\n\t\t\t\t\t\treturn this.rebaseNodeChange(\n\t\t\t\t\t\t\tcurr,\n\t\t\t\t\t\t\ttagChange(base, context.baseRevision),\n\t\t\t\t\t\t\tgenId,\n\t\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\t\t() => true,\n\t\t\t\t\t\t\trebaseMetadata,\n\t\t\t\t\t\t\tconstraintState,\n\t\t\t\t\t\t\texistenceState,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, field),\n\t\t\t\t\trebaseMetadata,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn makeModularChangeset(\n\t\t\tthis.pruneFieldMap(rebasedFields),\n\t\t\tidState.maxId,\n\t\t\tchange.revisions,\n\t\t\tconstraintState.violationCount,\n\t\t\tchange.builds,\n\t\t\tchange.destroys,\n\t\t\tchange.refreshers,\n\t\t);\n\t}\n\n\tprivate rebaseFieldMap(\n\t\tchange: FieldChangeMap,\n\t\tover: TaggedChange<FieldChangeMap>,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: RebaseTable,\n\t\tfieldFilter: (baseChange: FieldChange, newChange: FieldChange | undefined) => boolean,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t\tconstraintState: ConstraintState,\n\t\texistenceState: NodeExistenceState = NodeExistenceState.Alive,\n\t): FieldChangeMap {\n\t\tconst rebasedFields: FieldChangeMap = new Map();\n\n\t\t// Rebase fields contained in the base changeset\n\t\tfor (const [field, baseChanges] of over.change) {\n\t\t\tif (!fieldFilter(baseChanges, change.get(field))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst fieldChange: FieldChange = change.get(field) ?? {\n\t\t\t\tfieldKind: genericFieldKind.identifier,\n\t\t\t\tchange: brand(newGenericChangeset()),\n\t\t\t};\n\t\t\tconst {\n\t\t\t\tfieldKind,\n\t\t\t\tchange1: fieldChangeset,\n\t\t\t\tchange2: baseChangeset,\n\t\t\t} = this.normalizeFieldChanges(fieldChange, baseChanges, genId, revisionMetadata);\n\n\t\t\tconst { revision } = over;\n\t\t\tconst taggedBaseChange = { revision, change: baseChangeset };\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\n\t\t\tconst rebaseChild = (\n\t\t\t\tchild: NodeChangeset | undefined,\n\t\t\t\tbaseChild: NodeChangeset | undefined,\n\t\t\t\tstateChange: NodeExistenceState | undefined,\n\t\t\t) =>\n\t\t\t\tthis.rebaseNodeChange(\n\t\t\t\t\tchild,\n\t\t\t\t\t{ revision, change: baseChild },\n\t\t\t\t\tgenId,\n\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\tfieldFilter,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t\tconstraintState,\n\t\t\t\t\tstateChange,\n\t\t\t\t);\n\n\t\t\tconst rebasedField = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\tfieldChangeset,\n\t\t\t\ttaggedBaseChange,\n\t\t\t\trebaseChild,\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst rebasedFieldChange: FieldChange = {\n\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\tchange: brand(rebasedField),\n\t\t\t};\n\n\t\t\trebasedFields.set(field, rebasedFieldChange);\n\n\t\t\tcrossFieldTable.fieldToContext.set(fieldChange, {\n\t\t\t\tbaseChange: baseChanges,\n\t\t\t\tbaseRevision: revision,\n\t\t\t\tnewChange: fieldChange,\n\t\t\t\trebasedChange: rebasedFieldChange,\n\t\t\t});\n\t\t}\n\n\t\t// Rebase the fields of the new changeset which don't have a corresponding base field.\n\t\tfor (const [field, fieldChange] of change) {\n\t\t\tif (!over.change?.has(field)) {\n\t\t\t\tconst baseChanges: FieldChange = {\n\t\t\t\t\tfieldKind: genericFieldKind.identifier,\n\t\t\t\t\tchange: brand(newGenericChangeset()),\n\t\t\t\t};\n\n\t\t\t\tconst {\n\t\t\t\t\tfieldKind,\n\t\t\t\t\tchange1: fieldChangeset,\n\t\t\t\t\tchange2: baseChangeset,\n\t\t\t\t} = this.normalizeFieldChanges(fieldChange, baseChanges, genId, revisionMetadata);\n\n\t\t\t\t// TODO: Don't we need to add an entry in the context table?\n\t\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\t\t\t\tconst rebasedChangeset = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\t\tfieldChangeset,\n\t\t\t\t\ttagChange(baseChangeset, over.revision),\n\t\t\t\t\t(child, baseChild) => {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\tbaseChild === undefined,\n\t\t\t\t\t\t\t0x5b6 /* This field should not have any base changes */,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn this.rebaseNodeChange(\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\ttagChange(undefined, over.revision),\n\t\t\t\t\t\t\tgenId,\n\t\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\t\tfieldFilter,\n\t\t\t\t\t\t\trevisionMetadata,\n\t\t\t\t\t\t\tconstraintState,\n\t\t\t\t\t\t\texistenceState,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tgenId,\n\t\t\t\t\tmanager,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t\texistenceState,\n\t\t\t\t);\n\t\t\t\tconst rebasedFieldChange: FieldChange = {\n\t\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\t\tchange: brand(rebasedChangeset),\n\t\t\t\t};\n\t\t\t\trebasedFields.set(field, rebasedFieldChange);\n\t\t\t}\n\t\t}\n\n\t\treturn rebasedFields;\n\t}\n\n\tprivate rebaseNodeChange(\n\t\tchange: NodeChangeset | undefined,\n\t\tover: TaggedChange<NodeChangeset | undefined>,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: RebaseTable,\n\t\tfieldFilter: (baseChange: FieldChange, newChange: FieldChange | undefined) => boolean,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t\tconstraintState: ConstraintState,\n\t\texistenceState: NodeExistenceState = NodeExistenceState.Alive,\n\t): NodeChangeset | undefined {\n\t\tconst key = change ?? over.change;\n\t\tif (key === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst baseMap: TaggedChange<FieldChangeMap> =\n\t\t\tover.change?.fieldChanges !== undefined\n\t\t\t\t? {\n\t\t\t\t\t\t...over,\n\t\t\t\t\t\tchange: over.change.fieldChanges,\n\t\t\t\t }\n\t\t\t\t: tagChange(new Map(), over.revision);\n\n\t\tconst fieldChanges = this.rebaseFieldMap(\n\t\t\tchange?.fieldChanges ?? new Map(),\n\t\t\tbaseMap,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\tfieldFilter,\n\t\t\trevisionMetadata,\n\t\t\tconstraintState,\n\t\t\texistenceState,\n\t\t);\n\n\t\tconst rebasedChange: NodeChangeset = {};\n\n\t\tif (fieldChanges.size > 0) {\n\t\t\trebasedChange.fieldChanges = fieldChanges;\n\t\t}\n\n\t\tif (change?.nodeExistsConstraint !== undefined) {\n\t\t\trebasedChange.nodeExistsConstraint = change.nodeExistsConstraint;\n\t\t}\n\n\t\t// If there's a node exists constraint and we removed or revived the node, update constraint state\n\t\tif (rebasedChange.nodeExistsConstraint !== undefined) {\n\t\t\tconst violatedAfter = existenceState === NodeExistenceState.Dead;\n\n\t\t\tif (rebasedChange.nodeExistsConstraint.violated !== violatedAfter) {\n\t\t\t\trebasedChange.nodeExistsConstraint = {\n\t\t\t\t\t...rebasedChange.nodeExistsConstraint,\n\t\t\t\t\tviolated: violatedAfter,\n\t\t\t\t};\n\t\t\t\tconstraintState.violationCount += violatedAfter ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\tcrossFieldTable.rebasedNodeCache.set(key, rebasedChange);\n\t\treturn rebasedChange;\n\t}\n\n\tprivate pruneFieldMap(changeset: FieldChangeMap): FieldChangeMap | undefined {\n\t\tconst prunedChangeset: FieldChangeMap = new Map();\n\t\tfor (const [field, fieldChange] of changeset) {\n\t\t\tconst handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);\n\n\t\t\tconst prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (node) =>\n\t\t\t\tthis.pruneNodeChange(node),\n\t\t\t);\n\n\t\t\tif (!handler.isEmpty(prunedFieldChangeset)) {\n\t\t\t\tprunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n\t\t\t}\n\t\t}\n\n\t\treturn prunedChangeset.size > 0 ? prunedChangeset : undefined;\n\t}\n\n\tprivate pruneNodeChange(changeset: NodeChangeset): NodeChangeset | undefined {\n\t\tconst prunedFields =\n\t\t\tchangeset.fieldChanges !== undefined\n\t\t\t\t? this.pruneFieldMap(changeset.fieldChanges)\n\t\t\t\t: undefined;\n\n\t\tconst prunedChange = { ...changeset, fieldChanges: prunedFields };\n\t\tif (prunedChange.fieldChanges === undefined) {\n\t\t\tdelete prunedChange.fieldChanges;\n\t\t}\n\n\t\treturn isEmptyNodeChangeset(prunedChange) ? undefined : prunedChange;\n\t}\n\n\tpublic buildEditor(changeReceiver: (change: ModularChangeset) => void): ModularEditBuilder {\n\t\treturn new ModularEditBuilder(this, changeReceiver);\n\t}\n}\n\nfunction composeBuildsDestroysAndRefreshers(changes: TaggedChange<ModularChangeset>[]) {\n\tconst allBuilds: ChangeAtomIdMap<TreeChunk> = new Map();\n\tconst allDestroys: ChangeAtomIdMap<number> = new Map();\n\tconst allRefreshers: ChangeAtomIdMap<TreeChunk> = new Map();\n\tfor (const taggedChange of changes) {\n\t\tconst revision = revisionFromTaggedChange(taggedChange);\n\t\tconst change = taggedChange.change;\n\t\tif (change.builds) {\n\t\t\tfor (const [revisionKey, innerMap] of change.builds) {\n\t\t\t\tconst setRevisionKey = revisionKey ?? revision;\n\t\t\t\tconst innerDstMap = getOrAddInMap(\n\t\t\t\t\tallBuilds,\n\t\t\t\t\tsetRevisionKey,\n\t\t\t\t\tnew Map<ChangesetLocalId, TreeChunk>(),\n\t\t\t\t);\n\t\t\t\tfor (const [id, chunk] of innerMap) {\n\t\t\t\t\t// Check for duplicate builds and prefer earlier ones.\n\t\t\t\t\t// This can happen in compositions of commits that needed to include repair data refreshers (e.g., undos):\n\t\t\t\t\t// In that case, it's possible for the refreshers to contain different trees because the latter\n\t\t\t\t\t// refresher may already reflect the changes made by the commit that includes the earlier\n\t\t\t\t\t// refresher. This composition includes the changes made by the commit that includes the\n\t\t\t\t\t// earlier refresher, so we need to include the build for the earlier refresher, otherwise\n\t\t\t\t\t// the produced changeset will build a tree one which those changes have already been applied\n\t\t\t\t\t// and also try to apply the changes again, effectively applying them twice.\n\t\t\t\t\t// Note that it would in principle be possible to adopt the later build and exclude from the\n\t\t\t\t\t// composition all the changes already reflected on the tree, but that is not something we\n\t\t\t\t\t// care to support at this time.\n\t\t\t\t\tif (!innerDstMap.has(id)) {\n\t\t\t\t\t\t// Check for earlier destroys that this build might cancel-out with.\n\t\t\t\t\t\tconst destroyCount = tryGetFromNestedMap(allDestroys, setRevisionKey, id);\n\t\t\t\t\t\tif (destroyCount === undefined) {\n\t\t\t\t\t\t\tinnerDstMap.set(id, chunk);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\t\tdestroyCount === chunk.topLevelLength,\n\t\t\t\t\t\t\t\t0x89b /* Expected build and destroy to have the same length */,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdeleteFromNestedMap(allDestroys, setRevisionKey, id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (innerDstMap.size === 0) {\n\t\t\t\t\tallBuilds.delete(setRevisionKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (change.destroys !== undefined) {\n\t\t\tfor (const [revisionKey, innerMap] of change.destroys) {\n\t\t\t\tconst setRevisionKey = revisionKey ?? revision;\n\t\t\t\tconst innerDstMap = getOrAddInMap(\n\t\t\t\t\tallDestroys,\n\t\t\t\t\tsetRevisionKey,\n\t\t\t\t\tnew Map<ChangesetLocalId, number>(),\n\t\t\t\t);\n\t\t\t\tfor (const [id, count] of innerMap) {\n\t\t\t\t\t// Check for earlier builds that this destroy might cancel-out with.\n\t\t\t\t\tconst chunk = tryGetFromNestedMap(allBuilds, setRevisionKey, id);\n\t\t\t\t\tif (chunk === undefined) {\n\t\t\t\t\t\tinnerDstMap.set(id, count);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\tcount === chunk.topLevelLength,\n\t\t\t\t\t\t\t0x89c /* Expected build and destroy to have the same length */,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdeleteFromNestedMap(allBuilds, setRevisionKey, id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (innerDstMap.size === 0) {\n\t\t\t\t\tallDestroys.delete(setRevisionKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// add all refreshers while preferring earlier ones\n\t\tif (change.refreshers) {\n\t\t\tpopulateNestedMap(change.refreshers, allRefreshers, false);\n\t\t}\n\t}\n\treturn { allBuilds, allDestroys, allRefreshers };\n}\n\nfunction invertBuilds(\n\tbuilds: ChangeAtomIdMap<TreeChunk> | undefined,\n\tfallbackRevision: RevisionTag | undefined,\n): ChangeAtomIdMap<number> | undefined {\n\tif (builds !== undefined) {\n\t\tconst destroys: ChangeAtomIdMap<number> = new Map();\n\t\tfor (const [revision, innerBuildMap] of builds) {\n\t\t\tconst initializedRevision = revision ?? fallbackRevision;\n\t\t\tconst innerDestroyMap: Map<ChangesetLocalId, number> = new Map();\n\t\t\tfor (const [id, chunk] of innerBuildMap) {\n\t\t\t\tinnerDestroyMap.set(id, chunk.topLevelLength);\n\t\t\t}\n\t\t\tdestroys.set(initializedRevision, innerDestroyMap);\n\t\t}\n\t\treturn destroys;\n\t}\n\treturn undefined;\n}\n\n/**\n * Returns the set of removed roots that should be in memory for the given change to be applied.\n * A removed root is relevant if any of the following is true:\n * - It is being inserted\n * - It is being restored\n * - It is being edited\n * - The ID it is associated with is being changed\n *\n * May be conservative by returning more removed roots than strictly necessary.\n *\n * Will never return IDs for non-root trees, even if they are removed.\n *\n * @param change - The change to be applied.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function* relevantRemovedRoots(\n\t{ change, revision }: TaggedChange<ModularChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Iterable<DeltaDetachedNodeId> {\n\tyield* relevantRemovedRootsFromFields(change.fieldChanges, revision, fieldKinds);\n}\n\nfunction* relevantRemovedRootsFromFields(\n\tchange: FieldChangeMap,\n\trevision: RevisionTag | undefined,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Iterable<DeltaDetachedNodeId> {\n\tfor (const [_, fieldChange] of change) {\n\t\tconst fieldRevision = fieldChange.revision ?? revision;\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\t\tconst delegate = function* (node: NodeChangeset): Iterable<DeltaDetachedNodeId> {\n\t\t\tif (node.fieldChanges !== undefined) {\n\t\t\t\tyield* relevantRemovedRootsFromFields(node.fieldChanges, fieldRevision, fieldKinds);\n\t\t\t}\n\t\t};\n\t\tyield* handler.relevantRemovedRoots(tagChange(fieldChange.change, fieldRevision), delegate);\n\t}\n}\n\n/**\n * Adds any refreshers missing from the provided change that are relevant to the change and\n * removes any refreshers from the provided change that are not relevant to the change.\n * This function enforces that all relevant removed roots have a corresponding build or refresher.\n *\n * @param change - The change that possibly has missing or superfluous refreshers. Not mutated by this function.\n * @param getDetachedNode - The function to retrieve a tree chunk from the corresponding detached node id.\n * @param removedRoots - The set of removed roots that should be in memory for the given change to be applied.\n * Can be retrieved by calling {@link relevantRemovedRoots}.\n */\nexport function updateRefreshers(\n\tchange: TaggedChange<ModularChangeset>,\n\tgetDetachedNode: (id: DeltaDetachedNodeId) => TreeChunk | undefined,\n\tremovedRoots: Iterable<DeltaDetachedNodeId>,\n): ModularChangeset {\n\tconst refreshers: ChangeAtomIdMap<TreeChunk> = new Map();\n\n\tfor (const root of removedRoots) {\n\t\tif (change.change.builds !== undefined) {\n\t\t\t// if the root exists in the original builds map, it does not need to be added as a refresher\n\t\t\tconst original = tryGetFromNestedMap(change.change.builds, root.major, root.minor);\n\t\t\tif (original !== undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst node = getDetachedNode(root);\n\t\tassert(node !== undefined, 0x8cd /* detached node should exist */);\n\t\tsetInNestedMap(refreshers, root.major, root.minor, node);\n\t}\n\n\tconst { fieldChanges, maxId, revisions, constraintViolationCount, builds, destroys } =\n\t\tchange.change;\n\treturn makeModularChangeset(\n\t\tfieldChanges,\n\t\tmaxId,\n\t\trevisions,\n\t\tconstraintViolationCount,\n\t\tbuilds,\n\t\tdestroys,\n\t\trefreshers,\n\t);\n}\n\n/**\n * @param change - The change to convert into a delta.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function intoDelta(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): DeltaRoot {\n\tconst change = taggedChange.change;\n\t// Return an empty delta for changes with constraint violations\n\tif ((change.constraintViolationCount ?? 0) > 0) {\n\t\treturn emptyDelta;\n\t}\n\n\tconst revision = revisionFromTaggedChange(taggedChange);\n\tconst idAllocator = MemoizedIdRangeAllocator.fromNextId();\n\tconst rootDelta: Mutable<DeltaRoot> = {};\n\tconst fieldDeltas = intoDeltaImpl(change.fieldChanges, revision, idAllocator, fieldKinds);\n\tif (fieldDeltas.size > 0) {\n\t\trootDelta.fields = fieldDeltas;\n\t}\n\tif (change.builds && change.builds.size > 0) {\n\t\trootDelta.build = copyDetachedNodes(change.builds, revision);\n\t}\n\tif (change.destroys !== undefined && change.destroys.size > 0) {\n\t\tconst destroys: DeltaDetachedNodeDestruction[] = [];\n\t\tforEachInNestedMap(change.destroys, (count, major, minor) => {\n\t\t\tdestroys.push({\n\t\t\t\tid: makeDetachedNodeId(major ?? revision, minor),\n\t\t\t\tcount,\n\t\t\t});\n\t\t});\n\t\trootDelta.destroy = destroys;\n\t}\n\tif (change.refreshers && change.refreshers.size > 0) {\n\t\trootDelta.refreshers = copyDetachedNodes(change.refreshers, revision);\n\t}\n\treturn rootDelta;\n}\n\nfunction copyDetachedNodes(detachedNodes: ChangeAtomIdMap<TreeChunk>, revision?: RevisionTag) {\n\tconst copiedDetachedNodes: DeltaDetachedNodeBuild[] = [];\n\tforEachInNestedMap(detachedNodes, (chunk, major, minor) => {\n\t\tif (chunk.topLevelLength > 0) {\n\t\t\tconst trees = mapCursorField(chunk.cursor(), (c) =>\n\t\t\t\tcursorForMapTreeNode(mapTreeFromCursor(c)),\n\t\t\t);\n\t\t\tcopiedDetachedNodes.push({\n\t\t\t\tid: makeDetachedNodeId(major ?? revision, minor),\n\t\t\t\ttrees,\n\t\t\t});\n\t\t}\n\t});\n\treturn copiedDetachedNodes.length > 0 ? copiedDetachedNodes : undefined;\n}\n\n/**\n * @param change - The change to convert into a delta.\n * @param repairStore - The store to query for repair data.\n * @param path - The path of the node being altered by the change as defined by the input context.\n * Undefined for the root and for nodes that do not exist in the input context.\n */\nfunction intoDeltaImpl(\n\tchange: FieldChangeMap,\n\trevision: RevisionTag | undefined,\n\tidAllocator: MemoizedIdRangeAllocator,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Map<FieldKey, DeltaFieldChanges> {\n\tconst delta: Map<FieldKey, DeltaFieldChanges> = new Map();\n\tfor (const [field, fieldChange] of change) {\n\t\tconst fieldRevision = fieldChange.revision ?? revision;\n\t\tconst deltaField = getChangeHandler(fieldKinds, fieldChange.fieldKind).intoDelta(\n\t\t\ttagChange(fieldChange.change, fieldRevision),\n\t\t\t(childChange): DeltaFieldMap =>\n\t\t\t\tdeltaFromNodeChange(tagChange(childChange, fieldRevision), idAllocator, fieldKinds),\n\t\t\tidAllocator,\n\t\t);\n\t\tif (!isEmptyFieldChanges(deltaField)) {\n\t\t\tdelta.set(field, deltaField);\n\t\t}\n\t}\n\treturn delta;\n}\n\nfunction deltaFromNodeChange(\n\t{ change, revision }: TaggedChange<NodeChangeset>,\n\tidAllocator: MemoizedIdRangeAllocator,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): DeltaFieldMap {\n\tif (change.fieldChanges !== undefined) {\n\t\treturn intoDeltaImpl(change.fieldChanges, revision, idAllocator, fieldKinds);\n\t}\n\t// TODO: update the API to allow undefined to be returned here\n\treturn new Map();\n}\n\n/**\n * @internal\n * @param revInfos - This should describe all revisions in the rebase path, even if not part of the current base changeset.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `revInfos` must include\n * the changes [A⁻¹ X, Y, A'] for each rebase step of B.\n * @param baseRevisions - The set of revisions in the changeset being rebased over.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `baseRevisions` must include\n * revisions [A⁻¹ X, Y, A'] if rebasing over the composition of all those changes, or\n * revision [A⁻¹] for the first rebase, then [X], etc. if rebasing over edits individually.\n * @returns - RebaseRevisionMetadata to be passed to `FieldChangeRebaser.rebase`*\n */\nexport function rebaseRevisionMetadataFromInfo(\n\trevInfos: readonly RevisionInfo[],\n\tbaseRevisions: (RevisionTag | undefined)[],\n): RebaseRevisionMetadata {\n\tconst filteredRevisions: RevisionTag[] = [];\n\tfor (const revision of baseRevisions) {\n\t\tif (revision !== undefined) {\n\t\t\tfilteredRevisions.push(revision);\n\t\t}\n\t}\n\n\tconst getBaseRevisions = () => filteredRevisions;\n\treturn {\n\t\t...revisionMetadataSourceFromInfo(revInfos),\n\t\tgetBaseRevisions,\n\t};\n}\n\nfunction isEmptyNodeChangeset(change: NodeChangeset): boolean {\n\treturn change.fieldChanges === undefined && change.nodeExistsConstraint === undefined;\n}\n\nexport function getFieldKind(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FieldKindWithEditor {\n\tif (kind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind;\n\t}\n\tconst fieldKind = fieldKinds.get(kind);\n\tassert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n\treturn withEditor(fieldKind);\n}\n\nexport function getChangeHandler(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,\n\tkind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\treturn getFieldKind(fieldKinds, kind).changeHandler;\n}\n\n// TODO: TFieldData could instead just be a numeric ID generated by the CrossFieldTable\n// The CrossFieldTable could have a generic field ID to context table\ninterface CrossFieldTable<TFieldData> {\n\tsrcTable: CrossFieldMap<unknown>;\n\tdstTable: CrossFieldMap<unknown>;\n\tsrcDependents: CrossFieldMap<TFieldData>;\n\tdstDependents: CrossFieldMap<TFieldData>;\n\tinvalidatedFields: Set<TFieldData>;\n}\n\ninterface InvertTable extends CrossFieldTable<FieldChange> {\n\toriginalFieldToContext: Map<FieldChange, InvertContext>;\n}\n\ninterface InvertContext {\n\tinvertedField: FieldChange;\n\trevision: RevisionTag | undefined;\n}\n\ninterface RebaseTable extends CrossFieldTable<FieldChange> {\n\t/**\n\t * Maps from the FieldChange key used for the CrossFieldTable (which is the FieldChange being rebased)\n\t * to context for the field.\n\t */\n\tfieldToContext: Map<FieldChange, RebaseFieldContext>;\n\t/**\n\t * This map caches the output of a prior rebasing computation for a node, keyed on that computation's input.\n\t * The input for such a computation is characterized by a pair of node changesets:\n\t * - The node changeset from the input changeset being rebased\n\t * - The corresponding node changeset from the changeset being rebased over.\n\t *\n\t * Either of these may be undefined so we adopt the following convention:\n\t * - If the node changeset from the changeset being rebased is defined, then we use that as the key\n\t * - Otherwise, if the node changeset from the changeset being rebased over is defined, then we use that as the key\n\t * - Otherwise, we don't cache the output (which will be undefined anyway).\n\t *\n\t * This map is needed once we switch from the initial pass (which generates a new changeset) to the second pass which\n\t * performs surgery on the changeset generated in the first pass: we don't want to re-run the rebasing of nested\n\t * changes. Instead we want to keep using the objects generated in the first pass and mutate them where needed.\n\t */\n\trebasedNodeCache: Map<NodeChangeset, NodeChangeset>;\n}\n\ninterface RebaseFieldContext {\n\tbaseChange: FieldChange;\n\tbaseRevision: RevisionTag | undefined;\n\tnewChange: FieldChange;\n\trebasedChange: FieldChange;\n}\n\nfunction newComposeTable(): ComposeTable {\n\treturn {\n\t\t...newCrossFieldTable<FieldChange>(),\n\t\tfieldToContext: new Map(),\n\t\tnodeCache: new Map(),\n\t};\n}\n\ninterface ComposeTable extends CrossFieldTable<FieldChange> {\n\t/**\n\t * Maps from an input changeset for a field (from change1 if it has one, from change2 otherwise) to the context for that field.\n\t */\n\tfieldToContext: Map<FieldChange, ComposeFieldContext>;\n\n\t/**\n\t * Maps from an input changeset for a node (from change2 if it has one) to the cached composition of the changesets for that node.\n\t */\n\tnodeCache: Map<NodeChangeset, NodeChangeset>;\n}\n\ninterface ComposeFieldContext {\n\tchange1: TaggedChange<FieldChangeset>;\n\tchange2: TaggedChange<FieldChangeset>;\n\tcomposedChange: FieldChange;\n}\n\nfunction newCrossFieldTable<T>(): CrossFieldTable<T> {\n\treturn {\n\t\tsrcTable: new Map(),\n\t\tdstTable: new Map(),\n\t\tsrcDependents: new Map(),\n\t\tdstDependents: new Map(),\n\t\tinvalidatedFields: new Set(),\n\t};\n}\n\nfunction composeCacheKeyFromNodeChangesets(\n\tchange1: NodeChangeset | undefined,\n\tchange2: NodeChangeset | undefined,\n): NodeChangeset {\n\t// Note that it is important that the key is `change2 ?? change1` and not `change1 ?? change2`.\n\t// If the first changeset moves this node, the change handler may not have seen the second changeset's\n\t// changes for this node on its first pass.\n\t// In that case we will have cached an entry the call to `compose(change1, undefined)`, and we must make sure\n\t// not to reuse the cached entry if a subsequent pass calls `compose(change1, change2)`.\n\treturn change2 ?? change1 ?? fail(\"Should not compose two undefined changesets\");\n}\n\n/**\n * @internal\n */\ninterface ConstraintState {\n\tviolationCount: number;\n}\n\nfunction newConstraintState(violationCount: number): ConstraintState {\n\treturn {\n\t\tviolationCount,\n\t};\n}\n\ninterface CrossFieldManagerI<T> extends CrossFieldManager {\n\ttable: CrossFieldTable<T>;\n}\n\nfunction newCrossFieldManager<T>(\n\tcrossFieldTable: CrossFieldTable<T>,\n\tcurrentFieldKey: T,\n\tallowInval = true,\n): CrossFieldManagerI<T> {\n\tconst getMap = (target: CrossFieldTarget) =>\n\t\ttarget === CrossFieldTarget.Source ? crossFieldTable.srcTable : crossFieldTable.dstTable;\n\n\tconst getDependents = (target: CrossFieldTarget) =>\n\t\ttarget === CrossFieldTarget.Source\n\t\t\t? crossFieldTable.srcDependents\n\t\t\t: crossFieldTable.dstDependents;\n\n\tconst manager = {\n\t\ttable: crossFieldTable,\n\n\t\tset: (\n\t\t\ttarget: CrossFieldTarget,\n\t\t\trevision: RevisionTag | undefined,\n\t\t\tid: ChangesetLocalId,\n\t\t\tcount: number,\n\t\t\tnewValue: unknown,\n\t\t\tinvalidateDependents: boolean,\n\t\t) => {\n\t\t\tif (invalidateDependents && allowInval) {\n\t\t\t\tconst lastChangedId = (id as number) + count - 1;\n\t\t\t\tlet firstId = id;\n\t\t\t\twhile (firstId <= lastChangedId) {\n\t\t\t\t\tconst dependentEntry = getFirstFromCrossFieldMap(\n\t\t\t\t\t\tgetDependents(target),\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tfirstId,\n\t\t\t\t\t\tlastChangedId - firstId + 1,\n\t\t\t\t\t);\n\t\t\t\t\tif (dependentEntry.value !== undefined) {\n\t\t\t\t\t\tcrossFieldTable.invalidatedFields.add(dependentEntry.value);\n\t\t\t\t\t}\n\n\t\t\t\t\tfirstId = brand(firstId + dependentEntry.length);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetInCrossFieldMap(getMap(target), revision, id, count, newValue);\n\t\t},\n\n\t\tget: (\n\t\t\ttarget: CrossFieldTarget,\n\t\t\trevision: RevisionTag | undefined,\n\t\t\tid: ChangesetLocalId,\n\t\t\tcount: number,\n\t\t\taddDependency: boolean,\n\t\t) => {\n\t\t\tif (addDependency) {\n\t\t\t\t// We assume that if there is already an entry for this ID it is because\n\t\t\t\t// a field handler has called compose on the same node multiple times.\n\t\t\t\t// In this case we only want to update the latest version, so we overwrite the dependency.\n\t\t\t\tsetInCrossFieldMap(getDependents(target), revision, id, count, currentFieldKey);\n\t\t\t}\n\t\t\treturn getFirstFromCrossFieldMap(getMap(target), revision, id, count);\n\t\t},\n\t};\n\n\treturn manager;\n}\n\nfunction makeModularChangeset(\n\tchanges: FieldChangeMap | undefined = undefined,\n\tmaxId: number = -1,\n\trevisions: readonly RevisionInfo[] | undefined = undefined,\n\tconstraintViolationCount: number | undefined = undefined,\n\tbuilds?: ChangeAtomIdMap<TreeChunk>,\n\tdestroys?: ChangeAtomIdMap<number>,\n\trefreshers?: ChangeAtomIdMap<TreeChunk>,\n): ModularChangeset {\n\tconst changeset: Mutable<ModularChangeset> = { fieldChanges: changes ?? new Map() };\n\tif (revisions !== undefined && revisions.length > 0) {\n\t\tchangeset.revisions = revisions;\n\t}\n\tif (maxId >= 0) {\n\t\tchangeset.maxId = brand(maxId);\n\t}\n\tif (constraintViolationCount !== undefined && constraintViolationCount > 0) {\n\t\tchangeset.constraintViolationCount = constraintViolationCount;\n\t}\n\tif (builds !== undefined && builds.size > 0) {\n\t\tchangeset.builds = builds;\n\t}\n\tif (destroys !== undefined && destroys.size > 0) {\n\t\tchangeset.destroys = destroys;\n\t}\n\tif (refreshers !== undefined && refreshers.size > 0) {\n\t\tchangeset.refreshers = refreshers;\n\t}\n\treturn changeset;\n}\n\nexport class ModularEditBuilder extends EditBuilder<ModularChangeset> {\n\tprivate transactionDepth: number = 0;\n\tprivate idAllocator: IdAllocator;\n\n\tpublic constructor(\n\t\tfamily: ChangeFamily<ChangeFamilyEditor, ModularChangeset>,\n\t\tchangeReceiver: (change: ModularChangeset) => void,\n\t) {\n\t\tsuper(family, changeReceiver);\n\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t}\n\n\tpublic override enterTransaction(): void {\n\t\tthis.transactionDepth += 1;\n\t\tif (this.transactionDepth === 1) {\n\t\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t\t}\n\t}\n\n\tpublic override exitTransaction(): void {\n\t\tassert(this.transactionDepth > 0, 0x5b9 /* Cannot exit inexistent transaction */);\n\t\tthis.transactionDepth -= 1;\n\t\tif (this.transactionDepth === 0) {\n\t\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t\t}\n\t}\n\n\t/**\n\t * @param firstId - The ID to associate with the first node\n\t * @param content - The node(s) to build. Can be in either Field or Node mode.\n\t * @returns A description of the edit that can be passed to `submitChanges`.\n\t */\n\tpublic buildTrees(\n\t\tfirstId: ChangesetLocalId,\n\t\tcontent: ITreeCursorSynchronous,\n\t): GlobalEditDescription {\n\t\tif (content.mode === CursorLocationType.Fields && content.getFieldLength() === 0) {\n\t\t\treturn { type: \"global\" };\n\t\t}\n\t\tconst builds: ChangeAtomIdMap<TreeChunk> = new Map();\n\t\tconst innerMap = new Map();\n\t\tbuilds.set(undefined, innerMap);\n\t\tconst chunk =\n\t\t\tcontent.mode === CursorLocationType.Fields\n\t\t\t\t? chunkFieldSingle(content, defaultChunkPolicy)\n\t\t\t\t: chunkTree(content, defaultChunkPolicy);\n\t\tinnerMap.set(firstId, chunk);\n\n\t\treturn {\n\t\t\ttype: \"global\",\n\t\t\tbuilds,\n\t\t};\n\t}\n\n\t/**\n\t * Adds a change to the edit builder\n\t * @param field - the field which is being edited\n\t * @param fieldKind - the kind of the field\n\t * @param change - the change to the field\n\t * @param maxId - the highest `ChangesetLocalId` used in this change\n\t */\n\tpublic submitChange(\n\t\tfield: FieldUpPath,\n\t\tfieldKind: FieldKindIdentifier,\n\t\tchange: FieldChangeset,\n\t\tmaxId: ChangesetLocalId = brand(-1),\n\t): void {\n\t\tconst modularChange = this.buildChange(field, fieldKind, change, maxId);\n\t\tthis.applyChange(modularChange);\n\t}\n\n\t/**\n\t * Adds a change to the edit builder\n\t * @param field - the field which is being edited\n\t * @param fieldKind - the kind of the field\n\t * @param change - the change to the field\n\t * @param maxId - the highest `ChangesetLocalId` used in this change\n\t */\n\tpublic buildChange(\n\t\tfield: FieldUpPath,\n\t\tfieldKind: FieldKindIdentifier,\n\t\tchange: FieldChangeset,\n\t\tmaxId: ChangesetLocalId = brand(-1),\n\t): ModularChangeset {\n\t\tconst changeMap = this.buildChangeMap(field, fieldKind, change);\n\t\treturn makeModularChangeset(changeMap, maxId);\n\t}\n\n\tpublic submitChanges(changes: EditDescription[], maxId: ChangesetLocalId = brand(-1)) {\n\t\tconst modularChange = this.buildChanges(changes, maxId);\n\t\tthis.applyChange(modularChange);\n\t}\n\n\tpublic buildChanges(\n\t\tchanges: EditDescription[],\n\t\tmaxId: ChangesetLocalId = brand(-1),\n\t): ModularChangeset {\n\t\tconst changeMaps = changes.map((change) =>\n\t\t\tmakeAnonChange(\n\t\t\t\tchange.type === \"global\"\n\t\t\t\t\t? makeModularChangeset(\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tchange.builds,\n\t\t\t\t\t )\n\t\t\t\t\t: makeModularChangeset(\n\t\t\t\t\t\t\tthis.buildChangeMap(change.field, change.fieldKind, change.change),\n\t\t\t\t\t ),\n\t\t\t),\n\t\t);\n\t\tconst composedChange = this.changeFamily.rebaser.compose(changeMaps);\n\t\tif (maxId >= 0) {\n\t\t\tcomposedChange.maxId = maxId;\n\t\t}\n\t\treturn composedChange;\n\t}\n\n\tpublic generateId(count?: number): ChangesetLocalId {\n\t\treturn brand(this.idAllocator.allocate(count));\n\t}\n\n\tprivate buildChangeMap(\n\t\tfield: FieldUpPath,\n\t\tfieldKind: FieldKindIdentifier,\n\t\tchange: FieldChangeset,\n\t): FieldChangeMap {\n\t\tlet fieldChangeMap: FieldChangeMap = new Map([[field.field, { fieldKind, change }]]);\n\n\t\tlet remainingPath = field.parent;\n\t\twhile (remainingPath !== undefined) {\n\t\t\tconst nodeChange: NodeChangeset = { fieldChanges: fieldChangeMap };\n\t\t\tconst fieldChange = genericFieldKind.changeHandler.editor.buildChildChange(\n\t\t\t\tremainingPath.parentIndex,\n\t\t\t\tnodeChange,\n\t\t\t);\n\t\t\tfieldChangeMap = new Map([\n\t\t\t\t[\n\t\t\t\t\tremainingPath.parentField,\n\t\t\t\t\t{ fieldKind: genericFieldKind.identifier, change: brand(fieldChange) },\n\t\t\t\t],\n\t\t\t]);\n\t\t\tremainingPath = remainingPath.parent;\n\t\t}\n\n\t\treturn fieldChangeMap;\n\t}\n\n\tpublic addNodeExistsConstraint(path: UpPath): void {\n\t\tconst nodeChange: NodeChangeset = {\n\t\t\tnodeExistsConstraint: { violated: false },\n\t\t};\n\t\tconst fieldChange = genericFieldKind.changeHandler.editor.buildChildChange(\n\t\t\tpath.parentIndex,\n\t\t\tnodeChange,\n\t\t);\n\t\tthis.submitChange(\n\t\t\t{ parent: path.parent, field: path.parentField },\n\t\t\tgenericFieldKind.identifier,\n\t\t\tbrand(fieldChange),\n\t\t);\n\t}\n}\n\n/**\n * @internal\n */\nexport interface FieldEditDescription {\n\ttype: \"field\";\n\tfield: FieldUpPath;\n\tfieldKind: FieldKindIdentifier;\n\tchange: FieldChangeset;\n}\n\n/**\n * @internal\n */\nexport interface GlobalEditDescription {\n\ttype: \"global\";\n\tbuilds?: ChangeAtomIdMap<TreeChunk>;\n}\n\n/**\n * @internal\n */\nexport type EditDescription = FieldEditDescription | GlobalEditDescription;\n\nfunction getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {\n\trevInfos: RevisionInfo[];\n\tmaxId: ChangesetLocalId;\n} {\n\tlet maxId = -1;\n\tconst revInfos: RevisionInfo[] = [];\n\tfor (const taggedChange of changes) {\n\t\tconst change = taggedChange.change;\n\t\tmaxId = Math.max(change.maxId ?? -1, maxId);\n\t\trevInfos.push(...revisionInfoFromTaggedChange(taggedChange));\n\t}\n\n\tconst revisions = new Set<RevisionTag>();\n\tconst rolledBackRevisions: RevisionTag[] = [];\n\tfor (const info of revInfos) {\n\t\trevisions.add(info.revision);\n\t\tif (info.rollbackOf !== undefined) {\n\t\t\trolledBackRevisions.push(info.rollbackOf);\n\t\t}\n\t}\n\n\trolledBackRevisions.reverse();\n\tfor (const revision of rolledBackRevisions) {\n\t\tif (!revisions.has(revision)) {\n\t\t\trevInfos.push({ revision });\n\t\t}\n\t}\n\n\treturn { maxId: brand(maxId), revInfos };\n}\n\nfunction revisionInfoFromTaggedChange(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n): RevisionInfo[] {\n\tconst revInfos: RevisionInfo[] = [];\n\tif (taggedChange.change.revisions !== undefined) {\n\t\trevInfos.push(...taggedChange.change.revisions);\n\t} else if (taggedChange.revision !== undefined) {\n\t\tconst info: Mutable<RevisionInfo> = { revision: taggedChange.revision };\n\t\tif (taggedChange.rollbackOf !== undefined) {\n\t\t\tinfo.rollbackOf = taggedChange.rollbackOf;\n\t\t}\n\t\trevInfos.push(info);\n\t}\n\treturn revInfos;\n}\n\nfunction revisionFromTaggedChange(change: TaggedChange<ModularChangeset>): RevisionTag | undefined {\n\treturn change.revision ?? revisionFromRevInfos(change.change.revisions);\n}\n\nfunction revisionFromRevInfos(\n\trevInfos: undefined | readonly RevisionInfo[],\n): RevisionTag | undefined {\n\tif (revInfos === undefined || revInfos.length !== 1) {\n\t\treturn undefined;\n\t}\n\treturn revInfos[0].revision;\n}\n"]}
1
+ {"version":3,"file":"modularChangeFamily.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFamily.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAC7D,gEAAkD;AAGlD,kDAiC6B;AAC7B,kDAiB6B;AAC7B,yDAKoC;AACpC,0DAA8E;AAC9E,gFAA0E;AAE1E,iEAMgC;AAChC,mEAIiC;AACjC,qEAA2E;AAC3E,+DAAoG;AAWpG;;;GAGG;AACH,MAAa,mBAAmB;IAO/B,YACC,UAAiE,EACjD,MAA6D;QAA7D,WAAM,GAAN,MAAM,CAAuD;QAE7E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAC5B,OAAgC,EAChC,OAAgC,EAChC,KAAkB,EAClB,gBAAwC;QAMxC,mEAAmE;QACnE,MAAM,IAAI,GACT,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,sCAAgB,CAAC,UAAU;YACzE,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,sCAAgB,CAAC,UAAU,CAAC;QAEtD,IAAI,IAAI,KAAK,sCAAgB,CAAC,UAAU,EAAE;YACzC,8BAA8B;YAC9B,OAAO;gBACN,SAAS,EAAE,sCAAgB;gBAC3B,OAAO,EAAE,OAAO,EAAE,MAAM;gBACxB,OAAO,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC;SACF;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC;QACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAClD,OAAO,EACP,OAAO,EACP,KAAK,EACL,gBAAgB,CAChB,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAClD,OAAO,EACP,OAAO,EACP,KAAK,EACL,gBAAgB,CAChB,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC9E,CAAC;IAEO,oBAAoB,CAC3B,WAAoC,EACpC,OAA8B,EAC9B,KAAkB,EAClB,gBAAwC;QAExC,IAAI,WAAW,KAAK,SAAS,EAAE;YAC9B,OAAO,SAAS,CAAC;SACjB;QAED,IAAI,WAAW,CAAC,SAAS,KAAK,sCAAgB,CAAC,UAAU,EAAE;YAC1D,OAAO,WAAW,CAAC,MAAM,CAAC;SAC1B;QAED,mDAAmD;QACnD,MAAM,aAAa,GAAG,WAAW,CAAC,MAAqC,CAAC;QACxE,MAAM,eAAe,GAAG,IAAA,0CAAoB,EAC3C,aAAa,EACb,OAAO,EACP,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YAClB,IAAA,iBAAM,EACL,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAC5C,KAAK,CAAC,+CAA+C,CACrD,CAAC;YAEF,OAAO,MAAM,IAAI,MAAM,IAAI,IAAA,eAAI,EAAC,2CAA2C,CAAC,CAAC;QAC9E,CAAC,EACD,KAAK,EACL,gBAAgB,CACE,CAAC;QAEpB,OAAO,eAAe,CAAC;IACxB,CAAC;IAEM,OAAO,CAAC,OAAyC;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,CAC/D,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAsB,EAAE,KAAK,EAAE,CAAC;QAE7C,OAAO,aAAa,CAAC,MAAM,CAC1B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACpB,IAAA,yBAAc,EAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EACtE,IAAA,yBAAc,EAAC,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CACnE,CAAC,MAAM,CAAC;IACV,CAAC;IAEO,WAAW,CAClB,OAAuC,EACvC,OAAuC,EACvC,QAAwB,EACxB,OAA0B;QAE1B,MAAM,KAAK,GAAgB,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAA2B,IAAA,yCAA8B,EAAC,QAAQ,CAAC,CAAC;QAE1F,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;QAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC3C,OAAO,CAAC,MAAM,CAAC,YAAY,EAC3B,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,MAAM,CAAC,YAAY,EAC3B,OAAO,CAAC,QAAQ,EAChB,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;QAEF,MAAM,mBAAmB,GAAmC,IAAI,GAAG,EAAE,CAAC;QACtE,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE;YACjE,IAAI,CAAC,gBAAgB,CACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAC1B,OAAO,CAAC,MAAM,CAAC,WAAW,EAC1B,mBAAmB,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,QAAQ,EACnB,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;SACF;QAED,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAEvC,OAAO,eAAe,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;YAClD,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC;YACzD,eAAe,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC9C,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;gBACzC,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAChE,IAAA,iBAAM,EACL,OAAO,KAAK,SAAS,EACrB,KAAK,CAAC,qDAAqD,CAC3D,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;gBAEjF,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;gBACjF,MAAM,YAAY,GAAG,CACpB,MAA0B,EAC1B,MAA0B,EACjB,EAAE;oBACX,IACC,MAAM,KAAK,SAAS;wBACpB,CAAC,IAAA,4BAAiB,EAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAC3E;wBACD,MAAM,SAAS,GACd,MAAM,KAAK,SAAS;4BACnB,CAAC,CAAC,IAAA,oBAAS,EAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;4BAC1C,CAAC,CAAC,SAAS,CAAC;wBAEd,MAAM,SAAS,GACd,MAAM,KAAK,SAAS;4BACnB,CAAC,CAAC,IAAA,oBAAS,EAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;4BAC1C,CAAC,CAAC,SAAS,CAAC;wBAEd,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;wBACzD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;4BACjD,IAAA,yBAAc,EACb,eAAe,CAAC,OAAO,EACvB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CACd,CAAC;yBACF;qBACD;oBACD,OAAO,CACN,IAAA,0BAAe,EAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;wBAC9C,IAAA,0BAAe,EAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;wBAC9C,IAAA,eAAI,EAAC,wCAAwC,CAAC,CAC9C,CAAC;gBACH,CAAC,CAAC;gBAEF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CACpC,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,oBAAoB,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,EACzD,gBAAgB,CAChB,CAAC;gBACF,cAAc,CAAC,MAAM,GAAG,IAAA,gBAAK,EAAC,aAAa,CAAC,CAAC;gBAE7C,sCAAsC;gBACtC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE;oBACjE,IAAI,CAAC,gBAAgB,CACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAC1B,OAAO,CAAC,MAAM,CAAC,WAAW,EAC1B,mBAAmB,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,QAAQ,EACnB,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;iBACF;gBAED,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aACvC;SACD;QAED,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,kCAAkC,CAAC;YACpF,OAAO;YACP,OAAO;SACP,CAAC,CAAC;QAEH,OAAO,oBAAoB,CAC1B,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,mBAAmB,CAAC,EACvD,mBAAmB,EACnB,OAAO,CAAC,KAAK,EACb,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,CACb,CAAC;IACH,CAAC;IAEO,gBAAgB,CACvB,OAAmC,EACnC,SAAkC,EAClC,OAAmC,EACnC,SAAkC,EAClC,KAAkB,EAClB,eAA6B,EAC7B,gBAAwC;QAExC,MAAM,cAAc,GAAmB,IAAI,GAAG,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAY,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAClB;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAClB;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,MAAM,YAAY,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,EACL,SAAS,EACT,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,sBAAsB,GAC/B,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,EAAE,YAAY,IAAI,YAAY,CAAC,CAAC;YACpF,MAAM,aAAa,GAAG,IAAA,oBAAS,EAC9B,sBAAsB,IAAI,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,EAC/D,YAAY,EAAE,QAAQ,IAAI,SAAS,CACnC,CAAC;YACF,MAAM,aAAa,GAAG,IAAA,oBAAS,EAC9B,sBAAsB,IAAI,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,EAC/D,YAAY,EAAE,QAAQ,IAAI,SAAS,CACnC,CAAC;YAEF,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAC7D,aAAa,EACb,aAAa,EACb,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBAClB,MAAM,SAAS,GACd,MAAM,KAAK,SAAS;oBACnB,CAAC,CAAC,IAAA,oBAAS,EAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;oBAC3C,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,SAAS,GACd,MAAM,KAAK,SAAS;oBACnB,CAAC,CAAC,IAAA,oBAAS,EAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;oBAC3C,CAAC,CAAC,SAAS,CAAC;gBAEd,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBACzD,IAAI,MAAM,KAAK,SAAS,EAAE;oBACzB,IAAA,yBAAc,EAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;iBACzE;gBACD,OAAO,CACN,IAAA,0BAAe,EAAC,MAAM,EAAE,SAAS,CAAC;oBAClC,IAAA,0BAAe,EAAC,MAAM,EAAE,SAAS,CAAC;oBAClC,IAAA,eAAI,EAAC,wCAAwC,CAAC,CAC9C,CAAC;YACH,CAAC,EACD,KAAK,EACL,OAAO,EACP,gBAAgB,CAChB,CAAC;YAEF,MAAM,aAAa,GAAgB;gBAClC,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,MAAM,EAAE,IAAA,gBAAK,EAAC,cAAc,CAAC;aAC7B,CAAC;YAEF,MAAM,QAAQ,GACb,YAAY,IAAI,YAAY,IAAI,IAAA,eAAI,EAAC,wCAAwC,CAAC,CAAC;YAEhF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC5C,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,cAAc,EAAE,aAAa;aAC7B,CAAC,CAAC;YAEH,mEAAmE;YACnE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACzC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAEO,gBAAgB,CACvB,YAA4C,EAC5C,YAA4C,EAC5C,mBAAmD,EACnD,GAAuB,EACvB,SAAkC,EAClC,GAAuB,EACvB,SAAkC,EAClC,WAAwB,EACxB,eAA6B,EAC7B,gBAAwC;QAExC,MAAM,cAAc,GACnB,GAAG,KAAK,SAAS;YAChB,CAAC,CAAC,IAAA,8BAAmB,EAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;gBAC5D,IAAA,eAAI,EAAC,iBAAiB,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GACnB,GAAG,KAAK,SAAS;YAChB,CAAC,CAAC,IAAA,8BAAmB,EAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;gBAC5D,IAAA,eAAI,EAAC,iBAAiB,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CACpD,cAAc,EACd,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACX,eAAe,EACf,gBAAgB,CAChB,CAAC;QAEF,MAAM,MAAM,GACX,IAAA,0BAAe,EAAC,GAAG,EAAE,SAAS,CAAC;YAC/B,IAAA,0BAAe,EAAC,GAAG,EAAE,SAAS,CAAC;YAC/B,IAAA,eAAI,EAAC,2CAA2C,CAAC,CAAC;QACnD,IAAA,yBAAc,EAAC,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAC7F,CAAC;IAEO,kBAAkB,CACzB,OAAkC,EAClC,SAAkC,EAClC,OAAkC,EAClC,SAAkC,EAClC,KAAkB,EAClB,eAA6B,EAC7B,gBAAwC;QAExC,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAE,oBAAoB,CAAC;QAE5F,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CACjD,OAAO,EAAE,YAAY,EACrB,SAAS,EACT,OAAO,EAAE,YAAY,EACrB,SAAS,EACT,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;QACF,MAAM,kBAAkB,GAAkB,EAAE,CAAC;QAE7C,IAAI,oBAAoB,CAAC,IAAI,GAAG,CAAC,EAAE;YAClC,kBAAkB,CAAC,YAAY,GAAG,oBAAoB,CAAC;SACvD;QAED,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACvC,kBAAkB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;SAC/D;QAED,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAsC,EAAE,UAAmB;QACxE,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;YACtD,OAAO,oBAAoB,EAAE,CAAC;SAC9B;QAED,MAAM,OAAO,GAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACxE,iFAAiF;QACjF,gFAAgF;QAChF,6EAA6E;QAC7E,MAAM,KAAK,GAAgB,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;QACzD,MAAM,eAAe,GAAgB;YACpC,GAAG,kBAAkB,EAAe;YACpC,sBAAsB,EAAE,IAAI,GAAG,EAAE;SACjC,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAA,yCAA8B,EAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CACzC,IAAA,oBAAS,EAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,EACvE,UAAU,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;QAEF,MAAM,aAAa,GAAmC,IAAI,GAAG,EAAE,CAAC;QAChE,IAAA,6BAAkB,EAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YAClF,IAAA,yBAAc,EACb,aAAa,EACb,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,gBAAgB;YACpB,4DAA4D;YAC5D,IAAA,oBAAS,EAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,EACzC,UAAU,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;YAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC;YACzD,eAAe,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC9C,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;gBACzC,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACxE,IAAA,iBAAM,EACL,OAAO,KAAK,SAAS,EACrB,KAAK,CAAC,qDAAqD,CAC3D,CAAC;gBACF,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;gBAE5C,MAAM,aAAa,GAAG,gBAAgB,CACrC,IAAI,CAAC,UAAU,EACf,WAAW,CAAC,SAAS,CACrB,CAAC,OAAO,CAAC,MAAM,CACf,IAAA,oBAAS,EAAC,mBAAmB,EAAE,QAAQ,CAAC,EACxC,UAAU,EACV,KAAK,EACL,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,EAClD,gBAAgB,CAChB,CAAC;gBACF,aAAa,CAAC,MAAM,GAAG,IAAA,gBAAK,EAAC,aAAa,CAAC,CAAC;aAC5C;SACD;QAED,iFAAiF;QACjF,MAAM,QAAQ,GAAG,UAAU;YAC1B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;QAEb,wEAAwE;QACxE,IAAA,iBAAM,EACL,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EACpC,KAAK,CAAC,6CAA6C,CACnD,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,OAAO,oBAAoB,CAC1B,cAAc,EACd,aAAa,EACb,OAAO,CAAC,KAAK,EACb,OAAO,KAAK,SAAS;YACpB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,UAAU;gBACX,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CACpB,CAAC,OAAO,EAAE,EACd,MAAM,CAAC,MAAM,CAAC,wBAAwB,EACtC,SAAS,EACT,QAAQ,CACR,CAAC;IACH,CAAC;IAEO,cAAc,CACrB,OAAqC,EACrC,UAAmB,EACnB,KAAkB,EAClB,eAA4B,EAC5B,gBAAwC;QAExC,MAAM,cAAc,GAAmB,IAAI,GAAG,EAAE,CAAC;QAEjD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;YAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;YAEhF,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,cAAc,GAAG,gBAAgB,CACtC,IAAI,CAAC,UAAU,EACf,WAAW,CAAC,SAAS,CACrB,CAAC,OAAO,CAAC,MAAM,CACf,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EACxC,UAAU,EACV,KAAK,EACL,OAAO,EACP,gBAAgB,CAChB,CAAC;YAEF,MAAM,mBAAmB,GAAgB;gBACxC,GAAG,WAAW;gBACd,MAAM,EAAE,IAAA,gBAAK,EAAC,cAAc,CAAC;aAC7B,CAAC;YACF,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YAE/C,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvD,aAAa,EAAE,mBAAmB;gBAClC,QAAQ;aACR,CAAC,CAAC;SACH;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAEO,gBAAgB,CACvB,MAAmC,EACnC,UAAmB,EACnB,KAAkB,EAClB,eAA4B,EAC5B,gBAAwC;QAExC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;YAC7C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CACzC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EACjD,UAAU,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,CAChB,CAAC;SACF;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAEM,MAAM,CACZ,MAAwB,EACxB,IAAoC,EACpC,gBAAwC;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAsB,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAgB,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;QACzD,MAAM,eAAe,GAAgB;YACpC,GAAG,kBAAkB,EAAe;YACpC,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,gBAAgB,EAAE,IAAI,GAAG,EAAE;YAC3B,WAAW,EAAE,EAAE;SACf,CAAC;QAEF,IAAI,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;QAE/E,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAC7B,4BAA4B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjE,MAAM,cAAc,GAAG;YACtB,GAAG,gBAAgB;YACnB,gBAAgB;SAChB,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CACxC,MAAM,CAAC,YAAY,EACnB,IAAA,oBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,EACnE,KAAK,EACL,eAAe,EACf,GAAG,EAAE,CAAC,IAAI,EACV,cAAc,EACd,eAAe,CACf,CAAC;QAEF,MAAM,YAAY,GAAmC,IAAI,GAAG,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE;YAChF,MAAM,aAAa,GAClB,KAAK,KAAK,SAAS;gBAClB,CAAC,CAAC,IAAA,8BAAmB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;gBACxE,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,oBAAoB,GACzB,YAAY,KAAK,SAAS;gBACzB,CAAC,CAAC,IAAA,oBAAS,EACT,IAAA,8BAAmB,EAClB,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,YAAY,CAAC,MAAM,CAAC,QAAQ,EAC5B,YAAY,CAAC,MAAM,CAAC,OAAO,CAC3B,IAAI,IAAA,eAAI,EAAC,iBAAiB,CAAC,EAC5B,YAAY,CAAC,QAAQ,CACpB;gBACH,CAAC,CAAC,IAAA,yBAAc,EAAC,EAAE,CAAC,CAAC;YAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CACxC,aAAa,EACb,oBAAoB,EACpB,KAAK,EACL,eAAe,EACf,GAAG,EAAE,CAAC,IAAI,EACV,cAAc,EACd,eAAe,EACf,cAAc,CACd,CAAC;YAEF,IAAI,WAAW,KAAK,SAAS,EAAE;gBAC9B,MAAM,MAAM,GACX,KAAK;oBACL,IAAA,uBAAY,EACX,YAAY,EAAE,MAAM,IAAI,IAAA,eAAI,EAAC,mCAAmC,CAAC,EACjE,YAAY,EAAE,QAAQ,CACtB,CAAC;gBAEH,IAAA,yBAAc,EAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aAC3E;SACD;QAED,IAAI,eAAe,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;YAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC;YACzD,eAAe,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC9C,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;gBACnC,+DAA+D;gBAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1D,IAAA,iBAAM,EAAC,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAC7E,MAAM,EACL,SAAS,EACT,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,aAAa,GACtB,GAAG,IAAI,CAAC,qBAAqB,CAC7B,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,EAClB,KAAK,EACL,gBAAgB,CAChB,CAAC;gBAEF,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CACpE,cAAc,EACd,IAAA,oBAAS,EAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,EAC9C,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,EACpC,KAAK,EACL,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,EAC5C,cAAc,CACd,CAAC;aACF;SACD;QAED,OAAO,oBAAoB,CAC1B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,EAC/C,YAAY,EACZ,OAAO,CAAC,KAAK,EACb,MAAM,CAAC,SAAS,EAChB,eAAe,CAAC,cAAc,EAC9B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CACjB,CAAC;IACH,CAAC;IAEO,cAAc,CACrB,MAAsB,EACtB,IAAkC,EAClC,KAAkB,EAClB,eAA4B,EAC5B,WAAqF,EACrF,gBAAwC,EACxC,eAAgC,EAChC,iBAAqC,0CAAkB,CAAC,KAAK;QAE7D,MAAM,aAAa,GAAmB,IAAI,GAAG,EAAE,CAAC;QAEhD,gDAAgD;QAChD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBACjD,SAAS;aACT;YAED,MAAM,WAAW,GAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;gBACrD,SAAS,EAAE,sCAAgB,CAAC,UAAU;gBACtC,MAAM,EAAE,IAAA,gBAAK,EAAC,IAAA,yCAAmB,GAAE,CAAC;aACpC,CAAC;YACF,MAAM,EACL,SAAS,EACT,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,aAAa,GACtB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAElF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAC1B,MAAM,gBAAgB,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YAE7D,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAEnE,MAAM,WAAW,GAAG,CACnB,KAAyB,EACzB,SAA6B,EAC7B,WAA2C,EAC1C,EAAE;gBACH,MAAM,UAAU,GACf,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,oBAAS,EAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAE3E,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnE,OAAO,CACN,KAAK;oBACL,gGAAgG;oBAChG,oFAAoF;oBACpF,iGAAiG;oBACjG,yCAAyC;oBACzC,IAAA,uBAAY,EACX,SAAS,IAAI,IAAA,eAAI,EAAC,wCAAwC,CAAC,EAC3D,IAAI,CAAC,QAAQ,CACb,CACD,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAC1D,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,KAAK,EACL,OAAO,EACP,gBAAgB,CAChB,CAAC;YAEF,MAAM,kBAAkB,GAAgB;gBACvC,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,MAAM,EAAE,IAAA,gBAAK,EAAC,YAAY,CAAC;aAC3B,CAAC;YAEF,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAE7C,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE;gBAC/C,UAAU,EAAE,WAAW;gBACvB,YAAY,EAAE,QAAQ;gBACtB,SAAS,EAAE,WAAW;gBACtB,aAAa,EAAE,kBAAkB;aACjC,CAAC,CAAC;SACH;QAED,sFAAsF;QACtF,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAAgB;oBAChC,SAAS,EAAE,sCAAgB,CAAC,UAAU;oBACtC,MAAM,EAAE,IAAA,gBAAK,EAAC,IAAA,yCAAmB,GAAE,CAAC;iBACpC,CAAC;gBAEF,MAAM,EACL,SAAS,EACT,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,aAAa,GACtB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBAElF,4DAA4D;gBAC5D,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAC9D,cAAc,EACd,IAAA,oBAAS,EAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,EACvC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;oBACpB,IAAA,iBAAM,EACL,SAAS,KAAK,SAAS,EACvB,KAAK,CAAC,iDAAiD,CACvD,CAAC;oBAEF,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;oBACrE,OAAO,KAAK,CAAC;gBACd,CAAC,EACD,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,cAAc,CACd,CAAC;gBACF,MAAM,kBAAkB,GAAgB;oBACvC,SAAS,EAAE,SAAS,CAAC,UAAU;oBAC/B,MAAM,EAAE,IAAA,gBAAK,EAAC,gBAAgB,CAAC;iBAC/B,CAAC;gBACF,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;aAC7C;SACD;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAEO,gBAAgB,CACvB,MAAiC,EACjC,IAA6C,EAC7C,KAAkB,EAClB,eAA4B,EAC5B,WAAqF,EACrF,gBAAwC,EACxC,eAAgC,EAChC,iBAAqC,0CAAkB,CAAC,KAAK;QAE7D,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,GAAG,KAAK,SAAS,EAAE;YACtB,OAAO,SAAS,CAAC;SACjB;QAED,MAAM,OAAO,GACZ,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS;YACtC,CAAC,CAAC;gBACA,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aAC/B;YACH,CAAC,CAAC,IAAA,oBAAS,EAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CACvC,MAAM,EAAE,YAAY,IAAI,IAAI,GAAG,EAAE,EACjC,OAAO,EACP,KAAK,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,CACd,CAAC;QAEF,MAAM,aAAa,GAAkB,EAAE,CAAC;QAExC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;YAC1B,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;SAC1C;QAED,IAAI,MAAM,EAAE,oBAAoB,KAAK,SAAS,EAAE;YAC/C,aAAa,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;SACjE;QAED,kGAAkG;QAClG,IAAI,aAAa,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACrD,MAAM,aAAa,GAAG,cAAc,KAAK,0CAAkB,CAAC,IAAI,CAAC;YAEjE,IAAI,aAAa,CAAC,oBAAoB,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAClE,aAAa,CAAC,oBAAoB,GAAG;oBACpC,GAAG,aAAa,CAAC,oBAAoB;oBACrC,QAAQ,EAAE,aAAa;iBACvB,CAAC;gBACF,eAAe,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;SACD;QAED,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACzD,OAAO,aAAa,CAAC;IACtB,CAAC;IAEO,aAAa,CACpB,SAAyB,EACzB,OAAuC;QAEvC,MAAM,eAAe,GAAmB,IAAI,GAAG,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE;YAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;YAEzE,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjF,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CACrC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;gBAC3C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,IAAA,gBAAK,EAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;aACpF;SACD;QAED,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAEO,eAAe,CACtB,MAAc,EACd,OAAuC;QAEvC,MAAM,SAAS,GAAG,IAAA,8BAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAChF,IAAA,iBAAM,EAAC,SAAS,KAAK,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAE7D,MAAM,YAAY,GACjB,SAAS,CAAC,YAAY,KAAK,SAAS;YACnC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;QAClE,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE;YAC5C,OAAO,YAAY,CAAC,YAAY,CAAC;SACjC;QAED,IAAI,oBAAoB,CAAC,YAAY,CAAC,EAAE;YACvC,IAAA,8BAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,SAAS,CAAC;SACjB;aAAM;YACN,IAAA,yBAAc,EAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC;SACd;IACF,CAAC;IAEM,WAAW,CAAC,cAAkD;QACpE,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC;;AA95BF,kDA+5BC;AA55BuB,+BAAW,GAAqB,oBAAoB,EAAE,CAAC;AA85B/E,SAAS,kCAAkC,CAAC,OAAyC;IACpF,MAAM,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,WAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;IACvD,MAAM,aAAa,GAA+B,IAAI,GAAG,EAAE,CAAC;IAC5D,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE;QACnC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,EAAE;YAClB,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;gBACpD,MAAM,cAAc,GAAG,WAAW,IAAI,QAAQ,CAAC;gBAC/C,MAAM,WAAW,GAAG,IAAA,wBAAa,EAChC,SAAS,EACT,cAAc,EACd,IAAI,GAAG,EAA+B,CACtC,CAAC;gBACF,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;oBACnC,sDAAsD;oBACtD,0GAA0G;oBAC1G,+FAA+F;oBAC/F,yFAAyF;oBACzF,wFAAwF;oBACxF,0FAA0F;oBAC1F,6FAA6F;oBAC7F,4EAA4E;oBAC5E,4FAA4F;oBAC5F,0FAA0F;oBAC1F,gCAAgC;oBAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;wBACzB,oEAAoE;wBACpE,MAAM,YAAY,GAAG,IAAA,8BAAmB,EAAC,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;wBAC1E,IAAI,YAAY,KAAK,SAAS,EAAE;4BAC/B,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;yBAC3B;6BAAM;4BACN,IAAA,iBAAM,EACL,YAAY,KAAK,KAAK,CAAC,cAAc,EACrC,KAAK,CAAC,wDAAwD,CAC9D,CAAC;4BACF,IAAA,8BAAmB,EAAC,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;yBACrD;qBACD;iBACD;gBACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;oBAC3B,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;iBACjC;aACD;SACD;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;YAClC,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACtD,MAAM,cAAc,GAAG,WAAW,IAAI,QAAQ,CAAC;gBAC/C,MAAM,WAAW,GAAG,IAAA,wBAAa,EAChC,WAAW,EACX,cAAc,EACd,IAAI,GAAG,EAA4B,CACnC,CAAC;gBACF,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;oBACnC,oEAAoE;oBACpE,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;oBACjE,IAAI,KAAK,KAAK,SAAS,EAAE;wBACxB,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;qBAC3B;yBAAM;wBACN,IAAA,iBAAM,EACL,KAAK,KAAK,KAAK,CAAC,cAAc,EAC9B,KAAK,CAAC,wDAAwD,CAC9D,CAAC;wBACF,IAAA,8BAAmB,EAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;qBACnD;iBACD;gBACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;oBAC3B,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;iBACnC;aACD;SACD;QACD,mDAAmD;QACnD,IAAI,MAAM,CAAC,UAAU,EAAE;YACtB,IAAA,4BAAiB,EAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SAC3D;KACD;IACD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CACpB,MAA8C,EAC9C,gBAAyC;IAEzC,IAAI,MAAM,KAAK,SAAS,EAAE;QACzB,MAAM,QAAQ,GAA4B,IAAI,GAAG,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,EAAE;YAC/C,MAAM,mBAAmB,GAAG,QAAQ,IAAI,gBAAgB,CAAC;YACzD,MAAM,eAAe,GAAkC,IAAI,GAAG,EAAE,CAAC;YACjE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE;gBACxC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;aAC9C;YACD,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;KAChB;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,QAAe,CAAC,CAAC,oBAAoB,CACpC,EAAE,MAAM,EAAE,QAAQ,EAAkC,EACpD,UAAiE;IAEjE,KAAK,CAAC,CAAC,8BAA8B,CACpC,MAAM,CAAC,YAAY,EACnB,QAAQ,EACR,MAAM,CAAC,WAAW,EAClB,UAAU,CACV,CAAC;AACH,CAAC;AAVD,oDAUC;AAED,QAAQ,CAAC,CAAC,8BAA8B,CACvC,MAAsB,EACtB,QAAiC,EACjC,WAA2C,EAC3C,UAAiE;IAEjE,KAAK,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE;QACtC,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,IAAY;YACvC,MAAM,aAAa,GAAG,IAAA,8BAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpF,IAAA,iBAAM,EAAC,aAAa,KAAK,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,aAAa,CAAC,YAAY,KAAK,SAAS,EAAE;gBAC7C,KAAK,CAAC,CAAC,8BAA8B,CACpC,aAAa,CAAC,YAAY,EAC1B,aAAa,EACb,WAAW,EACX,UAAU,CACV,CAAC;aACF;QACF,CAAC,CAAC;QACF,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAA,oBAAS,EAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC5F;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAC/B,EAAE,MAAM,EAAE,QAAQ,EAAkC,EACpD,eAAmE,EACnE,YAA2C;IAE3C,MAAM,UAAU,GAA+B,IAAI,GAAG,EAAE,CAAC;IACzD,MAAM,YAAY,GAAwD,IAAI,GAAG,EAAE,CAAC;IAEpF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;QAChC,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;YAC/C,MAAM,UAAU,GAAG,IAAA,wBAAa,EAAC,YAAY,EAAE,KAAK,EAAE,IAAI,wBAAK,EAAE,CAAC,CAAC;YACnE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;gBACpC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;aACzC;SACD;KACD;IAED,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7D,IAAI,UAAU,KAAK,SAAS,EAAE;oBAC7B,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC;oBAExC,4EAA4E;oBAC5E,sDAAsD;oBACtD,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,EAAE;wBACrC,SAAS;qBACT;iBACD;aACD;SACD;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,IAAA,iBAAM,EAAC,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACnE,IAAA,yBAAc,EAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACzD;IAED,MAAM,EACL,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,wBAAwB,EACxB,MAAM,EACN,QAAQ,GACR,GAAG,MAAM,CAAC;IAEX,OAAO,oBAAoB,CAC1B,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,wBAAwB,EACxB,MAAM,EACN,QAAQ,EACR,UAAU,CACV,CAAC;AACH,CAAC;AA7DD,4CA6DC;AAED;;;GAGG;AACH,SAAgB,SAAS,CACxB,YAA4C,EAC5C,UAAiE;IAEjE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACnC,+DAA+D;IAC/D,IAAI,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;QAC/C,OAAO,qBAAU,CAAC;KAClB;IAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,sDAAwB,CAAC,UAAU,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAChC,MAAM,CAAC,YAAY,EACnB,QAAQ,EACR,MAAM,CAAC,WAAW,EAClB,WAAW,EACX,UAAU,CACV,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE;QACzB,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC;KAC/B;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;QAC5C,SAAS,CAAC,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC7D;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;QAC9D,MAAM,QAAQ,GAAmC,EAAE,CAAC;QACpD,IAAA,6BAAkB,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3D,QAAQ,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,IAAA,6BAAkB,EAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,CAAC;gBAChD,KAAK;aACL,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;KAC7B;IACD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;QACpD,SAAS,CAAC,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtE;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAxCD,8BAwCC;AAED,SAAS,iBAAiB,CAAC,aAAyC,EAAE,QAAsB;IAC3F,MAAM,mBAAmB,GAA6B,EAAE,CAAC;IACzD,IAAA,6BAAkB,EAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAA,yBAAc,EAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAClD,IAAA,uCAAoB,EAAC,IAAA,oCAAiB,EAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;YACF,mBAAmB,CAAC,IAAI,CAAC;gBACxB,EAAE,EAAE,IAAA,6BAAkB,EAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,CAAC;gBAChD,KAAK;aACL,CAAC,CAAC;SACH;IACF,CAAC,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CACrB,MAAsB,EACtB,QAAiC,EACjC,WAA2C,EAC3C,WAAqC,EACrC,UAAiE;IAEjE,MAAM,KAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE;QAC1C,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACvD,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAC/E,IAAA,oBAAS,EAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,CAAC,WAAW,EAAiB,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAA,8BAAmB,EACrC,WAAW,EACX,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,OAAO,CACnB,CAAC;YAEF,IAAA,iBAAM,EAAC,UAAU,KAAK,SAAS,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC9D,OAAO,mBAAmB,CACzB,IAAA,oBAAS,EAAC,UAAU,EAAE,aAAa,CAAC,EACpC,WAAW,EACX,WAAW,EACX,UAAU,CACV,CAAC;QACH,CAAC,EACD,WAAW,CACX,CAAC;QACF,IAAI,CAAC,IAAA,8BAAmB,EAAC,UAAU,CAAC,EAAE;YACrC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SAC7B;KACD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC3B,EAAE,MAAM,EAAE,QAAQ,EAA+B,EACjD,WAA2C,EAC3C,WAAqC,EACrC,UAAiE;IAEjE,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;QACtC,OAAO,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;KAC1F;IACD,8DAA8D;IAC9D,OAAO,IAAI,GAAG,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,8BAA8B,CAC7C,QAAiC,EACjC,aAA0C;IAE1C,MAAM,iBAAiB,GAAkB,EAAE,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;QACrC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;KACD;IAED,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC;IACjD,OAAO;QACN,GAAG,IAAA,yCAA8B,EAAC,QAAQ,CAAC;QAC3C,gBAAgB;KAChB,CAAC;AACH,CAAC;AAhBD,wEAgBC;AAED,SAAS,oBAAoB,CAAC,MAAqB;IAClD,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,CAAC;AACvF,CAAC;AAED,SAAgB,YAAY,CAC3B,UAAiE,EACjE,IAAyB;IAEzB,IAAI,IAAI,KAAK,sCAAgB,CAAC,UAAU,EAAE;QACzC,OAAO,sCAAgB,CAAC;KACxB;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAA,iBAAM,EAAC,SAAS,KAAK,SAAS,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChE,OAAO,IAAA,mCAAU,EAAC,SAAS,CAAC,CAAC;AAC9B,CAAC;AAVD,oCAUC;AAED,SAAgB,gBAAgB,CAC/B,UAAiE,EACjE,IAAyB;IAEzB,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC;AACrD,CAAC;AALD,4CAKC;AA6DD,SAAS,eAAe;IACvB,OAAO;QACN,GAAG,kBAAkB,EAAe;QACpC,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,WAAW,EAAE,EAAE;KACf,CAAC;AACH,CAAC;AAsBD,SAAS,kBAAkB;IAC1B,OAAO;QACN,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,iBAAiB,EAAE,IAAI,GAAG,EAAE;KAC5B,CAAC;AACH,CAAC;AASD,SAAS,kBAAkB,CAAC,cAAsB;IACjD,OAAO;QACN,cAAc;KACd,CAAC;AACH,CAAC;AAMD,SAAS,oBAAoB,CAC5B,eAAmC,EACnC,eAAkB,EAClB,UAAU,GAAG,IAAI;IAEjB,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAE,EAAE,CAC3C,MAAM,KAAK,uCAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;IAE1F,MAAM,aAAa,GAAG,CAAC,MAAwB,EAAE,EAAE,CAClD,MAAM,KAAK,uCAAgB,CAAC,MAAM;QACjC,CAAC,CAAC,eAAe,CAAC,aAAa;QAC/B,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC;IAElC,MAAM,OAAO,GAAG;QACf,KAAK,EAAE,eAAe;QAEtB,GAAG,EAAE,CACJ,MAAwB,EACxB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,QAAiB,EACjB,oBAA6B,EAC5B,EAAE;YACH,IAAI,oBAAoB,IAAI,UAAU,EAAE;gBACvC,MAAM,aAAa,GAAI,EAAa,GAAG,KAAK,GAAG,CAAC,CAAC;gBACjD,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,OAAO,IAAI,aAAa,EAAE;oBAChC,MAAM,cAAc,GAAG,IAAA,gDAAyB,EAC/C,aAAa,CAAC,MAAM,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,OAAO,GAAG,CAAC,CAC3B,CAAC;oBACF,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE;wBACvC,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;qBAC5D;oBAED,OAAO,GAAG,IAAA,gBAAK,EAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;iBACjD;aACD;YACD,IAAA,yCAAkB,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;QAED,GAAG,EAAE,CACJ,MAAwB,EACxB,QAAiC,EACjC,EAAoB,EACpB,KAAa,EACb,aAAsB,EACrB,EAAE;YACH,IAAI,aAAa,EAAE;gBAClB,wEAAwE;gBACxE,sEAAsE;gBACtE,0FAA0F;gBAC1F,IAAA,yCAAkB,EAAC,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;aAChF;YACD,OAAO,IAAA,gDAAyB,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;KACD,CAAC;IAEF,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC5B,eAA2C,SAAS,EACpD,cAA0D,SAAS,EACnE,QAAgB,CAAC,CAAC,EAClB,YAAiD,SAAS,EAC1D,2BAA+C,SAAS,EACxD,MAAmC,EACnC,QAAkC,EAClC,UAAuC;IAEvC,MAAM,SAAS,GAA8B;QAC5C,YAAY,EAAE,YAAY,IAAI,IAAI,GAAG,EAAE;QACvC,WAAW,EAAE,WAAW,IAAI,IAAI,GAAG,EAAE;KACrC,CAAC;IACF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACpD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;KAChC;IACD,IAAI,KAAK,IAAI,CAAC,EAAE;QACf,SAAS,CAAC,KAAK,GAAG,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;KAC/B;IACD,IAAI,wBAAwB,KAAK,SAAS,IAAI,wBAAwB,GAAG,CAAC,EAAE;QAC3E,SAAS,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;KAC9D;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;QAC5C,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1B;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;QAChD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC9B;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;QACpD,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;KAClC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAa,kBAAmB,SAAQ,sBAA6B;IAIpE,YACC,MAA0D,EAC1D,cAAkD;QAElD,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAPvB,qBAAgB,GAAW,CAAC,CAAC;QAQpC,IAAI,CAAC,WAAW,GAAG,IAAA,+BAAoB,GAAE,CAAC;IAC3C,CAAC;IAEe,gBAAgB;QAC/B,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,WAAW,GAAG,IAAA,+BAAoB,GAAE,CAAC;SAC1C;IACF,CAAC;IAEe,eAAe;QAC9B,IAAA,iBAAM,EAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,WAAW,GAAG,IAAA,+BAAoB,GAAE,CAAC;SAC1C;IACF,CAAC;IAED;;;;OAIG;IACI,UAAU,CAChB,OAAyB,EACzB,OAA+B;QAE/B,IAAI,OAAO,CAAC,IAAI,sCAA8B,IAAI,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;YACjF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC1B;QACD,MAAM,MAAM,GAA+B,IAAI,GAAG,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,GACV,OAAO,CAAC,IAAI,sCAA8B;YACzC,CAAC,CAAC,IAAA,2BAAgB,EAAC,OAAO,EAAE,6BAAkB,CAAC;YAC/C,CAAC,CAAC,IAAA,oBAAS,EAAC,OAAO,EAAE,6BAAkB,CAAC,CAAC;QAC3C,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE7B,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,MAAM;SACN,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAClB,KAAkB,EAClB,SAA8B,EAC9B,MAAsB;QAEtB,MAAM,aAAa,GAAG,8BAA8B,CACnD,KAAK,EACL,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,IAAI,GAAG,EAAE,EACT,IAAI,CAAC,WAAW,CAChB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAEM,aAAa,CAAC,OAA0B;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAEM,YAAY,CAAC,OAA0B;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzC,IAAA,yBAAc,EACb,MAAM,CAAC,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,oBAAoB,CACpB,SAAS,EACT,SAAS,EACT,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAC3B,SAAS,EACT,SAAS,EACT,MAAM,CAAC,MAAM,CACZ;YACH,CAAC,CAAC,8BAA8B,CAC9B,MAAM,CAAC,KAAK,EACZ;gBACC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,EACD,IAAI,GAAG,EAAE,EACT,IAAI,CAAC,WAAW,CACf,CACJ,CACD,CAAC;QACF,MAAM,cAAc,GACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAqB,IAAA,gBAAK,EAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,KAAK,IAAI,CAAC,EAAE;YACf,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;SAC7B;QACD,OAAO,cAAc,CAAC;IACvB,CAAC;IAEM,UAAU,CAAC,KAAc;QAC/B,OAAO,IAAA,gBAAK,EAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,uBAAuB,CAAC,IAAY;QAC1C,MAAM,UAAU,GAAkB;YACjC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SACzC,CAAC;QAEF,IAAI,CAAC,WAAW,CACf,6BAA6B,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAC5E,CAAC;IACH,CAAC;CACD;AA9HD,gDA8HC;AAED,SAAS,8BAA8B,CACtC,IAAiB,EACjB,WAAwB,EACxB,WAA2C,EAC3C,cAA2B,IAAA,+BAAoB,GAAE;IAEjD,MAAM,YAAY,GAAmB,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;QAC9B,OAAO,oBAAoB,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/E;IAED,MAAM,aAAa,GAAkB;QACpC,YAAY;KACZ,CAAC;IAEF,OAAO,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,6BAA6B,CACrC,IAAY,EACZ,UAAyB,EACzB,WAA2C,EAC3C,WAAwB;IAExB,MAAM,MAAM,GAAW,EAAE,OAAO,EAAE,IAAA,gBAAK,EAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClE,IAAA,yBAAc,EAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,sCAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAC5E,IAAI,CAAC,WAAW,EAChB,MAAM,CACN,CAAC;IAEF,MAAM,WAAW,GAAgB;QAChC,SAAS,EAAE,sCAAgB,CAAC,UAAU;QACtC,MAAM,EAAE,cAAc;KACtB,CAAC;IAEF,OAAO,8BAA8B,CACpC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,EAChD,WAAW,EACX,WAAW,EACX,WAAW,CACX,CAAC;AACH,CAAC;AAyBD,SAAS,2BAA2B,CAAC,OAAyC;IAI7E,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAC;IACzC,MAAM,mBAAmB,GAAkB,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QAC5B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAClC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC1C;KACD;IAED,mBAAmB,CAAC,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC5B;KACD;IAED,OAAO,EAAE,KAAK,EAAE,IAAA,gBAAK,EAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,4BAA4B,CACpC,YAA4C;IAE5C,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KAChD;SAAM,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE;QAC/C,MAAM,IAAI,GAA0B,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;SAC1C;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAsC;IACvE,OAAO,MAAM,CAAC,QAAQ,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,oBAAoB,CAC5B,QAA6C;IAE7C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACpD,OAAO,SAAS,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { BTree } from \"@tylerbu/sorted-btree-es6\";\n\nimport { ICodecFamily } from \"../../codec/index.js\";\nimport {\n\tChangeAtomIdMap,\n\tChangeEncodingContext,\n\tChangeFamily,\n\tChangeFamilyEditor,\n\tChangeRebaser,\n\tChangesetLocalId,\n\tCursorLocationType,\n\tDeltaDetachedNodeBuild,\n\tDeltaDetachedNodeDestruction,\n\tDeltaDetachedNodeId,\n\tDeltaFieldChanges,\n\tDeltaFieldMap,\n\tDeltaRoot,\n\tEditBuilder,\n\tFieldKey,\n\tFieldKindIdentifier,\n\tFieldUpPath,\n\tITreeCursorSynchronous,\n\tRevisionInfo,\n\tRevisionMetadataSource,\n\tRevisionTag,\n\tTaggedChange,\n\tUpPath,\n\temptyDelta,\n\tisEmptyFieldChanges,\n\tmakeAnonChange,\n\tmakeDetachedNodeId,\n\tmapCursorField,\n\trevisionMetadataSourceFromInfo,\n\ttagChange,\n\ttaggedAtomId,\n\ttaggedOptAtomId,\n} from \"../../core/index.js\";\nimport {\n\tIdAllocationState,\n\tIdAllocator,\n\tMutable,\n\tNestedSet,\n\taddToNestedSet,\n\tbrand,\n\tdeleteFromNestedMap,\n\tfail,\n\tforEachInNestedMap,\n\tgetOrAddInMap,\n\tidAllocatorFromMaxId,\n\tidAllocatorFromState,\n\tnestedSetContains,\n\tpopulateNestedMap,\n\tsetInNestedMap,\n\ttryGetFromNestedMap,\n} from \"../../util/index.js\";\nimport {\n\tTreeChunk,\n\tchunkFieldSingle,\n\tchunkTree,\n\tdefaultChunkPolicy,\n} from \"../chunked-forest/index.js\";\nimport { cursorForMapTreeNode, mapTreeFromCursor } from \"../mapTreeCursor.js\";\nimport { MemoizedIdRangeAllocator } from \"../memoizedIdRangeAllocator.js\";\n\nimport {\n\tCrossFieldManager,\n\tCrossFieldMap,\n\tCrossFieldTarget,\n\tgetFirstFromCrossFieldMap,\n\tsetInCrossFieldMap,\n} from \"./crossFieldQueries.js\";\nimport {\n\tFieldChangeHandler,\n\tNodeExistenceState,\n\tRebaseRevisionMetadata,\n} from \"./fieldChangeHandler.js\";\nimport { FieldKindWithEditor, withEditor } from \"./fieldKindWithEditor.js\";\nimport { convertGenericChange, genericFieldKind, newGenericChangeset } from \"./genericFieldKind.js\";\nimport { GenericChangeset } from \"./genericFieldKindTypes.js\";\nimport {\n\tFieldChange,\n\tFieldChangeMap,\n\tFieldChangeset,\n\tModularChangeset,\n\tNodeChangeset,\n\tNodeId,\n} from \"./modularChangeTypes.js\";\n\n/**\n * Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind\n * as determined by the schema.\n */\nexport class ModularChangeFamily\n\timplements ChangeFamily<ModularEditBuilder, ModularChangeset>, ChangeRebaser<ModularChangeset>\n{\n\tpublic static readonly emptyChange: ModularChangeset = makeModularChangeset();\n\n\tpublic readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>;\n\n\tpublic constructor(\n\t\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n\t\tpublic readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>,\n\t) {\n\t\tthis.fieldKinds = fieldKinds;\n\t}\n\n\tpublic get rebaser(): ChangeRebaser<ModularChangeset> {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Produces an equivalent list of `FieldChangeset`s that all target the same {@link FlexFieldKind}.\n\t * @param changes - The list of `FieldChange`s whose `FieldChangeset`s needs to be normalized.\n\t * @returns An object that contains both the equivalent list of `FieldChangeset`s that all\n\t * target the same {@link FlexFieldKind}, and the `FieldKind` that they target.\n\t * The returned `FieldChangeset`s may be a shallow copy of the input `FieldChange`s.\n\t */\n\tprivate normalizeFieldChanges(\n\t\tchange1: FieldChange | undefined,\n\t\tchange2: FieldChange | undefined,\n\t\tgenId: IdAllocator,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): {\n\t\tfieldKind: FieldKindWithEditor;\n\t\tchange1: FieldChangeset | undefined;\n\t\tchange2: FieldChangeset | undefined;\n\t} {\n\t\t// TODO: Handle the case where changes have conflicting field kinds\n\t\tconst kind =\n\t\t\tchange1 !== undefined && change1.fieldKind !== genericFieldKind.identifier\n\t\t\t\t? change1.fieldKind\n\t\t\t\t: change2?.fieldKind ?? genericFieldKind.identifier;\n\n\t\tif (kind === genericFieldKind.identifier) {\n\t\t\t// All the changes are generic\n\t\t\treturn {\n\t\t\t\tfieldKind: genericFieldKind,\n\t\t\t\tchange1: change1?.change,\n\t\t\t\tchange2: change2?.change,\n\t\t\t};\n\t\t}\n\t\tconst fieldKind = getFieldKind(this.fieldKinds, kind);\n\t\tconst handler = fieldKind.changeHandler;\n\t\tconst normalizedChange1 = this.normalizeFieldChange(\n\t\t\tchange1,\n\t\t\thandler,\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t);\n\t\tconst normalizedChange2 = this.normalizeFieldChange(\n\t\t\tchange2,\n\t\t\thandler,\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t);\n\t\treturn { fieldKind, change1: normalizedChange1, change2: normalizedChange2 };\n\t}\n\n\tprivate normalizeFieldChange<T>(\n\t\tfieldChange: FieldChange | undefined,\n\t\thandler: FieldChangeHandler<T>,\n\t\tgenId: IdAllocator,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeset | undefined {\n\t\tif (fieldChange === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldChange.fieldKind !== genericFieldKind.identifier) {\n\t\t\treturn fieldChange.change;\n\t\t}\n\n\t\t// The cast is based on the `fieldKind` check above\n\t\tconst genericChange = fieldChange.change as unknown as GenericChangeset;\n\t\tconst convertedChange = convertGenericChange(\n\t\t\tgenericChange,\n\t\t\thandler,\n\t\t\t(child1, child2) => {\n\t\t\t\tassert(\n\t\t\t\t\tchild1 === undefined || child2 === undefined,\n\t\t\t\t\t0x92f /* Should not have two changesets to compose */,\n\t\t\t\t);\n\n\t\t\t\treturn child1 ?? child2 ?? fail(\"Should not compose two undefined node IDs\");\n\t\t\t},\n\t\t\tgenId,\n\t\t\trevisionMetadata,\n\t\t) as FieldChangeset;\n\n\t\treturn convertedChange;\n\t}\n\n\tpublic compose(changes: TaggedChange<ModularChangeset>[]): ModularChangeset {\n\t\tconst activeChanges = changes.filter(\n\t\t\t(change) => (change.change.constraintViolationCount ?? 0) === 0,\n\t\t);\n\n\t\tconst { revInfos, maxId } = getRevInfoFromTaggedChanges(changes);\n\t\tconst idState: IdAllocationState = { maxId };\n\n\t\treturn activeChanges.reduce(\n\t\t\t(change1, change2) =>\n\t\t\t\tmakeAnonChange(this.composePair(change1, change2, revInfos, idState)),\n\t\t\tmakeAnonChange({ fieldChanges: new Map(), nodeChanges: new Map() }),\n\t\t).change;\n\t}\n\n\tprivate composePair(\n\t\tchange1: TaggedChange<ModularChangeset>,\n\t\tchange2: TaggedChange<ModularChangeset>,\n\t\trevInfos: RevisionInfo[],\n\t\tidState: IdAllocationState,\n\t): ModularChangeset {\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst revisionMetadata: RevisionMetadataSource = revisionMetadataSourceFromInfo(revInfos);\n\n\t\tconst crossFieldTable = newComposeTable();\n\n\t\tconst composedFields = this.composeFieldMaps(\n\t\t\tchange1.change.fieldChanges,\n\t\t\tchange1.revision,\n\t\t\tchange2.change.fieldChanges,\n\t\t\tchange2.revision,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\n\t\tconst composedNodeChanges: ChangeAtomIdMap<NodeChangeset> = new Map();\n\t\tfor (const [taggedId1, taggedId2] of crossFieldTable.nodeIdPairs) {\n\t\t\tthis.composeNodesById(\n\t\t\t\tchange1.change.nodeChanges,\n\t\t\t\tchange2.change.nodeChanges,\n\t\t\t\tcomposedNodeChanges,\n\t\t\t\ttaggedId1?.change,\n\t\t\t\ttaggedId1?.revision,\n\t\t\t\ttaggedId2?.change,\n\t\t\t\ttaggedId2?.revision,\n\t\t\t\tgenId,\n\t\t\t\tcrossFieldTable,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\t\t}\n\n\t\tcrossFieldTable.nodeIdPairs.length = 0;\n\n\t\twhile (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tfor (const fieldChange of fieldsToUpdate) {\n\t\t\t\tconst context = crossFieldTable.fieldToContext.get(fieldChange);\n\t\t\t\tassert(\n\t\t\t\t\tcontext !== undefined,\n\t\t\t\t\t0x8cc /* Should have context for every invalidated field */,\n\t\t\t\t);\n\t\t\t\tconst { change1: fieldChange1, change2: fieldChange2, composedChange } = context;\n\n\t\t\t\tconst rebaser = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser;\n\t\t\t\tconst composeNodes = (\n\t\t\t\t\tchild1: NodeId | undefined,\n\t\t\t\t\tchild2: NodeId | undefined,\n\t\t\t\t): NodeId => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tchild2 !== undefined &&\n\t\t\t\t\t\t!nestedSetContains(crossFieldTable.nodeIds, child2.revision, child2.localId)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst taggedId1 =\n\t\t\t\t\t\t\tchild1 !== undefined\n\t\t\t\t\t\t\t\t? tagChange(child1, fieldChange1.revision)\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\tconst taggedId2 =\n\t\t\t\t\t\t\tchild2 !== undefined\n\t\t\t\t\t\t\t\t? tagChange(child2, fieldChange2.revision)\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\tcrossFieldTable.nodeIdPairs.push([taggedId1, taggedId2]);\n\t\t\t\t\t\tif (child1 !== undefined && child2 !== undefined) {\n\t\t\t\t\t\t\taddToNestedSet(\n\t\t\t\t\t\t\t\tcrossFieldTable.nodeIds,\n\t\t\t\t\t\t\t\tchild2.revision,\n\t\t\t\t\t\t\t\tchild2.localId,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttaggedOptAtomId(child1, fieldChange1.revision) ??\n\t\t\t\t\t\ttaggedOptAtomId(child2, fieldChange2.revision) ??\n\t\t\t\t\t\tfail(\"Should not compose two undefined nodes\")\n\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\tconst amendedChange = rebaser.compose(\n\t\t\t\t\tfieldChange1,\n\t\t\t\t\tfieldChange2,\n\t\t\t\t\tcomposeNodes,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, fieldChange, false),\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\t\t\t\tcomposedChange.change = brand(amendedChange);\n\n\t\t\t\t// Process any newly discovered nodes.\n\t\t\t\tfor (const [taggedId1, taggedId2] of crossFieldTable.nodeIdPairs) {\n\t\t\t\t\tthis.composeNodesById(\n\t\t\t\t\t\tchange1.change.nodeChanges,\n\t\t\t\t\t\tchange2.change.nodeChanges,\n\t\t\t\t\t\tcomposedNodeChanges,\n\t\t\t\t\t\ttaggedId1?.change,\n\t\t\t\t\t\ttaggedId1?.revision,\n\t\t\t\t\t\ttaggedId2?.change,\n\t\t\t\t\t\ttaggedId2?.revision,\n\t\t\t\t\t\tgenId,\n\t\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\t\trevisionMetadata,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tcrossFieldTable.nodeIdPairs.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tconst { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers([\n\t\t\tchange1,\n\t\t\tchange2,\n\t\t]);\n\n\t\treturn makeModularChangeset(\n\t\t\tthis.pruneFieldMap(composedFields, composedNodeChanges),\n\t\t\tcomposedNodeChanges,\n\t\t\tidState.maxId,\n\t\t\trevInfos,\n\t\t\tundefined,\n\t\t\tallBuilds,\n\t\t\tallDestroys,\n\t\t\tallRefreshers,\n\t\t);\n\t}\n\n\tprivate composeFieldMaps(\n\t\tchange1: FieldChangeMap | undefined,\n\t\trevision1: RevisionTag | undefined,\n\t\tchange2: FieldChangeMap | undefined,\n\t\trevision2: RevisionTag | undefined,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: ComposeTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeMap {\n\t\tconst composedFields: FieldChangeMap = new Map();\n\t\tconst fields = new Set<FieldKey>();\n\t\tfor (const field of change1?.keys() ?? []) {\n\t\t\tfields.add(field);\n\t\t}\n\n\t\tfor (const field of change2?.keys() ?? []) {\n\t\t\tfields.add(field);\n\t\t}\n\n\t\tfor (const field of fields) {\n\t\t\tconst fieldChange1 = change1?.get(field);\n\t\t\tconst fieldChange2 = change2?.get(field);\n\n\t\t\tconst {\n\t\t\t\tfieldKind,\n\t\t\t\tchange1: normalizedFieldChange1,\n\t\t\t\tchange2: normalizedFieldChange2,\n\t\t\t} = this.normalizeFieldChanges(fieldChange1, fieldChange2, genId, revisionMetadata);\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange1 ?? fieldChange2);\n\t\t\tconst taggedChange1 = tagChange(\n\t\t\t\tnormalizedFieldChange1 ?? fieldKind.changeHandler.createEmpty(),\n\t\t\t\tfieldChange1?.revision ?? revision1,\n\t\t\t);\n\t\t\tconst taggedChange2 = tagChange(\n\t\t\t\tnormalizedFieldChange2 ?? fieldKind.changeHandler.createEmpty(),\n\t\t\t\tfieldChange2?.revision ?? revision2,\n\t\t\t);\n\n\t\t\tconst composedChange = fieldKind.changeHandler.rebaser.compose(\n\t\t\t\ttaggedChange1,\n\t\t\t\ttaggedChange2,\n\t\t\t\t(child1, child2) => {\n\t\t\t\t\tconst taggedId1 =\n\t\t\t\t\t\tchild1 !== undefined\n\t\t\t\t\t\t\t? tagChange(child1, taggedChange1.revision)\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tconst taggedId2 =\n\t\t\t\t\t\tchild2 !== undefined\n\t\t\t\t\t\t\t? tagChange(child2, taggedChange2.revision)\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tcrossFieldTable.nodeIdPairs.push([taggedId1, taggedId2]);\n\t\t\t\t\tif (child2 !== undefined) {\n\t\t\t\t\t\taddToNestedSet(crossFieldTable.nodeIds, child2.revision, child2.localId);\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttaggedOptAtomId(child1, revision1) ??\n\t\t\t\t\t\ttaggedOptAtomId(child2, revision2) ??\n\t\t\t\t\t\tfail(\"Should not compose two undefined nodes\")\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst composedField: FieldChange = {\n\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\tchange: brand(composedChange),\n\t\t\t};\n\n\t\t\tconst fieldKey =\n\t\t\t\tfieldChange1 ?? fieldChange2 ?? fail(\"At least one field should have changes\");\n\n\t\t\tcrossFieldTable.fieldToContext.set(fieldKey, {\n\t\t\t\tchange1: taggedChange1,\n\t\t\t\tchange2: taggedChange2,\n\t\t\t\tcomposedChange: composedField,\n\t\t\t});\n\n\t\t\t// TODO: Could optimize by checking that composedField is non-empty\n\t\t\tcomposedFields.set(field, composedField);\n\t\t}\n\n\t\treturn composedFields;\n\t}\n\n\tprivate composeNodesById(\n\t\tnodeChanges1: ChangeAtomIdMap<NodeChangeset>,\n\t\tnodeChanges2: ChangeAtomIdMap<NodeChangeset>,\n\t\tcomposedNodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\t\tid1: NodeId | undefined,\n\t\trevision1: RevisionTag | undefined,\n\t\tid2: NodeId | undefined,\n\t\trevision2: RevisionTag | undefined,\n\t\tidAllocator: IdAllocator,\n\t\tcrossFieldTable: ComposeTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): void {\n\t\tconst nodeChangeset1 =\n\t\t\tid1 !== undefined\n\t\t\t\t? tryGetFromNestedMap(nodeChanges1, id1.revision, id1.localId) ??\n\t\t\t\t fail(\"Unknown node ID\")\n\t\t\t\t: {};\n\n\t\tconst nodeChangeset2 =\n\t\t\tid2 !== undefined\n\t\t\t\t? tryGetFromNestedMap(nodeChanges2, id2.revision, id2.localId) ??\n\t\t\t\t fail(\"Unknown node ID\")\n\t\t\t\t: {};\n\n\t\tconst composedNodeChangeset = this.composeNodeChanges(\n\t\t\tnodeChangeset1,\n\t\t\trevision1,\n\t\t\tnodeChangeset2,\n\t\t\trevision2,\n\t\t\tidAllocator,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\n\t\tconst nodeId =\n\t\t\ttaggedOptAtomId(id1, revision1) ??\n\t\t\ttaggedOptAtomId(id2, revision2) ??\n\t\t\tfail(\"Should not compose two undefined node IDs\");\n\t\tsetInNestedMap(composedNodeChanges, nodeId.revision, nodeId.localId, composedNodeChangeset);\n\t}\n\n\tprivate composeNodeChanges(\n\t\tchange1: NodeChangeset | undefined,\n\t\trevision1: RevisionTag | undefined,\n\t\tchange2: NodeChangeset | undefined,\n\t\trevision2: RevisionTag | undefined,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: ComposeTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): NodeChangeset {\n\t\tconst nodeExistsConstraint = change1?.nodeExistsConstraint ?? change2?.nodeExistsConstraint;\n\n\t\tconst composedFieldChanges = this.composeFieldMaps(\n\t\t\tchange1?.fieldChanges,\n\t\t\trevision1,\n\t\t\tchange2?.fieldChanges,\n\t\t\trevision2,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\t\tconst composedNodeChange: NodeChangeset = {};\n\n\t\tif (composedFieldChanges.size > 0) {\n\t\t\tcomposedNodeChange.fieldChanges = composedFieldChanges;\n\t\t}\n\n\t\tif (nodeExistsConstraint !== undefined) {\n\t\t\tcomposedNodeChange.nodeExistsConstraint = nodeExistsConstraint;\n\t\t}\n\n\t\treturn composedNodeChange;\n\t}\n\n\t/**\n\t * @param change - The change to invert.\n\t * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when\n\t * performing a sandwich rebase.\n\t * @param repairStore - The store to query for repair data.\n\t */\n\tpublic invert(change: TaggedChange<ModularChangeset>, isRollback: boolean): ModularChangeset {\n\t\t// Return an empty inverse for changes with constraint violations\n\t\tif ((change.change.constraintViolationCount ?? 0) > 0) {\n\t\t\treturn makeModularChangeset();\n\t\t}\n\n\t\tconst idState: IdAllocationState = { maxId: change.change.maxId ?? -1 };\n\t\t// This idState is used for the whole of the IdAllocator's lifetime, which allows\n\t\t// this function to read the updated idState.maxId after more IDs are allocated.\n\t\t// TODO: add a getMax function to IdAllocator to make for a clearer contract.\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst crossFieldTable: InvertTable = {\n\t\t\t...newCrossFieldTable<FieldChange>(),\n\t\t\toriginalFieldToContext: new Map(),\n\t\t};\n\n\t\tconst { revInfos } = getRevInfoFromTaggedChanges([change]);\n\t\tconst revisionMetadata = revisionMetadataSourceFromInfo(revInfos);\n\n\t\tconst invertedFields = this.invertFieldMap(\n\t\t\ttagChange(change.change.fieldChanges, revisionFromTaggedChange(change)),\n\t\t\tisRollback,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\trevisionMetadata,\n\t\t);\n\n\t\tconst invertedNodes: ChangeAtomIdMap<NodeChangeset> = new Map();\n\t\tforEachInNestedMap(change.change.nodeChanges, (nodeChangeset, revision, localId) => {\n\t\t\tsetInNestedMap(\n\t\t\t\tinvertedNodes,\n\t\t\t\trevision,\n\t\t\t\tlocalId,\n\t\t\t\tthis.invertNodeChange(\n\t\t\t\t\t// TODO: This does not allow inheriting revision from parent\n\t\t\t\t\ttagChange(nodeChangeset, change.revision),\n\t\t\t\t\tisRollback,\n\t\t\t\t\tgenId,\n\t\t\t\t\tcrossFieldTable,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t),\n\t\t\t);\n\t\t});\n\n\t\tif (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tfor (const fieldChange of fieldsToUpdate) {\n\t\t\t\tconst originalFieldChange = fieldChange.change;\n\t\t\t\tconst context = crossFieldTable.originalFieldToContext.get(fieldChange);\n\t\t\t\tassert(\n\t\t\t\t\tcontext !== undefined,\n\t\t\t\t\t0x851 /* Should have context for every invalidated field */,\n\t\t\t\t);\n\t\t\t\tconst { invertedField, revision } = context;\n\n\t\t\t\tconst amendedChange = getChangeHandler(\n\t\t\t\t\tthis.fieldKinds,\n\t\t\t\t\tfieldChange.fieldKind,\n\t\t\t\t).rebaser.invert(\n\t\t\t\t\ttagChange(originalFieldChange, revision),\n\t\t\t\t\tisRollback,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, fieldChange),\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\t\t\t\tinvertedField.change = brand(amendedChange);\n\t\t\t}\n\t\t}\n\n\t\t// Rollback changesets destroy the nodes created by the change being rolled back.\n\t\tconst destroys = isRollback\n\t\t\t? invertBuilds(change.change.builds, change.revision)\n\t\t\t: undefined;\n\n\t\t// Destroys only occur in rollback changesets, which are never inverted.\n\t\tassert(\n\t\t\tchange.change.destroys === undefined,\n\t\t\t0x89a /* Unexpected destroys in change to invert */,\n\t\t);\n\n\t\tconst revInfo = change.change.revisions;\n\t\treturn makeModularChangeset(\n\t\t\tinvertedFields,\n\t\t\tinvertedNodes,\n\t\t\tidState.maxId,\n\t\t\trevInfo === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (isRollback\n\t\t\t\t\t\t? revInfo.map(({ revision }) => ({ revision, rollbackOf: revision }))\n\t\t\t\t\t\t: Array.from(revInfo)\n\t\t\t\t ).reverse(),\n\t\t\tchange.change.constraintViolationCount,\n\t\t\tundefined,\n\t\t\tdestroys,\n\t\t);\n\t}\n\n\tprivate invertFieldMap(\n\t\tchanges: TaggedChange<FieldChangeMap>,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: InvertTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): FieldChangeMap {\n\t\tconst invertedFields: FieldChangeMap = new Map();\n\n\t\tfor (const [field, fieldChange] of changes.change) {\n\t\t\tconst { revision } = fieldChange.revision !== undefined ? fieldChange : changes;\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\t\t\tconst invertedChange = getChangeHandler(\n\t\t\t\tthis.fieldKinds,\n\t\t\t\tfieldChange.fieldKind,\n\t\t\t).rebaser.invert(\n\t\t\t\t{ revision, change: fieldChange.change },\n\t\t\t\tisRollback,\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst invertedFieldChange: FieldChange = {\n\t\t\t\t...fieldChange,\n\t\t\t\tchange: brand(invertedChange),\n\t\t\t};\n\t\t\tinvertedFields.set(field, invertedFieldChange);\n\n\t\t\tcrossFieldTable.originalFieldToContext.set(fieldChange, {\n\t\t\t\tinvertedField: invertedFieldChange,\n\t\t\t\trevision,\n\t\t\t});\n\t\t}\n\n\t\treturn invertedFields;\n\t}\n\n\tprivate invertNodeChange(\n\t\tchange: TaggedChange<NodeChangeset>,\n\t\tisRollback: boolean,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: InvertTable,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): NodeChangeset {\n\t\tconst inverse: NodeChangeset = {};\n\n\t\tif (change.change.fieldChanges !== undefined) {\n\t\t\tinverse.fieldChanges = this.invertFieldMap(\n\t\t\t\t{ ...change, change: change.change.fieldChanges },\n\t\t\t\tisRollback,\n\t\t\t\tgenId,\n\t\t\t\tcrossFieldTable,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\t\t}\n\n\t\treturn inverse;\n\t}\n\n\tpublic rebase(\n\t\tchange: ModularChangeset,\n\t\tover: TaggedChange<ModularChangeset>,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): ModularChangeset {\n\t\tconst maxId = Math.max(change.maxId ?? -1, over.change.maxId ?? -1);\n\t\tconst idState: IdAllocationState = { maxId };\n\t\tconst genId: IdAllocator = idAllocatorFromState(idState);\n\t\tconst crossFieldTable: RebaseTable = {\n\t\t\t...newCrossFieldTable<FieldChange>(),\n\t\t\tfieldToContext: new Map(),\n\t\t\trebasedNodeCache: new Map(),\n\t\t\tnodeIdPairs: [],\n\t\t};\n\n\t\tlet constraintState = newConstraintState(change.constraintViolationCount ?? 0);\n\n\t\tconst getBaseRevisions = () =>\n\t\t\trevisionInfoFromTaggedChange(over).map((info) => info.revision);\n\n\t\tconst rebaseMetadata = {\n\t\t\t...revisionMetadata,\n\t\t\tgetBaseRevisions,\n\t\t};\n\n\t\tconst rebasedFields = this.rebaseFieldMap(\n\t\t\tchange.fieldChanges,\n\t\t\ttagChange(over.change.fieldChanges, revisionFromTaggedChange(over)),\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\t() => true,\n\t\t\trebaseMetadata,\n\t\t\tconstraintState,\n\t\t);\n\n\t\tconst rebasedNodes: ChangeAtomIdMap<NodeChangeset> = new Map();\n\t\tfor (const [newId, taggedBaseId, existenceState] of crossFieldTable.nodeIdPairs) {\n\t\t\tconst newNodeChange =\n\t\t\t\tnewId !== undefined\n\t\t\t\t\t? tryGetFromNestedMap(change.nodeChanges, newId.revision, newId.localId)\n\t\t\t\t\t: undefined;\n\n\t\t\tconst taggedBaseNodeChange =\n\t\t\t\ttaggedBaseId !== undefined\n\t\t\t\t\t? tagChange(\n\t\t\t\t\t\t\ttryGetFromNestedMap(\n\t\t\t\t\t\t\t\tover.change.nodeChanges,\n\t\t\t\t\t\t\t\ttaggedBaseId.change.revision,\n\t\t\t\t\t\t\t\ttaggedBaseId.change.localId,\n\t\t\t\t\t\t\t) ?? fail(\"Unknown node ID\"),\n\t\t\t\t\t\t\ttaggedBaseId.revision,\n\t\t\t\t\t )\n\t\t\t\t\t: makeAnonChange({});\n\n\t\t\tconst rebasedNode = this.rebaseNodeChange(\n\t\t\t\tnewNodeChange,\n\t\t\t\ttaggedBaseNodeChange,\n\t\t\t\tgenId,\n\t\t\t\tcrossFieldTable,\n\t\t\t\t() => true,\n\t\t\t\trebaseMetadata,\n\t\t\t\tconstraintState,\n\t\t\t\texistenceState,\n\t\t\t);\n\n\t\t\tif (rebasedNode !== undefined) {\n\t\t\t\tconst nodeId =\n\t\t\t\t\tnewId ??\n\t\t\t\t\ttaggedAtomId(\n\t\t\t\t\t\ttaggedBaseId?.change ?? fail(\"Should not have two undefined IDs\"),\n\t\t\t\t\t\ttaggedBaseId?.revision,\n\t\t\t\t\t);\n\n\t\t\t\tsetInNestedMap(rebasedNodes, nodeId.revision, nodeId.localId, rebasedNode);\n\t\t\t}\n\t\t}\n\n\t\tif (crossFieldTable.invalidatedFields.size > 0) {\n\t\t\tconst fieldsToUpdate = crossFieldTable.invalidatedFields;\n\t\t\tcrossFieldTable.invalidatedFields = new Set();\n\t\t\tconstraintState = newConstraintState(change.constraintViolationCount ?? 0);\n\t\t\tfor (const field of fieldsToUpdate) {\n\t\t\t\t// TODO: Should we copy the context table out before this loop?\n\t\t\t\tconst context = crossFieldTable.fieldToContext.get(field);\n\t\t\t\tassert(context !== undefined, 0x852 /* Every field should have a context */);\n\t\t\t\tconst {\n\t\t\t\t\tfieldKind,\n\t\t\t\t\tchange1: fieldChangeset,\n\t\t\t\t\tchange2: baseChangeset,\n\t\t\t\t} = this.normalizeFieldChanges(\n\t\t\t\t\tcontext.newChange,\n\t\t\t\t\tcontext.baseChange,\n\t\t\t\t\tgenId,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t);\n\n\t\t\t\tcontext.rebasedChange.change = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\t\tfieldChangeset,\n\t\t\t\t\ttagChange(baseChangeset, context.baseRevision),\n\t\t\t\t\t(curr, base, existenceState) => curr,\n\t\t\t\t\tgenId,\n\t\t\t\t\tnewCrossFieldManager(crossFieldTable, field),\n\t\t\t\t\trebaseMetadata,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn makeModularChangeset(\n\t\t\tthis.pruneFieldMap(rebasedFields, rebasedNodes),\n\t\t\trebasedNodes,\n\t\t\tidState.maxId,\n\t\t\tchange.revisions,\n\t\t\tconstraintState.violationCount,\n\t\t\tchange.builds,\n\t\t\tchange.destroys,\n\t\t\tchange.refreshers,\n\t\t);\n\t}\n\n\tprivate rebaseFieldMap(\n\t\tchange: FieldChangeMap,\n\t\tover: TaggedChange<FieldChangeMap>,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: RebaseTable,\n\t\tfieldFilter: (baseChange: FieldChange, newChange: FieldChange | undefined) => boolean,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t\tconstraintState: ConstraintState,\n\t\texistenceState: NodeExistenceState = NodeExistenceState.Alive,\n\t): FieldChangeMap {\n\t\tconst rebasedFields: FieldChangeMap = new Map();\n\n\t\t// Rebase fields contained in the base changeset\n\t\tfor (const [field, baseChanges] of over.change) {\n\t\t\tif (!fieldFilter(baseChanges, change.get(field))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst fieldChange: FieldChange = change.get(field) ?? {\n\t\t\t\tfieldKind: genericFieldKind.identifier,\n\t\t\t\tchange: brand(newGenericChangeset()),\n\t\t\t};\n\t\t\tconst {\n\t\t\t\tfieldKind,\n\t\t\t\tchange1: fieldChangeset,\n\t\t\t\tchange2: baseChangeset,\n\t\t\t} = this.normalizeFieldChanges(fieldChange, baseChanges, genId, revisionMetadata);\n\n\t\t\tconst { revision } = over;\n\t\t\tconst taggedBaseChange = { revision, change: baseChangeset };\n\n\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\n\t\t\tconst rebaseChild = (\n\t\t\t\tchild: NodeId | undefined,\n\t\t\t\tbaseChild: NodeId | undefined,\n\t\t\t\tstateChange: NodeExistenceState | undefined,\n\t\t\t) => {\n\t\t\t\tconst taggedBase =\n\t\t\t\t\tbaseChild !== undefined ? tagChange(baseChild, over.revision) : undefined;\n\n\t\t\t\tcrossFieldTable.nodeIdPairs.push([child, taggedBase, stateChange]);\n\t\t\t\treturn (\n\t\t\t\t\tchild ??\n\t\t\t\t\t// The fact `child` is undefined means that the changeset to rebase does not include changes for\n\t\t\t\t\t// this node or its descendants. However, it's possible that it will after rebasing.\n\t\t\t\t\t// In that case, we will need a NodeId to represent these changes under in the rebased changeset.\n\t\t\t\t\t// We adopt `baseChild` for this purpose.\n\t\t\t\t\ttaggedAtomId(\n\t\t\t\t\t\tbaseChild ?? fail(\"Should not have two undefined node IDs\"),\n\t\t\t\t\t\tover.revision,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst rebasedField = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\tfieldChangeset,\n\t\t\t\ttaggedBaseChange,\n\t\t\t\trebaseChild,\n\t\t\t\tgenId,\n\t\t\t\tmanager,\n\t\t\t\trevisionMetadata,\n\t\t\t);\n\n\t\t\tconst rebasedFieldChange: FieldChange = {\n\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\tchange: brand(rebasedField),\n\t\t\t};\n\n\t\t\trebasedFields.set(field, rebasedFieldChange);\n\n\t\t\tcrossFieldTable.fieldToContext.set(fieldChange, {\n\t\t\t\tbaseChange: baseChanges,\n\t\t\t\tbaseRevision: revision,\n\t\t\t\tnewChange: fieldChange,\n\t\t\t\trebasedChange: rebasedFieldChange,\n\t\t\t});\n\t\t}\n\n\t\t// Rebase the fields of the new changeset which don't have a corresponding base field.\n\t\tfor (const [field, fieldChange] of change) {\n\t\t\tif (!over.change?.has(field)) {\n\t\t\t\tconst baseChanges: FieldChange = {\n\t\t\t\t\tfieldKind: genericFieldKind.identifier,\n\t\t\t\t\tchange: brand(newGenericChangeset()),\n\t\t\t\t};\n\n\t\t\t\tconst {\n\t\t\t\t\tfieldKind,\n\t\t\t\t\tchange1: fieldChangeset,\n\t\t\t\t\tchange2: baseChangeset,\n\t\t\t\t} = this.normalizeFieldChanges(fieldChange, baseChanges, genId, revisionMetadata);\n\n\t\t\t\t// TODO: Don't we need to add an entry in the context table?\n\t\t\t\tconst manager = newCrossFieldManager(crossFieldTable, fieldChange);\n\t\t\t\tconst rebasedChangeset = fieldKind.changeHandler.rebaser.rebase(\n\t\t\t\t\tfieldChangeset,\n\t\t\t\t\ttagChange(baseChangeset, over.revision),\n\t\t\t\t\t(child, baseChild) => {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\tbaseChild === undefined,\n\t\t\t\t\t\t\t0x5b6 /* This field should not have any base changes */,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcrossFieldTable.nodeIdPairs.push([child, undefined, existenceState]);\n\t\t\t\t\t\treturn child;\n\t\t\t\t\t},\n\t\t\t\t\tgenId,\n\t\t\t\t\tmanager,\n\t\t\t\t\trevisionMetadata,\n\t\t\t\t\texistenceState,\n\t\t\t\t);\n\t\t\t\tconst rebasedFieldChange: FieldChange = {\n\t\t\t\t\tfieldKind: fieldKind.identifier,\n\t\t\t\t\tchange: brand(rebasedChangeset),\n\t\t\t\t};\n\t\t\t\trebasedFields.set(field, rebasedFieldChange);\n\t\t\t}\n\t\t}\n\n\t\treturn rebasedFields;\n\t}\n\n\tprivate rebaseNodeChange(\n\t\tchange: NodeChangeset | undefined,\n\t\tover: TaggedChange<NodeChangeset | undefined>,\n\t\tgenId: IdAllocator,\n\t\tcrossFieldTable: RebaseTable,\n\t\tfieldFilter: (baseChange: FieldChange, newChange: FieldChange | undefined) => boolean,\n\t\trevisionMetadata: RebaseRevisionMetadata,\n\t\tconstraintState: ConstraintState,\n\t\texistenceState: NodeExistenceState = NodeExistenceState.Alive,\n\t): NodeChangeset | undefined {\n\t\tconst key = change ?? over.change;\n\t\tif (key === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst baseMap: TaggedChange<FieldChangeMap> =\n\t\t\tover.change?.fieldChanges !== undefined\n\t\t\t\t? {\n\t\t\t\t\t\t...over,\n\t\t\t\t\t\tchange: over.change.fieldChanges,\n\t\t\t\t }\n\t\t\t\t: tagChange(new Map(), over.revision);\n\n\t\tconst fieldChanges = this.rebaseFieldMap(\n\t\t\tchange?.fieldChanges ?? new Map(),\n\t\t\tbaseMap,\n\t\t\tgenId,\n\t\t\tcrossFieldTable,\n\t\t\tfieldFilter,\n\t\t\trevisionMetadata,\n\t\t\tconstraintState,\n\t\t\texistenceState,\n\t\t);\n\n\t\tconst rebasedChange: NodeChangeset = {};\n\n\t\tif (fieldChanges.size > 0) {\n\t\t\trebasedChange.fieldChanges = fieldChanges;\n\t\t}\n\n\t\tif (change?.nodeExistsConstraint !== undefined) {\n\t\t\trebasedChange.nodeExistsConstraint = change.nodeExistsConstraint;\n\t\t}\n\n\t\t// If there's a node exists constraint and we removed or revived the node, update constraint state\n\t\tif (rebasedChange.nodeExistsConstraint !== undefined) {\n\t\t\tconst violatedAfter = existenceState === NodeExistenceState.Dead;\n\n\t\t\tif (rebasedChange.nodeExistsConstraint.violated !== violatedAfter) {\n\t\t\t\trebasedChange.nodeExistsConstraint = {\n\t\t\t\t\t...rebasedChange.nodeExistsConstraint,\n\t\t\t\t\tviolated: violatedAfter,\n\t\t\t\t};\n\t\t\t\tconstraintState.violationCount += violatedAfter ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\tcrossFieldTable.rebasedNodeCache.set(key, rebasedChange);\n\t\treturn rebasedChange;\n\t}\n\n\tprivate pruneFieldMap(\n\t\tchangeset: FieldChangeMap,\n\t\tnodeMap: ChangeAtomIdMap<NodeChangeset>,\n\t): FieldChangeMap | undefined {\n\t\tconst prunedChangeset: FieldChangeMap = new Map();\n\t\tfor (const [field, fieldChange] of changeset) {\n\t\t\tconst handler = getChangeHandler(this.fieldKinds, fieldChange.fieldKind);\n\n\t\t\tconst prunedFieldChangeset = handler.rebaser.prune(fieldChange.change, (nodeId) =>\n\t\t\t\tthis.pruneNodeChange(nodeId, nodeMap),\n\t\t\t);\n\n\t\t\tif (!handler.isEmpty(prunedFieldChangeset)) {\n\t\t\t\tprunedChangeset.set(field, { ...fieldChange, change: brand(prunedFieldChangeset) });\n\t\t\t}\n\t\t}\n\n\t\treturn prunedChangeset.size > 0 ? prunedChangeset : undefined;\n\t}\n\n\tprivate pruneNodeChange(\n\t\tnodeId: NodeId,\n\t\tnodeMap: ChangeAtomIdMap<NodeChangeset>,\n\t): NodeId | undefined {\n\t\tconst changeset = tryGetFromNestedMap(nodeMap, nodeId.revision, nodeId.localId);\n\t\tassert(changeset !== undefined, 0x930 /* Unknown node ID */);\n\n\t\tconst prunedFields =\n\t\t\tchangeset.fieldChanges !== undefined\n\t\t\t\t? this.pruneFieldMap(changeset.fieldChanges, nodeMap)\n\t\t\t\t: undefined;\n\n\t\tconst prunedChange = { ...changeset, fieldChanges: prunedFields };\n\t\tif (prunedChange.fieldChanges === undefined) {\n\t\t\tdelete prunedChange.fieldChanges;\n\t\t}\n\n\t\tif (isEmptyNodeChangeset(prunedChange)) {\n\t\t\tdeleteFromNestedMap(nodeMap, nodeId.revision, nodeId.localId);\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tsetInNestedMap(nodeMap, nodeId.revision, nodeId.localId, prunedChange);\n\t\t\treturn nodeId;\n\t\t}\n\t}\n\n\tpublic buildEditor(changeReceiver: (change: ModularChangeset) => void): ModularEditBuilder {\n\t\treturn new ModularEditBuilder(this, changeReceiver);\n\t}\n}\n\nfunction composeBuildsDestroysAndRefreshers(changes: TaggedChange<ModularChangeset>[]) {\n\tconst allBuilds: ChangeAtomIdMap<TreeChunk> = new Map();\n\tconst allDestroys: ChangeAtomIdMap<number> = new Map();\n\tconst allRefreshers: ChangeAtomIdMap<TreeChunk> = new Map();\n\tfor (const taggedChange of changes) {\n\t\tconst revision = revisionFromTaggedChange(taggedChange);\n\t\tconst change = taggedChange.change;\n\t\tif (change.builds) {\n\t\t\tfor (const [revisionKey, innerMap] of change.builds) {\n\t\t\t\tconst setRevisionKey = revisionKey ?? revision;\n\t\t\t\tconst innerDstMap = getOrAddInMap(\n\t\t\t\t\tallBuilds,\n\t\t\t\t\tsetRevisionKey,\n\t\t\t\t\tnew Map<ChangesetLocalId, TreeChunk>(),\n\t\t\t\t);\n\t\t\t\tfor (const [id, chunk] of innerMap) {\n\t\t\t\t\t// Check for duplicate builds and prefer earlier ones.\n\t\t\t\t\t// This can happen in compositions of commits that needed to include repair data refreshers (e.g., undos):\n\t\t\t\t\t// In that case, it's possible for the refreshers to contain different trees because the latter\n\t\t\t\t\t// refresher may already reflect the changes made by the commit that includes the earlier\n\t\t\t\t\t// refresher. This composition includes the changes made by the commit that includes the\n\t\t\t\t\t// earlier refresher, so we need to include the build for the earlier refresher, otherwise\n\t\t\t\t\t// the produced changeset will build a tree one which those changes have already been applied\n\t\t\t\t\t// and also try to apply the changes again, effectively applying them twice.\n\t\t\t\t\t// Note that it would in principle be possible to adopt the later build and exclude from the\n\t\t\t\t\t// composition all the changes already reflected on the tree, but that is not something we\n\t\t\t\t\t// care to support at this time.\n\t\t\t\t\tif (!innerDstMap.has(id)) {\n\t\t\t\t\t\t// Check for earlier destroys that this build might cancel-out with.\n\t\t\t\t\t\tconst destroyCount = tryGetFromNestedMap(allDestroys, setRevisionKey, id);\n\t\t\t\t\t\tif (destroyCount === undefined) {\n\t\t\t\t\t\t\tinnerDstMap.set(id, chunk);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\t\tdestroyCount === chunk.topLevelLength,\n\t\t\t\t\t\t\t\t0x89b /* Expected build and destroy to have the same length */,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdeleteFromNestedMap(allDestroys, setRevisionKey, id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (innerDstMap.size === 0) {\n\t\t\t\t\tallBuilds.delete(setRevisionKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (change.destroys !== undefined) {\n\t\t\tfor (const [revisionKey, innerMap] of change.destroys) {\n\t\t\t\tconst setRevisionKey = revisionKey ?? revision;\n\t\t\t\tconst innerDstMap = getOrAddInMap(\n\t\t\t\t\tallDestroys,\n\t\t\t\t\tsetRevisionKey,\n\t\t\t\t\tnew Map<ChangesetLocalId, number>(),\n\t\t\t\t);\n\t\t\t\tfor (const [id, count] of innerMap) {\n\t\t\t\t\t// Check for earlier builds that this destroy might cancel-out with.\n\t\t\t\t\tconst chunk = tryGetFromNestedMap(allBuilds, setRevisionKey, id);\n\t\t\t\t\tif (chunk === undefined) {\n\t\t\t\t\t\tinnerDstMap.set(id, count);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tassert(\n\t\t\t\t\t\t\tcount === chunk.topLevelLength,\n\t\t\t\t\t\t\t0x89c /* Expected build and destroy to have the same length */,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdeleteFromNestedMap(allBuilds, setRevisionKey, id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (innerDstMap.size === 0) {\n\t\t\t\t\tallDestroys.delete(setRevisionKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// add all refreshers while preferring earlier ones\n\t\tif (change.refreshers) {\n\t\t\tpopulateNestedMap(change.refreshers, allRefreshers, false);\n\t\t}\n\t}\n\treturn { allBuilds, allDestroys, allRefreshers };\n}\n\nfunction invertBuilds(\n\tbuilds: ChangeAtomIdMap<TreeChunk> | undefined,\n\tfallbackRevision: RevisionTag | undefined,\n): ChangeAtomIdMap<number> | undefined {\n\tif (builds !== undefined) {\n\t\tconst destroys: ChangeAtomIdMap<number> = new Map();\n\t\tfor (const [revision, innerBuildMap] of builds) {\n\t\t\tconst initializedRevision = revision ?? fallbackRevision;\n\t\t\tconst innerDestroyMap: Map<ChangesetLocalId, number> = new Map();\n\t\t\tfor (const [id, chunk] of innerBuildMap) {\n\t\t\t\tinnerDestroyMap.set(id, chunk.topLevelLength);\n\t\t\t}\n\t\t\tdestroys.set(initializedRevision, innerDestroyMap);\n\t\t}\n\t\treturn destroys;\n\t}\n\treturn undefined;\n}\n\n/**\n * Returns the set of removed roots that should be in memory for the given change to be applied.\n * A removed root is relevant if any of the following is true:\n * - It is being inserted\n * - It is being restored\n * - It is being edited\n * - The ID it is associated with is being changed\n *\n * May be conservative by returning more removed roots than strictly necessary.\n *\n * Will never return IDs for non-root trees, even if they are removed.\n *\n * @param change - The change to be applied.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function* relevantRemovedRoots(\n\t{ change, revision }: TaggedChange<ModularChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Iterable<DeltaDetachedNodeId> {\n\tyield* relevantRemovedRootsFromFields(\n\t\tchange.fieldChanges,\n\t\trevision,\n\t\tchange.nodeChanges,\n\t\tfieldKinds,\n\t);\n}\n\nfunction* relevantRemovedRootsFromFields(\n\tchange: FieldChangeMap,\n\trevision: RevisionTag | undefined,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Iterable<DeltaDetachedNodeId> {\n\tfor (const [_, fieldChange] of change) {\n\t\tconst fieldRevision = fieldChange.revision ?? revision;\n\t\tconst handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);\n\t\tconst delegate = function* (node: NodeId): Iterable<DeltaDetachedNodeId> {\n\t\t\tconst nodeChangeset = tryGetFromNestedMap(nodeChanges, node.revision, node.localId);\n\t\t\tassert(nodeChangeset !== undefined, 0x931 /* Unknown node ID */);\n\t\t\tif (nodeChangeset.fieldChanges !== undefined) {\n\t\t\t\tyield* relevantRemovedRootsFromFields(\n\t\t\t\t\tnodeChangeset.fieldChanges,\n\t\t\t\t\tfieldRevision,\n\t\t\t\t\tnodeChanges,\n\t\t\t\t\tfieldKinds,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t\tyield* handler.relevantRemovedRoots(tagChange(fieldChange.change, fieldRevision), delegate);\n\t}\n}\n\n/**\n * Adds any refreshers missing from the provided change that are relevant to the change and\n * removes any refreshers from the provided change that are not relevant to the change.\n * This function enforces that all relevant removed roots have a corresponding build or refresher.\n *\n * @param change - The change that possibly has missing or superfluous refreshers. Not mutated by this function.\n * @param getDetachedNode - The function to retrieve a tree chunk from the corresponding detached node id.\n * @param removedRoots - The set of removed roots that should be in memory for the given change to be applied.\n * Can be retrieved by calling {@link relevantRemovedRoots}.\n */\nexport function updateRefreshers(\n\t{ change, revision }: TaggedChange<ModularChangeset>,\n\tgetDetachedNode: (id: DeltaDetachedNodeId) => TreeChunk | undefined,\n\tremovedRoots: Iterable<DeltaDetachedNodeId>,\n): ModularChangeset {\n\tconst refreshers: ChangeAtomIdMap<TreeChunk> = new Map();\n\tconst chunkLengths: Map<RevisionTag | undefined, BTree<number, number>> = new Map();\n\n\tif (change.builds !== undefined) {\n\t\tfor (const [major, buildsMap] of change.builds) {\n\t\t\tconst lengthTree = getOrAddInMap(chunkLengths, major, new BTree());\n\t\t\tfor (const [id, chunk] of buildsMap) {\n\t\t\t\tlengthTree.set(id, chunk.topLevelLength);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const root of removedRoots) {\n\t\tif (change.builds !== undefined) {\n\t\t\tconst major = root.major === revision ? undefined : root.major;\n\t\t\tconst lengthTree = chunkLengths.get(major);\n\n\t\t\tif (lengthTree !== undefined) {\n\t\t\t\tconst lengthPair = lengthTree.getPairOrNextLower(root.minor);\n\t\t\t\tif (lengthPair !== undefined) {\n\t\t\t\t\tconst [firstMinor, length] = lengthPair;\n\n\t\t\t\t\t// if the root minor is within the length of the minor of the retrieved pair\n\t\t\t\t\t// then there's no need to check for the detached node\n\t\t\t\t\tif (root.minor < firstMinor + length) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst node = getDetachedNode(root);\n\t\tassert(node !== undefined, 0x8cd /* detached node should exist */);\n\t\tsetInNestedMap(refreshers, root.major, root.minor, node);\n\t}\n\n\tconst {\n\t\tfieldChanges,\n\t\tnodeChanges,\n\t\tmaxId,\n\t\trevisions,\n\t\tconstraintViolationCount,\n\t\tbuilds,\n\t\tdestroys,\n\t} = change;\n\n\treturn makeModularChangeset(\n\t\tfieldChanges,\n\t\tnodeChanges,\n\t\tmaxId,\n\t\trevisions,\n\t\tconstraintViolationCount,\n\t\tbuilds,\n\t\tdestroys,\n\t\trefreshers,\n\t);\n}\n\n/**\n * @param change - The change to convert into a delta.\n * @param fieldKinds - The field kinds to delegate to.\n */\nexport function intoDelta(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): DeltaRoot {\n\tconst change = taggedChange.change;\n\t// Return an empty delta for changes with constraint violations\n\tif ((change.constraintViolationCount ?? 0) > 0) {\n\t\treturn emptyDelta;\n\t}\n\n\tconst revision = revisionFromTaggedChange(taggedChange);\n\tconst idAllocator = MemoizedIdRangeAllocator.fromNextId();\n\tconst rootDelta: Mutable<DeltaRoot> = {};\n\tconst fieldDeltas = intoDeltaImpl(\n\t\tchange.fieldChanges,\n\t\trevision,\n\t\tchange.nodeChanges,\n\t\tidAllocator,\n\t\tfieldKinds,\n\t);\n\tif (fieldDeltas.size > 0) {\n\t\trootDelta.fields = fieldDeltas;\n\t}\n\tif (change.builds && change.builds.size > 0) {\n\t\trootDelta.build = copyDetachedNodes(change.builds, revision);\n\t}\n\tif (change.destroys !== undefined && change.destroys.size > 0) {\n\t\tconst destroys: DeltaDetachedNodeDestruction[] = [];\n\t\tforEachInNestedMap(change.destroys, (count, major, minor) => {\n\t\t\tdestroys.push({\n\t\t\t\tid: makeDetachedNodeId(major ?? revision, minor),\n\t\t\t\tcount,\n\t\t\t});\n\t\t});\n\t\trootDelta.destroy = destroys;\n\t}\n\tif (change.refreshers && change.refreshers.size > 0) {\n\t\trootDelta.refreshers = copyDetachedNodes(change.refreshers, revision);\n\t}\n\treturn rootDelta;\n}\n\nfunction copyDetachedNodes(detachedNodes: ChangeAtomIdMap<TreeChunk>, revision?: RevisionTag) {\n\tconst copiedDetachedNodes: DeltaDetachedNodeBuild[] = [];\n\tforEachInNestedMap(detachedNodes, (chunk, major, minor) => {\n\t\tif (chunk.topLevelLength > 0) {\n\t\t\tconst trees = mapCursorField(chunk.cursor(), (c) =>\n\t\t\t\tcursorForMapTreeNode(mapTreeFromCursor(c)),\n\t\t\t);\n\t\t\tcopiedDetachedNodes.push({\n\t\t\t\tid: makeDetachedNodeId(major ?? revision, minor),\n\t\t\t\ttrees,\n\t\t\t});\n\t\t}\n\t});\n\treturn copiedDetachedNodes.length > 0 ? copiedDetachedNodes : undefined;\n}\n\n/**\n * @param change - The change to convert into a delta.\n * @param repairStore - The store to query for repair data.\n * @param path - The path of the node being altered by the change as defined by the input context.\n * Undefined for the root and for nodes that do not exist in the input context.\n */\nfunction intoDeltaImpl(\n\tchange: FieldChangeMap,\n\trevision: RevisionTag | undefined,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\tidAllocator: MemoizedIdRangeAllocator,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): Map<FieldKey, DeltaFieldChanges> {\n\tconst delta: Map<FieldKey, DeltaFieldChanges> = new Map();\n\tfor (const [field, fieldChange] of change) {\n\t\tconst fieldRevision = fieldChange.revision ?? revision;\n\t\tconst deltaField = getChangeHandler(fieldKinds, fieldChange.fieldKind).intoDelta(\n\t\t\ttagChange(fieldChange.change, fieldRevision),\n\t\t\t(childChange): DeltaFieldMap => {\n\t\t\t\tconst nodeChange = tryGetFromNestedMap(\n\t\t\t\t\tnodeChanges,\n\t\t\t\t\tchildChange.revision,\n\t\t\t\t\tchildChange.localId,\n\t\t\t\t);\n\n\t\t\t\tassert(nodeChange !== undefined, 0x932 /* Unknown node ID */);\n\t\t\t\treturn deltaFromNodeChange(\n\t\t\t\t\ttagChange(nodeChange, fieldRevision),\n\t\t\t\t\tnodeChanges,\n\t\t\t\t\tidAllocator,\n\t\t\t\t\tfieldKinds,\n\t\t\t\t);\n\t\t\t},\n\t\t\tidAllocator,\n\t\t);\n\t\tif (!isEmptyFieldChanges(deltaField)) {\n\t\t\tdelta.set(field, deltaField);\n\t\t}\n\t}\n\treturn delta;\n}\n\nfunction deltaFromNodeChange(\n\t{ change, revision }: TaggedChange<NodeChangeset>,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\tidAllocator: MemoizedIdRangeAllocator,\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n): DeltaFieldMap {\n\tif (change.fieldChanges !== undefined) {\n\t\treturn intoDeltaImpl(change.fieldChanges, revision, nodeChanges, idAllocator, fieldKinds);\n\t}\n\t// TODO: update the API to allow undefined to be returned here\n\treturn new Map();\n}\n\n/**\n * @internal\n * @param revInfos - This should describe all revisions in the rebase path, even if not part of the current base changeset.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `revInfos` must include\n * the changes [A⁻¹ X, Y, A'] for each rebase step of B.\n * @param baseRevisions - The set of revisions in the changeset being rebased over.\n * For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `baseRevisions` must include\n * revisions [A⁻¹ X, Y, A'] if rebasing over the composition of all those changes, or\n * revision [A⁻¹] for the first rebase, then [X], etc. if rebasing over edits individually.\n * @returns - RebaseRevisionMetadata to be passed to `FieldChangeRebaser.rebase`*\n */\nexport function rebaseRevisionMetadataFromInfo(\n\trevInfos: readonly RevisionInfo[],\n\tbaseRevisions: (RevisionTag | undefined)[],\n): RebaseRevisionMetadata {\n\tconst filteredRevisions: RevisionTag[] = [];\n\tfor (const revision of baseRevisions) {\n\t\tif (revision !== undefined) {\n\t\t\tfilteredRevisions.push(revision);\n\t\t}\n\t}\n\n\tconst getBaseRevisions = () => filteredRevisions;\n\treturn {\n\t\t...revisionMetadataSourceFromInfo(revInfos),\n\t\tgetBaseRevisions,\n\t};\n}\n\nfunction isEmptyNodeChangeset(change: NodeChangeset): boolean {\n\treturn change.fieldChanges === undefined && change.nodeExistsConstraint === undefined;\n}\n\nexport function getFieldKind(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n\tkind: FieldKindIdentifier,\n): FieldKindWithEditor {\n\tif (kind === genericFieldKind.identifier) {\n\t\treturn genericFieldKind;\n\t}\n\tconst fieldKind = fieldKinds.get(kind);\n\tassert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);\n\treturn withEditor(fieldKind);\n}\n\nexport function getChangeHandler(\n\tfieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,\n\tkind: FieldKindIdentifier,\n): FieldChangeHandler<unknown> {\n\treturn getFieldKind(fieldKinds, kind).changeHandler;\n}\n\n// TODO: TFieldData could instead just be a numeric ID generated by the CrossFieldTable\n// The CrossFieldTable could have a generic field ID to context table\ninterface CrossFieldTable<TFieldData> {\n\tsrcTable: CrossFieldMap<unknown>;\n\tdstTable: CrossFieldMap<unknown>;\n\tsrcDependents: CrossFieldMap<TFieldData>;\n\tdstDependents: CrossFieldMap<TFieldData>;\n\tinvalidatedFields: Set<TFieldData>;\n}\n\ninterface InvertTable extends CrossFieldTable<FieldChange> {\n\toriginalFieldToContext: Map<FieldChange, InvertContext>;\n}\n\ninterface InvertContext {\n\tinvertedField: FieldChange;\n\trevision: RevisionTag | undefined;\n}\n\ninterface RebaseTable extends CrossFieldTable<FieldChange> {\n\t/**\n\t * Maps from the FieldChange key used for the CrossFieldTable (which is the FieldChange being rebased)\n\t * to context for the field.\n\t */\n\tfieldToContext: Map<FieldChange, RebaseFieldContext>;\n\t/**\n\t * This map caches the output of a prior rebasing computation for a node, keyed on that computation's input.\n\t * The input for such a computation is characterized by a pair of node changesets:\n\t * - The node changeset from the input changeset being rebased\n\t * - The corresponding node changeset from the changeset being rebased over.\n\t *\n\t * Either of these may be undefined so we adopt the following convention:\n\t * - If the node changeset from the changeset being rebased is defined, then we use that as the key\n\t * - Otherwise, if the node changeset from the changeset being rebased over is defined, then we use that as the key\n\t * - Otherwise, we don't cache the output (which will be undefined anyway).\n\t *\n\t * This map is needed once we switch from the initial pass (which generates a new changeset) to the second pass which\n\t * performs surgery on the changeset generated in the first pass: we don't want to re-run the rebasing of nested\n\t * changes. Instead we want to keep using the objects generated in the first pass and mutate them where needed.\n\t */\n\trebasedNodeCache: Map<NodeChangeset, NodeChangeset>;\n\n\t/**\n\t * List of (newId, baseId) pairs encountered so far.\n\t */\n\tnodeIdPairs: [\n\t\tNodeId | undefined,\n\t\tTaggedChange<NodeId> | undefined,\n\t\tNodeExistenceState | undefined,\n\t][];\n}\n\ninterface RebaseFieldContext {\n\tbaseChange: FieldChange;\n\tbaseRevision: RevisionTag | undefined;\n\tnewChange: FieldChange;\n\trebasedChange: FieldChange;\n}\n\nfunction newComposeTable(): ComposeTable {\n\treturn {\n\t\t...newCrossFieldTable<FieldChange>(),\n\t\tfieldToContext: new Map(),\n\t\tnodeIds: new Map(),\n\t\tnodeIdPairs: [],\n\t};\n}\n\ninterface ComposeTable extends CrossFieldTable<FieldChange> {\n\t/**\n\t * Maps from an input changeset for a field (from change1 if it has one, from change2 otherwise) to the context for that field.\n\t */\n\tfieldToContext: Map<FieldChange, ComposeFieldContext>;\n\n\t/**\n\t * The set of node IDs from the second changeset which have been encountered.\n\t */\n\tnodeIds: NestedSet<RevisionTag, ChangesetLocalId>;\n\n\tnodeIdPairs: [TaggedChange<NodeId> | undefined, TaggedChange<NodeId> | undefined][];\n}\n\ninterface ComposeFieldContext {\n\tchange1: TaggedChange<FieldChangeset>;\n\tchange2: TaggedChange<FieldChangeset>;\n\tcomposedChange: FieldChange;\n}\n\nfunction newCrossFieldTable<T>(): CrossFieldTable<T> {\n\treturn {\n\t\tsrcTable: new Map(),\n\t\tdstTable: new Map(),\n\t\tsrcDependents: new Map(),\n\t\tdstDependents: new Map(),\n\t\tinvalidatedFields: new Set(),\n\t};\n}\n\n/**\n * @internal\n */\ninterface ConstraintState {\n\tviolationCount: number;\n}\n\nfunction newConstraintState(violationCount: number): ConstraintState {\n\treturn {\n\t\tviolationCount,\n\t};\n}\n\ninterface CrossFieldManagerI<T> extends CrossFieldManager {\n\ttable: CrossFieldTable<T>;\n}\n\nfunction newCrossFieldManager<T>(\n\tcrossFieldTable: CrossFieldTable<T>,\n\tcurrentFieldKey: T,\n\tallowInval = true,\n): CrossFieldManagerI<T> {\n\tconst getMap = (target: CrossFieldTarget) =>\n\t\ttarget === CrossFieldTarget.Source ? crossFieldTable.srcTable : crossFieldTable.dstTable;\n\n\tconst getDependents = (target: CrossFieldTarget) =>\n\t\ttarget === CrossFieldTarget.Source\n\t\t\t? crossFieldTable.srcDependents\n\t\t\t: crossFieldTable.dstDependents;\n\n\tconst manager = {\n\t\ttable: crossFieldTable,\n\n\t\tset: (\n\t\t\ttarget: CrossFieldTarget,\n\t\t\trevision: RevisionTag | undefined,\n\t\t\tid: ChangesetLocalId,\n\t\t\tcount: number,\n\t\t\tnewValue: unknown,\n\t\t\tinvalidateDependents: boolean,\n\t\t) => {\n\t\t\tif (invalidateDependents && allowInval) {\n\t\t\t\tconst lastChangedId = (id as number) + count - 1;\n\t\t\t\tlet firstId = id;\n\t\t\t\twhile (firstId <= lastChangedId) {\n\t\t\t\t\tconst dependentEntry = getFirstFromCrossFieldMap(\n\t\t\t\t\t\tgetDependents(target),\n\t\t\t\t\t\trevision,\n\t\t\t\t\t\tfirstId,\n\t\t\t\t\t\tlastChangedId - firstId + 1,\n\t\t\t\t\t);\n\t\t\t\t\tif (dependentEntry.value !== undefined) {\n\t\t\t\t\t\tcrossFieldTable.invalidatedFields.add(dependentEntry.value);\n\t\t\t\t\t}\n\n\t\t\t\t\tfirstId = brand(firstId + dependentEntry.length);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetInCrossFieldMap(getMap(target), revision, id, count, newValue);\n\t\t},\n\n\t\tget: (\n\t\t\ttarget: CrossFieldTarget,\n\t\t\trevision: RevisionTag | undefined,\n\t\t\tid: ChangesetLocalId,\n\t\t\tcount: number,\n\t\t\taddDependency: boolean,\n\t\t) => {\n\t\t\tif (addDependency) {\n\t\t\t\t// We assume that if there is already an entry for this ID it is because\n\t\t\t\t// a field handler has called compose on the same node multiple times.\n\t\t\t\t// In this case we only want to update the latest version, so we overwrite the dependency.\n\t\t\t\tsetInCrossFieldMap(getDependents(target), revision, id, count, currentFieldKey);\n\t\t\t}\n\t\t\treturn getFirstFromCrossFieldMap(getMap(target), revision, id, count);\n\t\t},\n\t};\n\n\treturn manager;\n}\n\nfunction makeModularChangeset(\n\tfieldChanges: FieldChangeMap | undefined = undefined,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset> | undefined = undefined,\n\tmaxId: number = -1,\n\trevisions: readonly RevisionInfo[] | undefined = undefined,\n\tconstraintViolationCount: number | undefined = undefined,\n\tbuilds?: ChangeAtomIdMap<TreeChunk>,\n\tdestroys?: ChangeAtomIdMap<number>,\n\trefreshers?: ChangeAtomIdMap<TreeChunk>,\n): ModularChangeset {\n\tconst changeset: Mutable<ModularChangeset> = {\n\t\tfieldChanges: fieldChanges ?? new Map(),\n\t\tnodeChanges: nodeChanges ?? new Map(),\n\t};\n\tif (revisions !== undefined && revisions.length > 0) {\n\t\tchangeset.revisions = revisions;\n\t}\n\tif (maxId >= 0) {\n\t\tchangeset.maxId = brand(maxId);\n\t}\n\tif (constraintViolationCount !== undefined && constraintViolationCount > 0) {\n\t\tchangeset.constraintViolationCount = constraintViolationCount;\n\t}\n\tif (builds !== undefined && builds.size > 0) {\n\t\tchangeset.builds = builds;\n\t}\n\tif (destroys !== undefined && destroys.size > 0) {\n\t\tchangeset.destroys = destroys;\n\t}\n\tif (refreshers !== undefined && refreshers.size > 0) {\n\t\tchangeset.refreshers = refreshers;\n\t}\n\treturn changeset;\n}\n\nexport class ModularEditBuilder extends EditBuilder<ModularChangeset> {\n\tprivate transactionDepth: number = 0;\n\tprivate idAllocator: IdAllocator;\n\n\tpublic constructor(\n\t\tfamily: ChangeFamily<ChangeFamilyEditor, ModularChangeset>,\n\t\tchangeReceiver: (change: ModularChangeset) => void,\n\t) {\n\t\tsuper(family, changeReceiver);\n\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t}\n\n\tpublic override enterTransaction(): void {\n\t\tthis.transactionDepth += 1;\n\t\tif (this.transactionDepth === 1) {\n\t\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t\t}\n\t}\n\n\tpublic override exitTransaction(): void {\n\t\tassert(this.transactionDepth > 0, 0x5b9 /* Cannot exit inexistent transaction */);\n\t\tthis.transactionDepth -= 1;\n\t\tif (this.transactionDepth === 0) {\n\t\t\tthis.idAllocator = idAllocatorFromMaxId();\n\t\t}\n\t}\n\n\t/**\n\t * @param firstId - The ID to associate with the first node\n\t * @param content - The node(s) to build. Can be in either Field or Node mode.\n\t * @returns A description of the edit that can be passed to `submitChanges`.\n\t */\n\tpublic buildTrees(\n\t\tfirstId: ChangesetLocalId,\n\t\tcontent: ITreeCursorSynchronous,\n\t): GlobalEditDescription {\n\t\tif (content.mode === CursorLocationType.Fields && content.getFieldLength() === 0) {\n\t\t\treturn { type: \"global\" };\n\t\t}\n\t\tconst builds: ChangeAtomIdMap<TreeChunk> = new Map();\n\t\tconst innerMap = new Map();\n\t\tbuilds.set(undefined, innerMap);\n\t\tconst chunk =\n\t\t\tcontent.mode === CursorLocationType.Fields\n\t\t\t\t? chunkFieldSingle(content, defaultChunkPolicy)\n\t\t\t\t: chunkTree(content, defaultChunkPolicy);\n\t\tinnerMap.set(firstId, chunk);\n\n\t\treturn {\n\t\t\ttype: \"global\",\n\t\t\tbuilds,\n\t\t};\n\t}\n\n\t/**\n\t * Adds a change to the edit builder\n\t * @param field - the field which is being edited\n\t * @param fieldKind - the kind of the field\n\t * @param change - the change to the field\n\t * @param maxId - the highest `ChangesetLocalId` used in this change\n\t */\n\tpublic submitChange(\n\t\tfield: FieldUpPath,\n\t\tfieldKind: FieldKindIdentifier,\n\t\tchange: FieldChangeset,\n\t): void {\n\t\tconst modularChange = buildModularChangesetFromField(\n\t\t\tfield,\n\t\t\t{ fieldKind, change },\n\t\t\tnew Map(),\n\t\t\tthis.idAllocator,\n\t\t);\n\t\tthis.applyChange(modularChange);\n\t}\n\n\tpublic submitChanges(changes: EditDescription[]) {\n\t\tconst modularChange = this.buildChanges(changes);\n\t\tthis.applyChange(modularChange);\n\t}\n\n\tpublic buildChanges(changes: EditDescription[]): ModularChangeset {\n\t\tconst changeMaps = changes.map((change) =>\n\t\t\tmakeAnonChange(\n\t\t\t\tchange.type === \"global\"\n\t\t\t\t\t? makeModularChangeset(\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tthis.idAllocator.getMaxId(),\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tchange.builds,\n\t\t\t\t\t )\n\t\t\t\t\t: buildModularChangesetFromField(\n\t\t\t\t\t\t\tchange.field,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfieldKind: change.fieldKind,\n\t\t\t\t\t\t\t\tchange: change.change,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnew Map(),\n\t\t\t\t\t\t\tthis.idAllocator,\n\t\t\t\t\t ),\n\t\t\t),\n\t\t);\n\t\tconst composedChange: Mutable<ModularChangeset> =\n\t\t\tthis.changeFamily.rebaser.compose(changeMaps);\n\n\t\tconst maxId: ChangesetLocalId = brand(this.idAllocator.getMaxId());\n\t\tif (maxId >= 0) {\n\t\t\tcomposedChange.maxId = maxId;\n\t\t}\n\t\treturn composedChange;\n\t}\n\n\tpublic generateId(count?: number): ChangesetLocalId {\n\t\treturn brand(this.idAllocator.allocate(count));\n\t}\n\n\tpublic addNodeExistsConstraint(path: UpPath): void {\n\t\tconst nodeChange: NodeChangeset = {\n\t\t\tnodeExistsConstraint: { violated: false },\n\t\t};\n\n\t\tthis.applyChange(\n\t\t\tbuildModularChangesetFromNode(path, nodeChange, new Map(), this.idAllocator),\n\t\t);\n\t}\n}\n\nfunction buildModularChangesetFromField(\n\tpath: FieldUpPath,\n\tfieldChange: FieldChange,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\tidAllocator: IdAllocator = idAllocatorFromMaxId(),\n): ModularChangeset {\n\tconst fieldChanges: FieldChangeMap = new Map([[path.field, fieldChange]]);\n\n\tif (path.parent === undefined) {\n\t\treturn makeModularChangeset(fieldChanges, nodeChanges, idAllocator.getMaxId());\n\t}\n\n\tconst nodeChangeset: NodeChangeset = {\n\t\tfieldChanges,\n\t};\n\n\treturn buildModularChangesetFromNode(path.parent, nodeChangeset, nodeChanges, idAllocator);\n}\n\nfunction buildModularChangesetFromNode(\n\tpath: UpPath,\n\tnodeChange: NodeChangeset,\n\tnodeChanges: ChangeAtomIdMap<NodeChangeset>,\n\tidAllocator: IdAllocator,\n): ModularChangeset {\n\tconst nodeId: NodeId = { localId: brand(idAllocator.allocate()) };\n\tsetInNestedMap(nodeChanges, nodeId.revision, nodeId.localId, nodeChange);\n\tconst fieldChangeset = genericFieldKind.changeHandler.editor.buildChildChange(\n\t\tpath.parentIndex,\n\t\tnodeId,\n\t);\n\n\tconst fieldChange: FieldChange = {\n\t\tfieldKind: genericFieldKind.identifier,\n\t\tchange: fieldChangeset,\n\t};\n\n\treturn buildModularChangesetFromField(\n\t\t{ parent: path.parent, field: path.parentField },\n\t\tfieldChange,\n\t\tnodeChanges,\n\t\tidAllocator,\n\t);\n}\n\n/**\n * @internal\n */\nexport interface FieldEditDescription {\n\ttype: \"field\";\n\tfield: FieldUpPath;\n\tfieldKind: FieldKindIdentifier;\n\tchange: FieldChangeset;\n}\n\n/**\n * @internal\n */\nexport interface GlobalEditDescription {\n\ttype: \"global\";\n\tbuilds?: ChangeAtomIdMap<TreeChunk>;\n}\n\n/**\n * @internal\n */\nexport type EditDescription = FieldEditDescription | GlobalEditDescription;\n\nfunction getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]): {\n\trevInfos: RevisionInfo[];\n\tmaxId: ChangesetLocalId;\n} {\n\tlet maxId = -1;\n\tconst revInfos: RevisionInfo[] = [];\n\tfor (const taggedChange of changes) {\n\t\tconst change = taggedChange.change;\n\t\tmaxId = Math.max(change.maxId ?? -1, maxId);\n\t\trevInfos.push(...revisionInfoFromTaggedChange(taggedChange));\n\t}\n\n\tconst revisions = new Set<RevisionTag>();\n\tconst rolledBackRevisions: RevisionTag[] = [];\n\tfor (const info of revInfos) {\n\t\trevisions.add(info.revision);\n\t\tif (info.rollbackOf !== undefined) {\n\t\t\trolledBackRevisions.push(info.rollbackOf);\n\t\t}\n\t}\n\n\trolledBackRevisions.reverse();\n\tfor (const revision of rolledBackRevisions) {\n\t\tif (!revisions.has(revision)) {\n\t\t\trevInfos.push({ revision });\n\t\t}\n\t}\n\n\treturn { maxId: brand(maxId), revInfos };\n}\n\nfunction revisionInfoFromTaggedChange(\n\ttaggedChange: TaggedChange<ModularChangeset>,\n): RevisionInfo[] {\n\tconst revInfos: RevisionInfo[] = [];\n\tif (taggedChange.change.revisions !== undefined) {\n\t\trevInfos.push(...taggedChange.change.revisions);\n\t} else if (taggedChange.revision !== undefined) {\n\t\tconst info: Mutable<RevisionInfo> = { revision: taggedChange.revision };\n\t\tif (taggedChange.rollbackOf !== undefined) {\n\t\t\tinfo.rollbackOf = taggedChange.rollbackOf;\n\t\t}\n\t\trevInfos.push(info);\n\t}\n\treturn revInfos;\n}\n\nfunction revisionFromTaggedChange(change: TaggedChange<ModularChangeset>): RevisionTag | undefined {\n\treturn change.revision ?? revisionFromRevInfos(change.change.revisions);\n}\n\nfunction revisionFromRevInfos(\n\trevInfos: undefined | readonly RevisionInfo[],\n): RevisionTag | undefined {\n\tif (revInfos === undefined || revInfos.length !== 1) {\n\t\treturn undefined;\n\t}\n\treturn revInfos[0].revision;\n}\n"]}
@@ -3,10 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { Static } from "@sinclair/typebox";
6
- import { schemaFormat, ChangesetLocalId } from "../../core/index.js";
6
+ import { ChangesetLocalId, schemaFormat } from "../../core/index.js";
7
7
  import { JsonCompatibleReadOnly } from "../../util/index.js";
8
8
  export declare const ChangesetLocalIdSchema: import("@sinclair/typebox").TUnsafe<ChangesetLocalId>;
9
9
  export declare const EncodedChangeAtomId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnsafe<ChangesetLocalId>, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>]>, import("@sinclair/typebox").TUnsafe<ChangesetLocalId>]>;
10
+ export type EncodedChangeAtomId = Static<typeof EncodedChangeAtomId>;
10
11
  declare const EncodedFieldChange: import("@sinclair/typebox").TObject<{
11
12
  fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormat.FieldKey>;
12
13
  fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormat.FieldKindIdentifier>;
@@ -32,19 +33,11 @@ declare const EncodedFieldChangeMap: import("@sinclair/typebox").TArray<import("
32
33
  */
33
34
  export type EncodedFieldChangeMap = Static<typeof EncodedFieldChangeMap>;
34
35
  export declare const EncodedNodeChangeset: import("@sinclair/typebox").TObject<{
35
- valueChange: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
36
- revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TUnsafe<import("../../util/brand.js").Brand<import("@fluidframework/id-compressor").OpSpaceCompressedId, "EncodedRevisionTag">>]>>;
37
- value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
38
- }>>;
39
36
  fieldChanges: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
40
37
  fieldKey: import("@sinclair/typebox").TUnsafe<schemaFormat.FieldKey>;
41
38
  fieldKind: import("@sinclair/typebox").TUnsafe<schemaFormat.FieldKindIdentifier>;
42
39
  change: import("@sinclair/typebox").TAny;
43
40
  }>>>;
44
- valueConstraint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
45
- value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
46
- violated: import("@sinclair/typebox").TBoolean;
47
- }>>;
48
41
  nodeExistsConstraint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
49
42
  violated: import("@sinclair/typebox").TBoolean;
50
43
  }>>;
@@ -73,8 +66,8 @@ export declare const EncodedBuilds: import("@sinclair/typebox").TObject<{
73
66
  * TODO: Strongly typing this here may result in redundant schema validation of this data.
74
67
  */
75
68
  trees: import("@sinclair/typebox").TObject<{
76
- version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
77
69
  data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
70
+ version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
78
71
  identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
79
72
  shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
80
73
  a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
@@ -111,8 +104,8 @@ export declare const EncodedModularChangeset: import("@sinclair/typebox").TObjec
111
104
  * TODO: Strongly typing this here may result in redundant schema validation of this data.
112
105
  */
113
106
  trees: import("@sinclair/typebox").TObject<{
114
- version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
115
107
  data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
108
+ version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
116
109
  identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
117
110
  shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
118
111
  a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
@@ -137,8 +130,8 @@ export declare const EncodedModularChangeset: import("@sinclair/typebox").TObjec
137
130
  * TODO: Strongly typing this here may result in redundant schema validation of this data.
138
131
  */
139
132
  trees: import("@sinclair/typebox").TObject<{
140
- version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
141
133
  data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
134
+ version: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TLiteral<number>]>;
142
135
  identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
143
136
  shapes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
144
137
  a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFormat.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAEN,sBAAsB,EAEtB,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,sBAAsB,uDAEjC,CAAC;AAEH,eAAO,MAAM,mBAAmB,2aAG9B,CAAC;AAoBH,QAAA,MAAM,kBAAkB;;;;EAUvB,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,OAAO,kBAAkB,CAAC;IAC5E;;OAEG;IACH,MAAM,EAAE,sBAAsB,CAAC;CAC/B;AAED,QAAA,MAAM,qBAAqB;;;;GAAiC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAUzE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;EAQhC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;EAM/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,gBAAgB,qCAA6C,CAAC;AAE3E,eAAO,MAAM,YAAY,sKAOxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB,mtBAM9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa;;IAGxB;;;OAGG;;;;;;;;;;;;;;;;;;;;EAIJ,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;QAXlC;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;QAHH;;;WAGG;;;;;;;;;;;;;;;;;;;;;EAiBJ,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"modularChangeFormat.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAqB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EACN,sBAAsB,EAGtB,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,sBAAsB,uDAEjC,CAAC;AAEH,eAAO,MAAM,mBAAmB,2aAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,QAAA,MAAM,kBAAkB;;;;EAUvB,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,OAAO,kBAAkB,CAAC;IAC5E;;OAEG;IACH,MAAM,EAAE,sBAAsB,CAAC;CAC/B;AAED,QAAA,MAAM,qBAAqB;;;;GAAiC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAUzE,eAAO,MAAM,oBAAoB;;;;;;;;;EAMhC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;EAM/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,gBAAgB,qCAA6C,CAAC;AAE3E,eAAO,MAAM,YAAY,sKAOxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB,mtBAM9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,aAAa;;IAGxB;;;OAGG;;;;;;;;;;;;;;;;;;;;EAIJ,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;QAXlC;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;QAHH;;;WAGG;;;;;;;;;;;;;;;;;;;;;EAiBJ,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -17,14 +17,6 @@ exports.EncodedChangeAtomId = typebox_1.Type.Union([
17
17
  typebox_1.Type.Tuple([exports.ChangesetLocalIdSchema, index_js_1.RevisionTagSchema]),
18
18
  exports.ChangesetLocalIdSchema,
19
19
  ]);
20
- const EncodedValueChange = typebox_1.Type.Object({
21
- revision: typebox_1.Type.Optional(index_js_1.RevisionTagSchema),
22
- value: typebox_1.Type.Optional(index_js_2.JsonCompatibleReadOnlySchema),
23
- }, noAdditionalProps);
24
- const EncodedValueConstraint = typebox_1.Type.Object({
25
- value: typebox_1.Type.Optional(index_js_2.JsonCompatibleReadOnlySchema),
26
- violated: typebox_1.Type.Boolean(),
27
- }, noAdditionalProps);
28
20
  const EncodedFieldChange = typebox_1.Type.Object({
29
21
  fieldKey: index_js_1.schemaFormat.FieldKeySchema,
30
22
  fieldKind: index_js_1.schemaFormat.FieldKindIdentifierSchema,
@@ -38,9 +30,7 @@ const EncodedNodeExistsConstraint = typebox_1.Type.Object({
38
30
  violated: typebox_1.Type.Boolean(),
39
31
  }, noAdditionalProps);
40
32
  exports.EncodedNodeChangeset = typebox_1.Type.Object({
41
- valueChange: typebox_1.Type.Optional(EncodedValueChange),
42
33
  fieldChanges: typebox_1.Type.Optional(EncodedFieldChangeMap),
43
- valueConstraint: typebox_1.Type.Optional(EncodedValueConstraint),
44
34
  nodeExistsConstraint: typebox_1.Type.Optional(EncodedNodeExistsConstraint),
45
35
  }, noAdditionalProps);
46
36
  exports.EncodedRevisionInfo = typebox_1.Type.Object({
@@ -1 +1 @@
1
- {"version":3,"file":"modularChangeFormat.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormat.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 { ObjectOptions, Static, Type } from \"@sinclair/typebox\";\nimport { schemaFormat, RevisionTagSchema, ChangesetLocalId } from \"../../core/index.js\";\nimport {\n\tbrandedNumberType,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnlySchema,\n} from \"../../util/index.js\";\nimport { EncodedFieldBatch } from \"../chunked-forest/index.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nexport const ChangesetLocalIdSchema = brandedNumberType<ChangesetLocalId>({\n\tmultipleOf: 1,\n});\n\nexport const EncodedChangeAtomId = Type.Union([\n\tType.Tuple([ChangesetLocalIdSchema, RevisionTagSchema]),\n\tChangesetLocalIdSchema,\n]);\n\nconst EncodedValueChange = Type.Object(\n\t{\n\t\trevision: Type.Optional(RevisionTagSchema),\n\t\tvalue: Type.Optional(JsonCompatibleReadOnlySchema),\n\t},\n\tnoAdditionalProps,\n);\ntype EncodedValueChange = Static<typeof EncodedValueChange>;\n\nconst EncodedValueConstraint = Type.Object(\n\t{\n\t\tvalue: Type.Optional(JsonCompatibleReadOnlySchema),\n\t\tviolated: Type.Boolean(),\n\t},\n\tnoAdditionalProps,\n);\ntype EncodedValueConstraint = Static<typeof EncodedValueConstraint>;\n\nconst EncodedFieldChange = Type.Object(\n\t{\n\t\tfieldKey: schemaFormat.FieldKeySchema,\n\t\tfieldKind: schemaFormat.FieldKindIdentifierSchema,\n\t\t// Implementation note: node and field change encoding is mutually recursive.\n\t\t// This field marks a boundary in that recursion to avoid constructing excessively complex\n\t\t// recursive types. Encoded changes are validated at this boundary at runtime--see modularChangeCodecs.ts.\n\t\tchange: JsonCompatibleReadOnlySchema,\n\t},\n\tnoAdditionalProps,\n);\n\nexport interface EncodedFieldChange extends Static<typeof EncodedFieldChange> {\n\t/**\n\t * Encoded in format selected by `fieldKind`\n\t */\n\tchange: JsonCompatibleReadOnly;\n}\n\nconst EncodedFieldChangeMap = Type.Array(EncodedFieldChange);\n\n/**\n * Format for encoding as json.\n *\n * This chooses to use lists of named objects instead of maps:\n * this choice is somewhat arbitrary, but avoids user data being used as object keys,\n * which can sometimes be an issue (for example handling that for \"__proto__\" can require care).\n */\nexport type EncodedFieldChangeMap = Static<typeof EncodedFieldChangeMap>;\n\nconst EncodedNodeExistsConstraint = Type.Object(\n\t{\n\t\tviolated: Type.Boolean(),\n\t},\n\tnoAdditionalProps,\n);\ntype EncodedNodeExistsConstraint = Static<typeof EncodedNodeExistsConstraint>;\n\nexport const EncodedNodeChangeset = Type.Object(\n\t{\n\t\tvalueChange: Type.Optional(EncodedValueChange),\n\t\tfieldChanges: Type.Optional(EncodedFieldChangeMap),\n\t\tvalueConstraint: Type.Optional(EncodedValueConstraint),\n\t\tnodeExistsConstraint: Type.Optional(EncodedNodeExistsConstraint),\n\t},\n\tnoAdditionalProps,\n);\n\n/**\n * Format for encoding as json.\n */\nexport type EncodedNodeChangeset = Static<typeof EncodedNodeChangeset>;\n\nexport const EncodedRevisionInfo = Type.Object(\n\t{\n\t\trevision: Type.Readonly(RevisionTagSchema),\n\t\trollbackOf: Type.ReadonlyOptional(RevisionTagSchema),\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedRevisionInfo = Static<typeof EncodedRevisionInfo>;\n\n/**\n * Index of field in an EncodedFieldBatch.\n */\nexport const EncodedTreeIndex = Type.Number({ multipleOf: 1, minimum: 0 });\n\nexport const CommitBuilds = Type.Array(\n\tType.Tuple([\n\t\t// ID for first node\n\t\tChangesetLocalIdSchema,\n\t\t// Index for a TreeChunk that represents all the nodes\n\t\tEncodedTreeIndex,\n\t]),\n);\nexport type CommitBuilds = Static<typeof CommitBuilds>;\n\nexport const EncodedBuildsArray = Type.Array(\n\tType.Union([\n\t\tType.Tuple([CommitBuilds, RevisionTagSchema]),\n\t\t// Revision is omitted when undefined\n\t\tType.Tuple([CommitBuilds]),\n\t]),\n);\n\nexport type EncodedBuildsArray = Static<typeof EncodedBuildsArray>;\n\nexport const EncodedBuilds = Type.Object(\n\t{\n\t\tbuilds: EncodedBuildsArray,\n\t\t/**\n\t\t * Fields indexed by the EncodedTreeIndexes above.\n\t\t * TODO: Strongly typing this here may result in redundant schema validation of this data.\n\t\t */\n\t\ttrees: EncodedFieldBatch,\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedBuilds = Static<typeof EncodedBuilds>;\n\nexport const EncodedModularChangeset = Type.Object(\n\t{\n\t\tmaxId: Type.Optional(ChangesetLocalIdSchema),\n\t\tchanges: EncodedFieldChangeMap,\n\t\trevisions: Type.ReadonlyOptional(Type.Array(EncodedRevisionInfo)),\n\t\tbuilds: Type.Optional(EncodedBuilds),\n\t\trefreshers: Type.Optional(EncodedBuilds),\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedModularChangeset = Static<typeof EncodedModularChangeset>;\n"]}
1
+ {"version":3,"file":"modularChangeFormat.js","sourceRoot":"","sources":["../../../src/feature-libraries/modular-schema/modularChangeFormat.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+CAAgE;AAEhE,kDAAwF;AACxF,kDAI6B;AAC7B,yDAA+D;AAE/D,MAAM,iBAAiB,GAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AAE5D,QAAA,sBAAsB,GAAG,IAAA,4BAAiB,EAAmB;IACzE,UAAU,EAAE,CAAC;CACb,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,cAAI,CAAC,KAAK,CAAC;IAC7C,cAAI,CAAC,KAAK,CAAC,CAAC,8BAAsB,EAAE,4BAAiB,CAAC,CAAC;IACvD,8BAAsB;CACtB,CAAC,CAAC;AAGH,MAAM,kBAAkB,GAAG,cAAI,CAAC,MAAM,CACrC;IACC,QAAQ,EAAE,uBAAY,CAAC,cAAc;IACrC,SAAS,EAAE,uBAAY,CAAC,yBAAyB;IACjD,6EAA6E;IAC7E,0FAA0F;IAC1F,0GAA0G;IAC1G,MAAM,EAAE,uCAA4B;CACpC,EACD,iBAAiB,CACjB,CAAC;AASF,MAAM,qBAAqB,GAAG,cAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAW7D,MAAM,2BAA2B,GAAG,cAAI,CAAC,MAAM,CAC9C;IACC,QAAQ,EAAE,cAAI,CAAC,OAAO,EAAE;CACxB,EACD,iBAAiB,CACjB,CAAC;AAGW,QAAA,oBAAoB,GAAG,cAAI,CAAC,MAAM,CAC9C;IACC,YAAY,EAAE,cAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClD,oBAAoB,EAAE,cAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAChE,EACD,iBAAiB,CACjB,CAAC;AAOW,QAAA,mBAAmB,GAAG,cAAI,CAAC,MAAM,CAC7C;IACC,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,4BAAiB,CAAC;IAC1C,UAAU,EAAE,cAAI,CAAC,gBAAgB,CAAC,4BAAiB,CAAC;CACpD,EACD,iBAAiB,CACjB,CAAC;AAIF;;GAEG;AACU,QAAA,gBAAgB,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9D,QAAA,YAAY,GAAG,cAAI,CAAC,KAAK,CACrC,cAAI,CAAC,KAAK,CAAC;IACV,oBAAoB;IACpB,8BAAsB;IACtB,sDAAsD;IACtD,wBAAgB;CAChB,CAAC,CACF,CAAC;AAGW,QAAA,kBAAkB,GAAG,cAAI,CAAC,KAAK,CAC3C,cAAI,CAAC,KAAK,CAAC;IACV,cAAI,CAAC,KAAK,CAAC,CAAC,oBAAY,EAAE,4BAAiB,CAAC,CAAC;IAC7C,qCAAqC;IACrC,cAAI,CAAC,KAAK,CAAC,CAAC,oBAAY,CAAC,CAAC;CAC1B,CAAC,CACF,CAAC;AAIW,QAAA,aAAa,GAAG,cAAI,CAAC,MAAM,CACvC;IACC,MAAM,EAAE,0BAAkB;IAC1B;;;OAGG;IACH,KAAK,EAAE,4BAAiB;CACxB,EACD,iBAAiB,CACjB,CAAC;AAIW,QAAA,uBAAuB,GAAG,cAAI,CAAC,MAAM,CACjD;IACC,KAAK,EAAE,cAAI,CAAC,QAAQ,CAAC,8BAAsB,CAAC;IAC5C,OAAO,EAAE,qBAAqB;IAC9B,SAAS,EAAE,cAAI,CAAC,gBAAgB,CAAC,cAAI,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC;IACjE,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,qBAAa,CAAC;IACpC,UAAU,EAAE,cAAI,CAAC,QAAQ,CAAC,qBAAa,CAAC;CACxC,EACD,iBAAiB,CACjB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ObjectOptions, Static, Type } from \"@sinclair/typebox\";\n\nimport { ChangesetLocalId, RevisionTagSchema, schemaFormat } from \"../../core/index.js\";\nimport {\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnlySchema,\n\tbrandedNumberType,\n} from \"../../util/index.js\";\nimport { EncodedFieldBatch } from \"../chunked-forest/index.js\";\n\nconst noAdditionalProps: ObjectOptions = { additionalProperties: false };\n\nexport const ChangesetLocalIdSchema = brandedNumberType<ChangesetLocalId>({\n\tmultipleOf: 1,\n});\n\nexport const EncodedChangeAtomId = Type.Union([\n\tType.Tuple([ChangesetLocalIdSchema, RevisionTagSchema]),\n\tChangesetLocalIdSchema,\n]);\nexport type EncodedChangeAtomId = Static<typeof EncodedChangeAtomId>;\n\nconst EncodedFieldChange = Type.Object(\n\t{\n\t\tfieldKey: schemaFormat.FieldKeySchema,\n\t\tfieldKind: schemaFormat.FieldKindIdentifierSchema,\n\t\t// Implementation note: node and field change encoding is mutually recursive.\n\t\t// This field marks a boundary in that recursion to avoid constructing excessively complex\n\t\t// recursive types. Encoded changes are validated at this boundary at runtime--see modularChangeCodecs.ts.\n\t\tchange: JsonCompatibleReadOnlySchema,\n\t},\n\tnoAdditionalProps,\n);\n\nexport interface EncodedFieldChange extends Static<typeof EncodedFieldChange> {\n\t/**\n\t * Encoded in format selected by `fieldKind`\n\t */\n\tchange: JsonCompatibleReadOnly;\n}\n\nconst EncodedFieldChangeMap = Type.Array(EncodedFieldChange);\n\n/**\n * Format for encoding as json.\n *\n * This chooses to use lists of named objects instead of maps:\n * this choice is somewhat arbitrary, but avoids user data being used as object keys,\n * which can sometimes be an issue (for example handling that for \"__proto__\" can require care).\n */\nexport type EncodedFieldChangeMap = Static<typeof EncodedFieldChangeMap>;\n\nconst EncodedNodeExistsConstraint = Type.Object(\n\t{\n\t\tviolated: Type.Boolean(),\n\t},\n\tnoAdditionalProps,\n);\ntype EncodedNodeExistsConstraint = Static<typeof EncodedNodeExistsConstraint>;\n\nexport const EncodedNodeChangeset = Type.Object(\n\t{\n\t\tfieldChanges: Type.Optional(EncodedFieldChangeMap),\n\t\tnodeExistsConstraint: Type.Optional(EncodedNodeExistsConstraint),\n\t},\n\tnoAdditionalProps,\n);\n\n/**\n * Format for encoding as json.\n */\nexport type EncodedNodeChangeset = Static<typeof EncodedNodeChangeset>;\n\nexport const EncodedRevisionInfo = Type.Object(\n\t{\n\t\trevision: Type.Readonly(RevisionTagSchema),\n\t\trollbackOf: Type.ReadonlyOptional(RevisionTagSchema),\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedRevisionInfo = Static<typeof EncodedRevisionInfo>;\n\n/**\n * Index of field in an EncodedFieldBatch.\n */\nexport const EncodedTreeIndex = Type.Number({ multipleOf: 1, minimum: 0 });\n\nexport const CommitBuilds = Type.Array(\n\tType.Tuple([\n\t\t// ID for first node\n\t\tChangesetLocalIdSchema,\n\t\t// Index for a TreeChunk that represents all the nodes\n\t\tEncodedTreeIndex,\n\t]),\n);\nexport type CommitBuilds = Static<typeof CommitBuilds>;\n\nexport const EncodedBuildsArray = Type.Array(\n\tType.Union([\n\t\tType.Tuple([CommitBuilds, RevisionTagSchema]),\n\t\t// Revision is omitted when undefined\n\t\tType.Tuple([CommitBuilds]),\n\t]),\n);\n\nexport type EncodedBuildsArray = Static<typeof EncodedBuildsArray>;\n\nexport const EncodedBuilds = Type.Object(\n\t{\n\t\tbuilds: EncodedBuildsArray,\n\t\t/**\n\t\t * Fields indexed by the EncodedTreeIndexes above.\n\t\t * TODO: Strongly typing this here may result in redundant schema validation of this data.\n\t\t */\n\t\ttrees: EncodedFieldBatch,\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedBuilds = Static<typeof EncodedBuilds>;\n\nexport const EncodedModularChangeset = Type.Object(\n\t{\n\t\tmaxId: Type.Optional(ChangesetLocalIdSchema),\n\t\tchanges: EncodedFieldChangeMap,\n\t\trevisions: Type.ReadonlyOptional(Type.Array(EncodedRevisionInfo)),\n\t\tbuilds: Type.Optional(EncodedBuilds),\n\t\trefreshers: Type.Optional(EncodedBuilds),\n\t},\n\tnoAdditionalProps,\n);\n\nexport type EncodedModularChangeset = Static<typeof EncodedModularChangeset>;\n"]}