@fluidframework/tree 2.1.0-276985 → 2.1.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 (583) hide show
  1. package/.eslintrc.cjs +7 -0
  2. package/.vscode/Tree.code-workspace +9 -2
  3. package/CHANGELOG.md +38 -0
  4. package/README.md +55 -12
  5. package/api-report/tree.alpha.api.md +2 -1
  6. package/api-report/tree.beta.api.md +2 -1
  7. package/api-report/tree.public.api.md +2 -1
  8. package/beta.d.ts +1 -1
  9. package/dist/beta.d.ts +1 -1
  10. package/dist/core/forest/editableForest.d.ts +6 -3
  11. package/dist/core/forest/editableForest.d.ts.map +1 -1
  12. package/dist/core/forest/editableForest.js +16 -4
  13. package/dist/core/forest/editableForest.js.map +1 -1
  14. package/dist/core/index.d.ts +1 -1
  15. package/dist/core/index.d.ts.map +1 -1
  16. package/dist/core/index.js +3 -1
  17. package/dist/core/index.js.map +1 -1
  18. package/dist/core/rebase/index.d.ts +1 -1
  19. package/dist/core/rebase/index.d.ts.map +1 -1
  20. package/dist/core/rebase/index.js +3 -1
  21. package/dist/core/rebase/index.js.map +1 -1
  22. package/dist/core/rebase/types.d.ts +2 -0
  23. package/dist/core/rebase/types.d.ts.map +1 -1
  24. package/dist/core/rebase/types.js +9 -1
  25. package/dist/core/rebase/types.js.map +1 -1
  26. package/dist/core/tree/anchorSet.d.ts +1 -0
  27. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  28. package/dist/core/tree/anchorSet.js +13 -0
  29. package/dist/core/tree/anchorSet.js.map +1 -1
  30. package/dist/core/tree/detachedFieldIndex.d.ts +48 -11
  31. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  32. package/dist/core/tree/detachedFieldIndex.js +144 -20
  33. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  34. package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  35. package/dist/core/tree/detachedFieldIndexCodec.js +13 -4
  36. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  37. package/dist/core/tree/detachedFieldIndexFormat.d.ts +1 -1
  38. package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  39. package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
  40. package/dist/core/tree/detachedFieldIndexTypes.d.ts +39 -4
  41. package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  42. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  43. package/dist/core/tree/index.d.ts +2 -1
  44. package/dist/core/tree/index.d.ts.map +1 -1
  45. package/dist/core/tree/index.js.map +1 -1
  46. package/dist/core/tree/visitDelta.d.ts +3 -1
  47. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  48. package/dist/core/tree/visitDelta.js +31 -15
  49. package/dist/core/tree/visitDelta.js.map +1 -1
  50. package/dist/core/tree/visitorUtils.d.ts +3 -3
  51. package/dist/core/tree/visitorUtils.d.ts.map +1 -1
  52. package/dist/core/tree/visitorUtils.js +4 -4
  53. package/dist/core/tree/visitorUtils.js.map +1 -1
  54. package/dist/events/events.d.ts +4 -1
  55. package/dist/events/events.d.ts.map +1 -1
  56. package/dist/events/events.js.map +1 -1
  57. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
  58. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  59. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  60. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
  61. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  62. package/dist/feature-libraries/editableTreeBinder.js +1 -1
  63. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  64. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
  65. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  66. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +0 -72
  67. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  68. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
  69. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  70. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
  71. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  72. package/dist/feature-libraries/flex-tree/index.d.ts +3 -2
  73. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  74. package/dist/feature-libraries/flex-tree/index.js +5 -1
  75. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  76. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
  77. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  78. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  79. package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -6
  80. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  81. package/dist/feature-libraries/flex-tree/lazyField.js +11 -32
  82. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  83. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
  84. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  85. package/dist/feature-libraries/flex-tree/lazyNode.js +0 -30
  86. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  87. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  88. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  89. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  90. package/dist/feature-libraries/index.d.ts +3 -3
  91. package/dist/feature-libraries/index.d.ts.map +1 -1
  92. package/dist/feature-libraries/index.js +6 -3
  93. package/dist/feature-libraries/index.js.map +1 -1
  94. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
  95. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  96. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  97. package/dist/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
  98. package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
  99. package/dist/feature-libraries/modular-schema/discrepancies.js +264 -0
  100. package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -0
  101. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
  102. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  103. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  104. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  105. package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -0
  106. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  107. package/dist/feature-libraries/modular-schema/index.d.ts +2 -1
  108. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  109. package/dist/feature-libraries/modular-schema/index.js +3 -1
  110. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  111. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  112. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
  113. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  114. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
  115. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  116. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +827 -245
  117. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  118. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  119. package/dist/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
  120. package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  121. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
  122. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  123. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  124. package/dist/feature-libraries/node-key/index.d.ts +0 -1
  125. package/dist/feature-libraries/node-key/index.d.ts.map +1 -1
  126. package/dist/feature-libraries/node-key/index.js +1 -3
  127. package/dist/feature-libraries/node-key/index.js.map +1 -1
  128. package/dist/feature-libraries/object-forest/objectForest.d.ts +3 -2
  129. package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  130. package/dist/feature-libraries/object-forest/objectForest.js +5 -4
  131. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  132. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  133. package/dist/feature-libraries/optional-field/optionalField.js +1 -0
  134. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  135. package/dist/feature-libraries/sequence-field/index.d.ts +1 -1
  136. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  137. package/dist/feature-libraries/sequence-field/index.js +1 -2
  138. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  139. package/dist/feature-libraries/sequence-field/invert.js +1 -1
  140. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  141. package/dist/feature-libraries/sequence-field/rebase.js +6 -1
  142. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  143. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  144. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -0
  145. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  146. package/dist/feature-libraries/sequence-field/utils.d.ts +2 -17
  147. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  148. package/dist/feature-libraries/sequence-field/utils.js +31 -39
  149. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  150. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
  151. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  152. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +2 -0
  153. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  154. package/dist/index.d.ts +1 -1
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js.map +1 -1
  157. package/dist/packageVersion.d.ts +1 -1
  158. package/dist/packageVersion.d.ts.map +1 -1
  159. package/dist/packageVersion.js +1 -1
  160. package/dist/packageVersion.js.map +1 -1
  161. package/dist/public.d.ts +1 -1
  162. package/dist/shared-tree/schematizingTreeView.d.ts +4 -2
  163. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  164. package/dist/shared-tree/schematizingTreeView.js +240 -184
  165. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  166. package/dist/shared-tree/sharedTree.d.ts +5 -1
  167. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  168. package/dist/shared-tree/sharedTree.js +157 -90
  169. package/dist/shared-tree/sharedTree.js.map +1 -1
  170. package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
  171. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  172. package/dist/shared-tree/treeApi.js +1 -1
  173. package/dist/shared-tree/treeApi.js.map +1 -1
  174. package/dist/shared-tree/treeCheckout.d.ts +10 -1
  175. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  176. package/dist/shared-tree/treeCheckout.js +47 -3
  177. package/dist/shared-tree/treeCheckout.js.map +1 -1
  178. package/dist/shared-tree/treeView.d.ts.map +1 -1
  179. package/dist/shared-tree/treeView.js +7 -3
  180. package/dist/shared-tree/treeView.js.map +1 -1
  181. package/dist/shared-tree-core/branch.d.ts +6 -0
  182. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  183. package/dist/shared-tree-core/branch.js +3 -0
  184. package/dist/shared-tree-core/branch.js.map +1 -1
  185. package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -6
  186. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  187. package/dist/shared-tree-core/sharedTreeCore.js +271 -209
  188. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  189. package/dist/simple-tree/arrayNode.d.ts +4 -0
  190. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  191. package/dist/simple-tree/arrayNode.js +36 -19
  192. package/dist/simple-tree/arrayNode.js.map +1 -1
  193. package/dist/simple-tree/index.d.ts +3 -3
  194. package/dist/simple-tree/index.d.ts.map +1 -1
  195. package/dist/simple-tree/index.js +2 -1
  196. package/dist/simple-tree/index.js.map +1 -1
  197. package/dist/simple-tree/leafNodeSchema.d.ts +22 -1
  198. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  199. package/dist/simple-tree/leafNodeSchema.js +2 -1
  200. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  201. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  202. package/dist/simple-tree/mapNode.js.map +1 -1
  203. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  204. package/dist/simple-tree/objectNode.js +2 -1
  205. package/dist/simple-tree/objectNode.js.map +1 -1
  206. package/dist/simple-tree/proxies.d.ts.map +1 -1
  207. package/dist/simple-tree/proxies.js +9 -25
  208. package/dist/simple-tree/proxies.js.map +1 -1
  209. package/dist/simple-tree/proxyBinding.d.ts +4 -0
  210. package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
  211. package/dist/simple-tree/proxyBinding.js +23 -1
  212. package/dist/simple-tree/proxyBinding.js.map +1 -1
  213. package/dist/simple-tree/schemaFactory.d.ts +16 -1
  214. package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
  215. package/dist/simple-tree/schemaFactory.js +32 -4
  216. package/dist/simple-tree/schemaFactory.js.map +1 -1
  217. package/dist/simple-tree/schemaTypes.d.ts +36 -1
  218. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  219. package/dist/simple-tree/schemaTypes.js.map +1 -1
  220. package/dist/simple-tree/toFlexSchema.d.ts +2 -2
  221. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  222. package/dist/simple-tree/toFlexSchema.js +3 -2
  223. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  224. package/dist/simple-tree/tree.d.ts +4 -1
  225. package/dist/simple-tree/tree.d.ts.map +1 -1
  226. package/dist/simple-tree/tree.js +48 -1
  227. package/dist/simple-tree/tree.js.map +1 -1
  228. package/dist/simple-tree/treeNodeApi.d.ts +2 -75
  229. package/dist/simple-tree/treeNodeApi.d.ts.map +1 -1
  230. package/dist/simple-tree/treeNodeApi.js +17 -25
  231. package/dist/simple-tree/treeNodeApi.js.map +1 -1
  232. package/dist/simple-tree/treeNodeKernel.d.ts +26 -0
  233. package/dist/simple-tree/treeNodeKernel.d.ts.map +1 -0
  234. package/dist/simple-tree/treeNodeKernel.js +83 -0
  235. package/dist/simple-tree/treeNodeKernel.js.map +1 -0
  236. package/dist/simple-tree/types.d.ts +95 -3
  237. package/dist/simple-tree/types.d.ts.map +1 -1
  238. package/dist/simple-tree/types.js +120 -21
  239. package/dist/simple-tree/types.js.map +1 -1
  240. package/dist/util/breakable.d.ts +83 -0
  241. package/dist/util/breakable.d.ts.map +1 -0
  242. package/dist/util/breakable.js +178 -0
  243. package/dist/util/breakable.js.map +1 -0
  244. package/dist/util/index.d.ts +3 -2
  245. package/dist/util/index.d.ts.map +1 -1
  246. package/dist/util/index.js +9 -2
  247. package/dist/util/index.js.map +1 -1
  248. package/dist/util/nestedMap.d.ts +17 -3
  249. package/dist/util/nestedMap.d.ts.map +1 -1
  250. package/dist/util/nestedMap.js +21 -1
  251. package/dist/util/nestedMap.js.map +1 -1
  252. package/dist/util/utils.d.ts +7 -0
  253. package/dist/util/utils.d.ts.map +1 -1
  254. package/dist/util/utils.js +15 -1
  255. package/dist/util/utils.js.map +1 -1
  256. package/internal.d.ts +1 -1
  257. package/lib/beta.d.ts +1 -1
  258. package/lib/core/forest/editableForest.d.ts +6 -3
  259. package/lib/core/forest/editableForest.d.ts.map +1 -1
  260. package/lib/core/forest/editableForest.js +17 -5
  261. package/lib/core/forest/editableForest.js.map +1 -1
  262. package/lib/core/index.d.ts +1 -1
  263. package/lib/core/index.d.ts.map +1 -1
  264. package/lib/core/index.js +1 -1
  265. package/lib/core/index.js.map +1 -1
  266. package/lib/core/rebase/index.d.ts +1 -1
  267. package/lib/core/rebase/index.d.ts.map +1 -1
  268. package/lib/core/rebase/index.js +1 -1
  269. package/lib/core/rebase/index.js.map +1 -1
  270. package/lib/core/rebase/types.d.ts +2 -0
  271. package/lib/core/rebase/types.d.ts.map +1 -1
  272. package/lib/core/rebase/types.js +7 -1
  273. package/lib/core/rebase/types.js.map +1 -1
  274. package/lib/core/tree/anchorSet.d.ts +1 -0
  275. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  276. package/lib/core/tree/anchorSet.js +13 -0
  277. package/lib/core/tree/anchorSet.js.map +1 -1
  278. package/lib/core/tree/detachedFieldIndex.d.ts +48 -11
  279. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  280. package/lib/core/tree/detachedFieldIndex.js +145 -21
  281. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  282. package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
  283. package/lib/core/tree/detachedFieldIndexCodec.js +13 -4
  284. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  285. package/lib/core/tree/detachedFieldIndexFormat.d.ts +1 -1
  286. package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
  287. package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
  288. package/lib/core/tree/detachedFieldIndexTypes.d.ts +39 -4
  289. package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  290. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  291. package/lib/core/tree/index.d.ts +2 -1
  292. package/lib/core/tree/index.d.ts.map +1 -1
  293. package/lib/core/tree/index.js.map +1 -1
  294. package/lib/core/tree/visitDelta.d.ts +3 -1
  295. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  296. package/lib/core/tree/visitDelta.js +31 -15
  297. package/lib/core/tree/visitDelta.js.map +1 -1
  298. package/lib/core/tree/visitorUtils.d.ts +3 -3
  299. package/lib/core/tree/visitorUtils.d.ts.map +1 -1
  300. package/lib/core/tree/visitorUtils.js +4 -4
  301. package/lib/core/tree/visitorUtils.js.map +1 -1
  302. package/lib/events/events.d.ts +4 -1
  303. package/lib/events/events.d.ts.map +1 -1
  304. package/lib/events/events.js.map +1 -1
  305. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
  306. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  307. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  308. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
  309. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  310. package/lib/feature-libraries/editableTreeBinder.js +1 -1
  311. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  312. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
  313. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
  314. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +2 -74
  315. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  316. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
  317. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  318. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
  319. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  320. package/lib/feature-libraries/flex-tree/index.d.ts +3 -2
  321. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  322. package/lib/feature-libraries/flex-tree/index.js +2 -1
  323. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  324. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
  325. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  326. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  327. package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -6
  328. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  329. package/lib/feature-libraries/flex-tree/lazyField.js +13 -34
  330. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  331. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
  332. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  333. package/lib/feature-libraries/flex-tree/lazyNode.js +3 -33
  334. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  335. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  336. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
  337. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  338. package/lib/feature-libraries/index.d.ts +3 -3
  339. package/lib/feature-libraries/index.d.ts.map +1 -1
  340. package/lib/feature-libraries/index.js +3 -3
  341. package/lib/feature-libraries/index.js.map +1 -1
  342. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
  343. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  344. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  345. package/lib/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
  346. package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
  347. package/lib/feature-libraries/modular-schema/discrepancies.js +260 -0
  348. package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -0
  349. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
  350. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  351. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  352. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  353. package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -0
  354. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  355. package/lib/feature-libraries/modular-schema/index.d.ts +2 -1
  356. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  357. package/lib/feature-libraries/modular-schema/index.js +1 -0
  358. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  359. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  360. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
  361. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  362. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
  363. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  364. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +826 -247
  365. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  366. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
  367. package/lib/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
  368. package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
  369. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
  370. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  371. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  372. package/lib/feature-libraries/node-key/index.d.ts +0 -1
  373. package/lib/feature-libraries/node-key/index.d.ts.map +1 -1
  374. package/lib/feature-libraries/node-key/index.js +0 -1
  375. package/lib/feature-libraries/node-key/index.js.map +1 -1
  376. package/lib/feature-libraries/object-forest/objectForest.d.ts +3 -2
  377. package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
  378. package/lib/feature-libraries/object-forest/objectForest.js +5 -4
  379. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  380. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  381. package/lib/feature-libraries/optional-field/optionalField.js +1 -0
  382. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  383. package/lib/feature-libraries/sequence-field/index.d.ts +1 -1
  384. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  385. package/lib/feature-libraries/sequence-field/index.js +1 -1
  386. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  387. package/lib/feature-libraries/sequence-field/invert.js +1 -1
  388. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  389. package/lib/feature-libraries/sequence-field/rebase.js +6 -1
  390. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  391. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  392. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -1
  393. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  394. package/lib/feature-libraries/sequence-field/utils.d.ts +2 -17
  395. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  396. package/lib/feature-libraries/sequence-field/utils.js +31 -39
  397. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  398. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
  399. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  400. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +4 -2
  401. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  402. package/lib/index.d.ts +1 -1
  403. package/lib/index.d.ts.map +1 -1
  404. package/lib/index.js.map +1 -1
  405. package/lib/packageVersion.d.ts +1 -1
  406. package/lib/packageVersion.d.ts.map +1 -1
  407. package/lib/packageVersion.js +1 -1
  408. package/lib/packageVersion.js.map +1 -1
  409. package/lib/public.d.ts +1 -1
  410. package/lib/shared-tree/schematizingTreeView.d.ts +4 -2
  411. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  412. package/lib/shared-tree/schematizingTreeView.js +242 -185
  413. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  414. package/lib/shared-tree/sharedTree.d.ts +5 -1
  415. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  416. package/lib/shared-tree/sharedTree.js +158 -90
  417. package/lib/shared-tree/sharedTree.js.map +1 -1
  418. package/lib/shared-tree/sharedTreeChangeEnricher.js +1 -1
  419. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  420. package/lib/shared-tree/treeApi.js +1 -1
  421. package/lib/shared-tree/treeApi.js.map +1 -1
  422. package/lib/shared-tree/treeCheckout.d.ts +10 -1
  423. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  424. package/lib/shared-tree/treeCheckout.js +47 -3
  425. package/lib/shared-tree/treeCheckout.js.map +1 -1
  426. package/lib/shared-tree/treeView.d.ts.map +1 -1
  427. package/lib/shared-tree/treeView.js +4 -0
  428. package/lib/shared-tree/treeView.js.map +1 -1
  429. package/lib/shared-tree-core/branch.d.ts +6 -0
  430. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  431. package/lib/shared-tree-core/branch.js +3 -0
  432. package/lib/shared-tree-core/branch.js.map +1 -1
  433. package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -6
  434. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  435. package/lib/shared-tree-core/sharedTreeCore.js +273 -210
  436. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  437. package/lib/simple-tree/arrayNode.d.ts +4 -0
  438. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  439. package/lib/simple-tree/arrayNode.js +39 -22
  440. package/lib/simple-tree/arrayNode.js.map +1 -1
  441. package/lib/simple-tree/index.d.ts +3 -3
  442. package/lib/simple-tree/index.d.ts.map +1 -1
  443. package/lib/simple-tree/index.js +1 -1
  444. package/lib/simple-tree/index.js.map +1 -1
  445. package/lib/simple-tree/leafNodeSchema.d.ts +22 -1
  446. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  447. package/lib/simple-tree/leafNodeSchema.js +1 -1
  448. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  449. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  450. package/lib/simple-tree/mapNode.js.map +1 -1
  451. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  452. package/lib/simple-tree/objectNode.js +3 -2
  453. package/lib/simple-tree/objectNode.js.map +1 -1
  454. package/lib/simple-tree/proxies.d.ts.map +1 -1
  455. package/lib/simple-tree/proxies.js +9 -25
  456. package/lib/simple-tree/proxies.js.map +1 -1
  457. package/lib/simple-tree/proxyBinding.d.ts +4 -0
  458. package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
  459. package/lib/simple-tree/proxyBinding.js +19 -0
  460. package/lib/simple-tree/proxyBinding.js.map +1 -1
  461. package/lib/simple-tree/schemaFactory.d.ts +16 -1
  462. package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
  463. package/lib/simple-tree/schemaFactory.js +30 -3
  464. package/lib/simple-tree/schemaFactory.js.map +1 -1
  465. package/lib/simple-tree/schemaTypes.d.ts +36 -1
  466. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  467. package/lib/simple-tree/schemaTypes.js.map +1 -1
  468. package/lib/simple-tree/toFlexSchema.d.ts +2 -2
  469. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  470. package/lib/simple-tree/toFlexSchema.js +3 -2
  471. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  472. package/lib/simple-tree/tree.d.ts +4 -1
  473. package/lib/simple-tree/tree.d.ts.map +1 -1
  474. package/lib/simple-tree/tree.js +44 -0
  475. package/lib/simple-tree/tree.js.map +1 -1
  476. package/lib/simple-tree/treeNodeApi.d.ts +2 -75
  477. package/lib/simple-tree/treeNodeApi.d.ts.map +1 -1
  478. package/lib/simple-tree/treeNodeApi.js +20 -28
  479. package/lib/simple-tree/treeNodeApi.js.map +1 -1
  480. package/lib/simple-tree/treeNodeKernel.d.ts +26 -0
  481. package/lib/simple-tree/treeNodeKernel.d.ts.map +1 -0
  482. package/lib/simple-tree/treeNodeKernel.js +79 -0
  483. package/lib/simple-tree/treeNodeKernel.js.map +1 -0
  484. package/lib/simple-tree/types.d.ts +95 -3
  485. package/lib/simple-tree/types.d.ts.map +1 -1
  486. package/lib/simple-tree/types.js +121 -22
  487. package/lib/simple-tree/types.js.map +1 -1
  488. package/lib/util/breakable.d.ts +83 -0
  489. package/lib/util/breakable.d.ts.map +1 -0
  490. package/lib/util/breakable.js +171 -0
  491. package/lib/util/breakable.js.map +1 -0
  492. package/lib/util/index.d.ts +3 -2
  493. package/lib/util/index.d.ts.map +1 -1
  494. package/lib/util/index.js +3 -2
  495. package/lib/util/index.js.map +1 -1
  496. package/lib/util/nestedMap.d.ts +17 -3
  497. package/lib/util/nestedMap.d.ts.map +1 -1
  498. package/lib/util/nestedMap.js +19 -0
  499. package/lib/util/nestedMap.js.map +1 -1
  500. package/lib/util/utils.d.ts +7 -0
  501. package/lib/util/utils.d.ts.map +1 -1
  502. package/lib/util/utils.js +13 -0
  503. package/lib/util/utils.js.map +1 -1
  504. package/package.json +29 -27
  505. package/src/core/forest/editableForest.ts +25 -4
  506. package/src/core/index.ts +2 -0
  507. package/src/core/rebase/index.ts +2 -0
  508. package/src/core/rebase/types.ts +17 -0
  509. package/src/core/tree/anchorSet.ts +14 -0
  510. package/src/core/tree/detachedFieldIndex.ts +217 -35
  511. package/src/core/tree/detachedFieldIndexCodec.ts +17 -8
  512. package/src/core/tree/detachedFieldIndexFormat.ts +1 -1
  513. package/src/core/tree/detachedFieldIndexTypes.ts +41 -5
  514. package/src/core/tree/index.ts +2 -1
  515. package/src/core/tree/visitDelta.ts +58 -16
  516. package/src/core/tree/visitorUtils.ts +7 -4
  517. package/src/events/events.ts +4 -2
  518. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
  519. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
  520. package/src/feature-libraries/editableTreeBinder.ts +1 -1
  521. package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +1 -95
  522. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +0 -62
  523. package/src/feature-libraries/flex-tree/index.ts +7 -2
  524. package/src/feature-libraries/flex-tree/lazyEntity.ts +0 -3
  525. package/src/feature-libraries/flex-tree/lazyField.ts +15 -47
  526. package/src/feature-libraries/flex-tree/lazyNode.ts +1 -48
  527. package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -0
  528. package/src/feature-libraries/index.ts +4 -2
  529. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +18 -0
  530. package/src/feature-libraries/modular-schema/discrepancies.ts +395 -0
  531. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -2
  532. package/src/feature-libraries/modular-schema/genericFieldKind.ts +3 -0
  533. package/src/feature-libraries/modular-schema/index.ts +2 -0
  534. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +81 -35
  535. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1521 -444
  536. package/src/feature-libraries/modular-schema/modularChangeFormat.ts +2 -0
  537. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +51 -0
  538. package/src/feature-libraries/node-key/index.ts +0 -1
  539. package/src/feature-libraries/object-forest/objectForest.ts +7 -3
  540. package/src/feature-libraries/optional-field/optionalField.ts +1 -0
  541. package/src/feature-libraries/sequence-field/index.ts +0 -2
  542. package/src/feature-libraries/sequence-field/invert.ts +1 -1
  543. package/src/feature-libraries/sequence-field/rebase.ts +7 -1
  544. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +2 -1
  545. package/src/feature-libraries/sequence-field/utils.ts +37 -85
  546. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +10 -0
  547. package/src/index.ts +0 -1
  548. package/src/packageVersion.ts +1 -1
  549. package/src/shared-tree/schematizingTreeView.ts +6 -2
  550. package/src/shared-tree/sharedTree.ts +12 -1
  551. package/src/shared-tree/sharedTreeChangeEnricher.ts +1 -1
  552. package/src/shared-tree/treeApi.ts +1 -1
  553. package/src/shared-tree/treeCheckout.ts +60 -5
  554. package/src/shared-tree/treeView.ts +5 -0
  555. package/src/shared-tree-core/branch.ts +10 -0
  556. package/src/shared-tree-core/sharedTreeCore.ts +25 -6
  557. package/src/simple-tree/arrayNode.ts +50 -23
  558. package/src/simple-tree/index.ts +3 -3
  559. package/src/simple-tree/leafNodeSchema.ts +1 -1
  560. package/src/simple-tree/mapNode.ts +2 -2
  561. package/src/simple-tree/objectNode.ts +9 -3
  562. package/src/simple-tree/proxies.ts +10 -33
  563. package/src/simple-tree/proxyBinding.ts +23 -0
  564. package/src/simple-tree/schemaFactory.ts +37 -2
  565. package/src/simple-tree/schemaTypes.ts +36 -1
  566. package/src/simple-tree/toFlexSchema.ts +5 -4
  567. package/src/simple-tree/tree.ts +68 -4
  568. package/src/simple-tree/treeNodeApi.ts +29 -111
  569. package/src/simple-tree/treeNodeKernel.ts +91 -0
  570. package/src/simple-tree/types.ts +292 -31
  571. package/src/util/breakable.ts +214 -0
  572. package/src/util/index.ts +11 -0
  573. package/src/util/nestedMap.ts +33 -3
  574. package/src/util/utils.ts +17 -0
  575. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
  576. package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
  577. package/dist/feature-libraries/node-key/nodeKeyIndex.js +0 -101
  578. package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
  579. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
  580. package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
  581. package/lib/feature-libraries/node-key/nodeKeyIndex.js +0 -97
  582. package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
  583. package/src/feature-libraries/node-key/nodeKeyIndex.ts +0 -132
@@ -3,6 +3,44 @@
3
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
4
  * Licensed under the MIT License.
5
5
  */
6
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
7
+ var useValue = arguments.length > 2;
8
+ for (var i = 0; i < initializers.length; i++) {
9
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
10
+ }
11
+ return useValue ? value : void 0;
12
+ };
13
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
14
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
15
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
16
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
17
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
18
+ var _, done = false;
19
+ for (var i = decorators.length - 1; i >= 0; i--) {
20
+ var context = {};
21
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
22
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
23
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
24
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
25
+ if (kind === "accessor") {
26
+ if (result === void 0) continue;
27
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
28
+ if (_ = accept(result.get)) descriptor.get = _;
29
+ if (_ = accept(result.set)) descriptor.set = _;
30
+ if (_ = accept(result.init)) initializers.unshift(_);
31
+ }
32
+ else if (_ = accept(result)) {
33
+ if (kind === "field") initializers.unshift(_);
34
+ else descriptor[key] = _;
35
+ }
36
+ }
37
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
38
+ done = true;
39
+ };
40
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
41
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
42
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
43
+ };
6
44
  Object.defineProperty(exports, "__esModule", { value: true });
7
45
  exports.SharedTreeCore = void 0;
8
46
  const internal_1 = require("@fluidframework/core-utils/internal");
@@ -22,234 +60,258 @@ const internal_4 = require("@fluidframework/telemetry-utils/internal");
22
60
  // TODO: Organize this to be adjacent to persisted types.
23
61
  const summarizablesTreeKey = "indexes";
24
62
  /**
25
- * Generic shared tree, which needs to be configured with indexes, field kinds and a history policy to be used.
26
- *
27
- * TODO: actually implement
28
- * TODO: is history policy a detail of what indexes are used, or is there something else to it?
63
+ * Generic shared tree, which needs to be configured with indexes, field kinds and other configuration.
29
64
  */
30
- class SharedTreeCore extends internal_3.SharedObject {
31
- /**
32
- * Used to edit the state of the tree. Edits will be immediately applied locally to the tree.
33
- * If there is no transaction currently ongoing, then the edits will be submitted to Fluid immediately as well.
34
- */
35
- get editor() {
36
- return this.getLocalBranch().editor;
37
- }
38
- /**
39
- * @param summarizables - Summarizers for all indexes used by this tree
40
- * @param changeFamily - The change family
41
- * @param editManager - The edit manager
42
- * @param id - The id of the shared object
43
- * @param runtime - The IFluidDataStoreRuntime which contains the shared object
44
- * @param attributes - Attributes of the shared object
45
- * @param telemetryContextPrefix - The property prefix for telemetry pertaining to this object. See {@link ITelemetryContext}
46
- */
47
- constructor(summarizables, changeFamily, options, formatOptions,
48
- // Base class arguments
49
- id, runtime, attributes, telemetryContextPrefix, schema, schemaPolicy, resubmitMachine, enricher) {
50
- super(id, runtime, attributes, telemetryContextPrefix);
65
+ let SharedTreeCore = (() => {
66
+ let _classDecorators = [index_js_2.breakingClass];
67
+ let _classDescriptor;
68
+ let _classExtraInitializers = [];
69
+ let _classThis;
70
+ let _classSuper = internal_3.SharedObject;
71
+ let _instanceExtraInitializers = [];
72
+ let _summarizeCore_decorators;
73
+ var SharedTreeCore = _classThis = class extends _classSuper {
51
74
  /**
52
- * The sequence number that this instance is at.
53
- * This number is artificial in that it is made up by this instance as opposed to being provided by the runtime.
54
- * Is `undefined` after (and only after) this instance is attached.
75
+ * Used to edit the state of the tree. Edits will be immediately applied locally to the tree.
76
+ * If there is no transaction currently ongoing, then the edits will be submitted to Fluid immediately as well.
55
77
  */
56
- this.detachedRevision = editManager_js_1.minimumPossibleSequenceNumber;
57
- this.schemaAndPolicy = {
58
- schema,
59
- policy: schemaPolicy,
60
- };
61
- const rebaseLogger = (0, internal_4.createChildLogger)({
62
- logger: this.logger,
63
- namespace: "Rebase",
64
- });
65
- (0, internal_1.assert)(runtime.idCompressor !== undefined, 0x886 /* IdCompressor must be enabled to use SharedTree */);
66
- this.idCompressor = runtime.idCompressor;
67
- this.mintRevisionTag = () => this.idCompressor.generateCompressedId();
78
+ get editor() {
79
+ return this.getLocalBranch().editor;
80
+ }
68
81
  /**
69
- * A random ID that uniquely identifies this client in the collab session.
70
- * This is sent alongside every op to identify which client the op originated from.
71
- * This is used rather than the Fluid client ID because the Fluid client ID is not stable across reconnections.
82
+ * Gets the revision at the head of the trunk.
72
83
  */
73
- const localSessionId = runtime.idCompressor.localSessionId;
74
- this.editManager = new editManager_js_1.EditManager(changeFamily, localSessionId, this.mintRevisionTag, rebaseLogger);
75
- this.editManager.localBranch.on("transactionStarted", () => {
76
- this.commitEnricher.startNewTransaction();
77
- });
78
- this.editManager.localBranch.on("transactionAborted", () => {
79
- this.commitEnricher.abortCurrentTransaction();
80
- });
81
- this.editManager.localBranch.on("transactionCommitted", () => {
82
- this.commitEnricher.commitCurrentTransaction();
83
- });
84
- this.editManager.localBranch.on("beforeChange", (change) => {
85
- // Ensure that any previously prepared commits that have not been sent are purged.
86
- this.commitEnricher.purgePreparedCommits();
87
- if (this.detachedRevision !== undefined) {
88
- // Edits submitted before the first attach do not need enrichment because they will not be applied by peers.
89
- }
90
- else if (change.type === "append") {
91
- if (this.getLocalBranch().isTransacting()) {
92
- for (const newCommit of change.newCommits) {
93
- this.commitEnricher.ingestTransactionCommit(newCommit);
94
- }
84
+ get trunkHeadRevision() {
85
+ return this.editManager.getTrunkHead().revision;
86
+ }
87
+ /**
88
+ * @param summarizables - Summarizers for all indexes used by this tree
89
+ * @param changeFamily - The change family
90
+ * @param editManager - The edit manager
91
+ * @param id - The id of the shared object
92
+ * @param runtime - The IFluidDataStoreRuntime which contains the shared object
93
+ * @param attributes - Attributes of the shared object
94
+ * @param telemetryContextPrefix - The property prefix for telemetry pertaining to this object. See {@link ITelemetryContext}
95
+ */
96
+ constructor(summarizables, changeFamily, options, formatOptions,
97
+ // Base class arguments
98
+ id, runtime, attributes, telemetryContextPrefix, schema, schemaPolicy, resubmitMachine, enricher) {
99
+ super(id, runtime, attributes, telemetryContextPrefix);
100
+ this.breaker = (__runInitializers(this, _instanceExtraInitializers), new index_js_2.Breakable("Shared Tree"));
101
+ /**
102
+ * The sequence number that this instance is at.
103
+ * This number is artificial in that it is made up by this instance as opposed to being provided by the runtime.
104
+ * Is `undefined` after (and only after) this instance is attached.
105
+ */
106
+ this.detachedRevision = editManager_js_1.minimumPossibleSequenceNumber;
107
+ this.schemaAndPolicy = {
108
+ schema,
109
+ policy: schemaPolicy,
110
+ };
111
+ const rebaseLogger = (0, internal_4.createChildLogger)({
112
+ logger: this.logger,
113
+ namespace: "Rebase",
114
+ });
115
+ (0, internal_1.assert)(runtime.idCompressor !== undefined, 0x886 /* IdCompressor must be enabled to use SharedTree */);
116
+ this.idCompressor = runtime.idCompressor;
117
+ this.mintRevisionTag = () => this.idCompressor.generateCompressedId();
118
+ /**
119
+ * A random ID that uniquely identifies this client in the collab session.
120
+ * This is sent alongside every op to identify which client the op originated from.
121
+ * This is used rather than the Fluid client ID because the Fluid client ID is not stable across reconnections.
122
+ */
123
+ const localSessionId = runtime.idCompressor.localSessionId;
124
+ this.editManager = new editManager_js_1.EditManager(changeFamily, localSessionId, this.mintRevisionTag, rebaseLogger);
125
+ this.editManager.localBranch.on("transactionStarted", () => {
126
+ this.commitEnricher.startNewTransaction();
127
+ });
128
+ this.editManager.localBranch.on("transactionAborted", () => {
129
+ this.commitEnricher.abortCurrentTransaction();
130
+ });
131
+ this.editManager.localBranch.on("transactionCommitted", () => {
132
+ this.commitEnricher.commitCurrentTransaction();
133
+ });
134
+ this.editManager.localBranch.on("beforeChange", (change) => {
135
+ // Ensure that any previously prepared commits that have not been sent are purged.
136
+ this.commitEnricher.purgePreparedCommits();
137
+ if (this.detachedRevision !== undefined) {
138
+ // Edits submitted before the first attach do not need enrichment because they will not be applied by peers.
95
139
  }
96
- else {
97
- for (const newCommit of change.newCommits) {
98
- this.commitEnricher.prepareCommit(newCommit, false);
140
+ else if (change.type === "append") {
141
+ if (this.getLocalBranch().isTransacting()) {
142
+ for (const newCommit of change.newCommits) {
143
+ this.commitEnricher.ingestTransactionCommit(newCommit);
144
+ }
99
145
  }
100
- }
101
- }
102
- else if (change.type === "replace" &&
103
- (0, branch_js_1.getChangeReplaceType)(change) === "transactionCommit" &&
104
- !this.getLocalBranch().isTransacting()) {
105
- (0, internal_1.assert)(change.newCommits.length === 1, 0x983 /* Unexpected number of commits when committing transaction */);
106
- this.commitEnricher.prepareCommit(change.newCommits[0], true);
107
- }
108
- });
109
- this.editManager.localBranch.on("afterChange", (change) => {
110
- if (this.getLocalBranch().isTransacting()) {
111
- // We do not submit ops for changes that are part of a transaction.
112
- return;
113
- }
114
- if (change.type === "append" ||
115
- (change.type === "replace" && (0, branch_js_1.getChangeReplaceType)(change) === "transactionCommit")) {
116
- if (this.detachedRevision !== undefined) {
117
- for (const newCommit of change.newCommits) {
118
- this.submitCommit(newCommit, this.schemaAndPolicy);
146
+ else {
147
+ for (const newCommit of change.newCommits) {
148
+ this.commitEnricher.prepareCommit(newCommit, false);
149
+ }
119
150
  }
120
151
  }
121
- else {
122
- for (const newCommit of change.newCommits) {
123
- const prepared = this.commitEnricher.getPreparedCommit(newCommit);
124
- this.submitCommit(prepared, this.schemaAndPolicy);
152
+ else if (change.type === "replace" &&
153
+ (0, branch_js_1.getChangeReplaceType)(change) === "transactionCommit" &&
154
+ !this.getLocalBranch().isTransacting()) {
155
+ (0, internal_1.assert)(change.newCommits.length === 1, 0x983 /* Unexpected number of commits when committing transaction */);
156
+ this.commitEnricher.prepareCommit(change.newCommits[0], true);
157
+ }
158
+ });
159
+ this.editManager.localBranch.on("afterChange", (change) => {
160
+ if (this.getLocalBranch().isTransacting()) {
161
+ // We do not submit ops for changes that are part of a transaction.
162
+ return;
163
+ }
164
+ if (change.type === "append" ||
165
+ (change.type === "replace" && (0, branch_js_1.getChangeReplaceType)(change) === "transactionCommit")) {
166
+ if (this.detachedRevision !== undefined) {
167
+ for (const newCommit of change.newCommits) {
168
+ this.submitCommit(newCommit, this.schemaAndPolicy);
169
+ }
170
+ }
171
+ else {
172
+ for (const newCommit of change.newCommits) {
173
+ const prepared = this.commitEnricher.getPreparedCommit(newCommit);
174
+ this.submitCommit(prepared, this.schemaAndPolicy);
175
+ }
125
176
  }
126
177
  }
178
+ });
179
+ const revisionTagCodec = new index_js_1.RevisionTagCodec(runtime.idCompressor);
180
+ const editManagerCodec = (0, editManagerCodecs_js_1.makeEditManagerCodec)(this.editManager.changeFamily.codecs, revisionTagCodec, options, formatOptions.editManager);
181
+ this.summarizables = [
182
+ new editManagerSummarizer_js_1.EditManagerSummarizer(this.editManager, editManagerCodec, this.idCompressor, this.schemaAndPolicy),
183
+ ...summarizables,
184
+ ];
185
+ (0, internal_1.assert)(new Set(this.summarizables.map((e) => e.key)).size === this.summarizables.length, 0x350 /* Index summary element keys must be unique */);
186
+ this.messageCodec = (0, messageCodecs_js_1.makeMessageCodec)(changeFamily.codecs, new index_js_1.RevisionTagCodec(runtime.idCompressor), options, formatOptions.message);
187
+ const changeEnricher = enricher ?? new changeEnricher_js_1.NoOpChangeEnricher();
188
+ this.resubmitMachine =
189
+ resubmitMachine ??
190
+ new defaultResubmitMachine_js_1.DefaultResubmitMachine(changeFamily.rebaser.invert.bind(changeFamily.rebaser), changeEnricher);
191
+ this.commitEnricher = new branchCommitEnricher_js_1.BranchCommitEnricher(changeFamily.rebaser, changeEnricher);
192
+ }
193
+ // TODO: SharedObject's merging of the two summary methods into summarizeCore is not what we want here:
194
+ // We might want to not subclass it, or override/reimplement most of its functionality.
195
+ summarizeCore(serializer, telemetryContext, incrementalSummaryContext) {
196
+ const builder = new internal_2.SummaryTreeBuilder();
197
+ const summarizableBuilder = new internal_2.SummaryTreeBuilder();
198
+ // Merge the summaries of all summarizables together under a single ISummaryTree
199
+ for (const s of this.summarizables) {
200
+ summarizableBuilder.addWithStats(s.key, s.getAttachSummary((contents) => serializer.stringify(contents, this.handle), undefined, undefined, telemetryContext, incrementalSummaryContext));
127
201
  }
128
- });
129
- const revisionTagCodec = new index_js_1.RevisionTagCodec(runtime.idCompressor);
130
- const editManagerCodec = (0, editManagerCodecs_js_1.makeEditManagerCodec)(this.editManager.changeFamily.codecs, revisionTagCodec, options, formatOptions.editManager);
131
- this.summarizables = [
132
- new editManagerSummarizer_js_1.EditManagerSummarizer(this.editManager, editManagerCodec, this.idCompressor, this.schemaAndPolicy),
133
- ...summarizables,
134
- ];
135
- (0, internal_1.assert)(new Set(this.summarizables.map((e) => e.key)).size === this.summarizables.length, 0x350 /* Index summary element keys must be unique */);
136
- this.messageCodec = (0, messageCodecs_js_1.makeMessageCodec)(changeFamily.codecs, new index_js_1.RevisionTagCodec(runtime.idCompressor), options, formatOptions.message);
137
- const changeEnricher = enricher ?? new changeEnricher_js_1.NoOpChangeEnricher();
138
- this.resubmitMachine =
139
- resubmitMachine ??
140
- new defaultResubmitMachine_js_1.DefaultResubmitMachine(changeFamily.rebaser.invert.bind(changeFamily.rebaser), changeEnricher);
141
- this.commitEnricher = new branchCommitEnricher_js_1.BranchCommitEnricher(changeFamily.rebaser, changeEnricher);
142
- }
143
- // TODO: SharedObject's merging of the two summary methods into summarizeCore is not what we want here:
144
- // We might want to not subclass it, or override/reimplement most of its functionality.
145
- summarizeCore(serializer, telemetryContext, incrementalSummaryContext) {
146
- const builder = new internal_2.SummaryTreeBuilder();
147
- const summarizableBuilder = new internal_2.SummaryTreeBuilder();
148
- // Merge the summaries of all summarizables together under a single ISummaryTree
149
- for (const s of this.summarizables) {
150
- summarizableBuilder.addWithStats(s.key, s.getAttachSummary((contents) => serializer.stringify(contents, this.handle), undefined, undefined, telemetryContext, incrementalSummaryContext));
202
+ builder.addWithStats(summarizablesTreeKey, summarizableBuilder.getSummaryTree());
203
+ return builder.getSummaryTree();
151
204
  }
152
- builder.addWithStats(summarizablesTreeKey, summarizableBuilder.getSummaryTree());
153
- return builder.getSummaryTree();
154
- }
155
- async loadCore(services) {
156
- const loadSummaries = this.summarizables.map(async (summaryElement) => summaryElement.load(scopeStorageService(services, summarizablesTreeKey, summaryElement.key), (contents) => this.serializer.parse(contents)));
157
- await Promise.all(loadSummaries);
158
- }
159
- /**
160
- * Submits an op to the Fluid runtime containing the given commit
161
- * @param commit - the commit to submit
162
- * @returns the submitted commit. This is undefined if the underlying `SharedObject` is not attached,
163
- * and may differ from `commit` due to enrichments like detached tree refreshers.
164
- */
165
- submitCommit(commit, schemaAndPolicy, isResubmit = false) {
166
- (0, internal_1.assert)(
167
- // Edits should not be submitted until all transactions finish
168
- !this.getLocalBranch().isTransacting() || isResubmit, 0x68b /* Unexpected edit submitted during transaction */);
169
- (0, internal_1.assert)(this.isAttached() === (this.detachedRevision === undefined), 0x95a /* Detached revision should only be set when not attached */);
170
- // Edits submitted before the first attach are treated as sequenced because they will be included
171
- // in the attach summary that is uploaded to the service.
172
- // Until this attach workflow happens, this instance essentially behaves as a centralized data structure.
173
- if (this.detachedRevision !== undefined) {
174
- const newRevision = (0, index_js_2.brand)(this.detachedRevision + 1);
175
- this.detachedRevision = newRevision;
176
- this.editManager.addSequencedChange({ ...commit, sessionId: this.editManager.localSessionId }, newRevision, this.detachedRevision);
177
- this.editManager.advanceMinimumSequenceNumber(newRevision);
178
- return undefined;
205
+ async loadCore(services) {
206
+ const loadSummaries = this.summarizables.map(async (summaryElement) => summaryElement.load(scopeStorageService(services, summarizablesTreeKey, summaryElement.key), (contents) => this.serializer.parse(contents)));
207
+ await Promise.all(loadSummaries);
179
208
  }
180
- const message = this.messageCodec.encode({
181
- commit,
182
- sessionId: this.editManager.localSessionId,
183
- }, {
184
- idCompressor: this.idCompressor,
185
- schema: schemaAndPolicy,
186
- });
187
- this.submitLocalMessage(message, {
188
- // Clone the schema to ensure that during resubmit the schema has not been mutated by later changes
189
- schema: schemaAndPolicy.schema.clone(),
190
- policy: schemaAndPolicy.policy,
191
- });
192
- this.resubmitMachine.onCommitSubmitted(commit);
193
- }
194
- processCore(message, local, localOpMetadata) {
195
- // Empty context object is passed in, as our decode function is schema-agnostic.
196
- const { commit, sessionId } = this.messageCodec.decode(message.contents, {
197
- idCompressor: this.idCompressor,
198
- });
199
- this.editManager.addSequencedChange({ ...commit, sessionId }, (0, index_js_2.brand)(message.sequenceNumber), (0, index_js_2.brand)(message.referenceSequenceNumber));
200
- this.resubmitMachine.onSequencedCommitApplied(local);
201
- this.editManager.advanceMinimumSequenceNumber((0, index_js_2.brand)(message.minimumSequenceNumber));
202
- }
203
- /**
204
- * @returns the head commit of the root local branch
205
- */
206
- getLocalBranch() {
207
- return this.editManager.localBranch;
208
- }
209
- onDisconnect() { }
210
- didAttach() {
211
- if (this.detachedRevision !== undefined) {
212
- this.detachedRevision = undefined;
209
+ /**
210
+ * Submits an op to the Fluid runtime containing the given commit
211
+ * @param commit - the commit to submit
212
+ * @returns the submitted commit. This is undefined if the underlying `SharedObject` is not attached,
213
+ * and may differ from `commit` due to enrichments like detached tree refreshers.
214
+ */
215
+ submitCommit(commit, schemaAndPolicy, isResubmit = false) {
216
+ (0, internal_1.assert)(
217
+ // Edits should not be submitted until all transactions finish
218
+ !this.getLocalBranch().isTransacting() || isResubmit, 0x68b /* Unexpected edit submitted during transaction */);
219
+ (0, internal_1.assert)(this.isAttached() === (this.detachedRevision === undefined), 0x95a /* Detached revision should only be set when not attached */);
220
+ // Edits submitted before the first attach are treated as sequenced because they will be included
221
+ // in the attach summary that is uploaded to the service.
222
+ // Until this attach workflow happens, this instance essentially behaves as a centralized data structure.
223
+ if (this.detachedRevision !== undefined) {
224
+ const newRevision = (0, index_js_2.brand)(this.detachedRevision + 1);
225
+ this.detachedRevision = newRevision;
226
+ this.editManager.addSequencedChange({ ...commit, sessionId: this.editManager.localSessionId }, newRevision, this.detachedRevision);
227
+ this.editManager.advanceMinimumSequenceNumber(newRevision);
228
+ return undefined;
229
+ }
230
+ const message = this.messageCodec.encode({
231
+ commit,
232
+ sessionId: this.editManager.localSessionId,
233
+ }, {
234
+ idCompressor: this.idCompressor,
235
+ schema: schemaAndPolicy,
236
+ });
237
+ this.submitLocalMessage(message, {
238
+ // Clone the schema to ensure that during resubmit the schema has not been mutated by later changes
239
+ schema: schemaAndPolicy.schema.clone(),
240
+ policy: schemaAndPolicy.policy,
241
+ });
242
+ this.resubmitMachine.onCommitSubmitted(commit);
213
243
  }
214
- }
215
- reSubmitCore(content, localOpMetadata) {
216
- // Empty context object is passed in, as our decode function is schema-agnostic.
217
- const { commit: { revision }, } = this.messageCodec.decode(this.serializer.decode(content), {
218
- idCompressor: this.idCompressor,
219
- });
220
- const [commit] = this.editManager.findLocalCommit(revision);
221
- // If a resubmit phase is not already in progress, then this must be the first commit of a new resubmit phase.
222
- if (this.resubmitMachine.isInResubmitPhase === false) {
223
- const toResubmit = this.editManager.getLocalCommits();
224
- (0, internal_1.assert)(commit === toResubmit[0], 0x95d /* Resubmit phase should start with the oldest local commit */);
225
- this.resubmitMachine.prepareForResubmit(toResubmit);
244
+ processCore(message, local, localOpMetadata) {
245
+ // Empty context object is passed in, as our decode function is schema-agnostic.
246
+ const { commit, sessionId } = this.messageCodec.decode(message.contents, {
247
+ idCompressor: this.idCompressor,
248
+ });
249
+ this.editManager.addSequencedChange({ ...commit, sessionId }, (0, index_js_2.brand)(message.sequenceNumber), (0, index_js_2.brand)(message.referenceSequenceNumber));
250
+ this.resubmitMachine.onSequencedCommitApplied(local);
251
+ this.editManager.advanceMinimumSequenceNumber((0, index_js_2.brand)(message.minimumSequenceNumber));
226
252
  }
227
- (0, internal_1.assert)(isClonableSchemaPolicy(localOpMetadata), 0x95e /* Local metadata must contain schema and policy. */);
228
- (0, internal_1.assert)(this.resubmitMachine.isInResubmitPhase !== false, 0x984 /* Invalid resubmit outside of resubmit phase */);
229
- const enrichedCommit = this.resubmitMachine.peekNextCommit();
230
- this.submitCommit(enrichedCommit, localOpMetadata, true);
231
- }
232
- applyStashedOp(content) {
233
- (0, internal_1.assert)(!this.getLocalBranch().isTransacting(), 0x674 /* Unexpected transaction is open while applying stashed ops */);
234
- // Empty context object is passed in, as our decode function is schema-agnostic.
235
- const { commit: { revision, change }, } = this.messageCodec.decode(content, { idCompressor: this.idCompressor });
236
- this.editManager.localBranch.apply(change, revision);
237
- }
238
- getGCData(fullGC) {
239
- const gcNodes = super.getGCData(fullGC).gcNodes;
240
- for (const s of this.summarizables) {
241
- for (const [id, routes] of Object.entries(s.getGCData(fullGC).gcNodes)) {
242
- gcNodes[id] ?? (gcNodes[id] = []);
243
- for (const route of routes) {
244
- gcNodes[id].push(route);
253
+ /**
254
+ * @returns the head commit of the root local branch
255
+ */
256
+ getLocalBranch() {
257
+ return this.editManager.localBranch;
258
+ }
259
+ onDisconnect() { }
260
+ didAttach() {
261
+ if (this.detachedRevision !== undefined) {
262
+ this.detachedRevision = undefined;
263
+ }
264
+ }
265
+ reSubmitCore(content, localOpMetadata) {
266
+ // Empty context object is passed in, as our decode function is schema-agnostic.
267
+ const { commit: { revision }, } = this.messageCodec.decode(this.serializer.decode(content), {
268
+ idCompressor: this.idCompressor,
269
+ });
270
+ const [commit] = this.editManager.findLocalCommit(revision);
271
+ // If a resubmit phase is not already in progress, then this must be the first commit of a new resubmit phase.
272
+ if (this.resubmitMachine.isInResubmitPhase === false) {
273
+ const toResubmit = this.editManager.getLocalCommits();
274
+ (0, internal_1.assert)(commit === toResubmit[0], 0x95d /* Resubmit phase should start with the oldest local commit */);
275
+ this.resubmitMachine.prepareForResubmit(toResubmit);
276
+ }
277
+ (0, internal_1.assert)(isClonableSchemaPolicy(localOpMetadata), 0x95e /* Local metadata must contain schema and policy. */);
278
+ (0, internal_1.assert)(this.resubmitMachine.isInResubmitPhase !== false, 0x984 /* Invalid resubmit outside of resubmit phase */);
279
+ const enrichedCommit = this.resubmitMachine.peekNextCommit();
280
+ this.submitCommit(enrichedCommit, localOpMetadata, true);
281
+ }
282
+ applyStashedOp(content) {
283
+ (0, internal_1.assert)(!this.getLocalBranch().isTransacting(), 0x674 /* Unexpected transaction is open while applying stashed ops */);
284
+ // Empty context object is passed in, as our decode function is schema-agnostic.
285
+ const { commit: { revision, change }, } = this.messageCodec.decode(content, { idCompressor: this.idCompressor });
286
+ this.editManager.localBranch.apply(change, revision);
287
+ }
288
+ getGCData(fullGC) {
289
+ const gcNodes = super.getGCData(fullGC).gcNodes;
290
+ for (const s of this.summarizables) {
291
+ for (const [id, routes] of Object.entries(s.getGCData(fullGC).gcNodes)) {
292
+ gcNodes[id] ?? (gcNodes[id] = []);
293
+ for (const route of routes) {
294
+ gcNodes[id].push(route);
295
+ }
245
296
  }
246
297
  }
298
+ return {
299
+ gcNodes,
300
+ };
247
301
  }
248
- return {
249
- gcNodes,
250
- };
251
- }
252
- }
302
+ };
303
+ __setFunctionName(_classThis, "SharedTreeCore");
304
+ (() => {
305
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
306
+ _summarizeCore_decorators = [index_js_2.throwIfBroken];
307
+ __esDecorate(_classThis, null, _summarizeCore_decorators, { kind: "method", name: "summarizeCore", static: false, private: false, access: { has: obj => "summarizeCore" in obj, get: obj => obj.summarizeCore }, metadata: _metadata }, null, _instanceExtraInitializers);
308
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
309
+ SharedTreeCore = _classThis = _classDescriptor.value;
310
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
311
+ __runInitializers(_classThis, _classExtraInitializers);
312
+ })();
313
+ return SharedTreeCore = _classThis;
314
+ })();
253
315
  exports.SharedTreeCore = SharedTreeCore;
254
316
  function isClonableSchemaPolicy(maybeSchemaPolicy) {
255
317
  const schemaAndPolicy = maybeSchemaPolicy;