@fluidframework/tree 2.4.0-294316 → 2.4.0-297385

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 (755) hide show
  1. package/api-report/tree.alpha.api.md +58 -28
  2. package/api-report/tree.beta.api.md +38 -27
  3. package/api-report/tree.legacy.alpha.api.md +38 -27
  4. package/api-report/tree.legacy.public.api.md +38 -27
  5. package/api-report/tree.public.api.md +38 -27
  6. package/dist/alpha.d.ts +6 -0
  7. package/dist/beta.d.ts +3 -0
  8. package/dist/core/change-family/changeFamily.d.ts +2 -2
  9. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  10. package/dist/core/change-family/changeFamily.js.map +1 -1
  11. package/dist/core/change-family/editBuilder.d.ts +3 -2
  12. package/dist/core/change-family/editBuilder.d.ts.map +1 -1
  13. package/dist/core/change-family/editBuilder.js.map +1 -1
  14. package/dist/core/rebase/changeRebaser.d.ts +2 -1
  15. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  16. package/dist/core/rebase/changeRebaser.js.map +1 -1
  17. package/dist/core/rebase/utils.js +1 -1
  18. package/dist/core/rebase/utils.js.map +1 -1
  19. package/dist/core/schema-stored/schema.d.ts +7 -0
  20. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  21. package/dist/core/schema-stored/schema.js +9 -0
  22. package/dist/core/schema-stored/schema.js.map +1 -1
  23. package/dist/core/tree/anchorSet.d.ts +1 -2
  24. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  25. package/dist/core/tree/anchorSet.js +2 -2
  26. package/dist/core/tree/anchorSet.js.map +1 -1
  27. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.js +13 -2
  29. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  30. package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  31. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  32. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
  33. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  34. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
  35. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  36. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
  37. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  38. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  39. package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
  40. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  41. package/dist/feature-libraries/editableTreeBinder.js +1 -539
  42. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  43. package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
  44. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  45. package/dist/feature-libraries/flex-tree/context.js +3 -3
  46. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  47. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  48. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  49. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  51. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
  53. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  55. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  56. package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
  57. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  58. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  59. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  60. package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
  61. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  62. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  63. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  64. package/dist/feature-libraries/index.d.ts +4 -7
  65. package/dist/feature-libraries/index.d.ts.map +1 -1
  66. package/dist/feature-libraries/index.js +5 -31
  67. package/dist/feature-libraries/index.js.map +1 -1
  68. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  69. package/dist/feature-libraries/mitigatedChangeFamily.js +4 -4
  70. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  71. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
  72. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  73. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  74. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
  75. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  76. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +179 -60
  77. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  78. package/dist/feature-libraries/optional-field/optionalField.d.ts +10 -9
  79. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  80. package/dist/feature-libraries/optional-field/optionalField.js +9 -7
  81. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  82. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
  83. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  84. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -8
  85. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  86. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  87. package/dist/feature-libraries/sequence-field/compose.js +32 -20
  88. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  89. package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  90. package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  91. package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  92. package/dist/feature-libraries/sequence-field/invert.d.ts +6 -1
  93. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  94. package/dist/feature-libraries/sequence-field/invert.js +25 -9
  95. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  96. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
  97. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  98. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
  99. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  100. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
  101. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  102. package/dist/feature-libraries/typed-schema/flexList.js +1 -13
  103. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  104. package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
  105. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  106. package/dist/feature-libraries/typed-schema/index.js +1 -19
  107. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  108. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  109. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  110. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
  111. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  112. package/dist/index.d.ts +3 -3
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +2 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/internalTypes.d.ts +1 -1
  117. package/dist/internalTypes.d.ts.map +1 -1
  118. package/dist/internalTypes.js.map +1 -1
  119. package/dist/legacy.d.ts +3 -0
  120. package/dist/packageVersion.d.ts +1 -1
  121. package/dist/packageVersion.js +1 -1
  122. package/dist/packageVersion.js.map +1 -1
  123. package/dist/public.d.ts +3 -0
  124. package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  125. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  126. package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
  127. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  128. package/dist/shared-tree/index.d.ts +3 -3
  129. package/dist/shared-tree/index.d.ts.map +1 -1
  130. package/dist/shared-tree/index.js +2 -3
  131. package/dist/shared-tree/index.js.map +1 -1
  132. package/dist/shared-tree/schematizeTree.d.ts +1 -40
  133. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  134. package/dist/shared-tree/schematizeTree.js +2 -11
  135. package/dist/shared-tree/schematizeTree.js.map +1 -1
  136. package/dist/shared-tree/schematizingTreeView.d.ts +8 -7
  137. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  138. package/dist/shared-tree/schematizingTreeView.js +16 -8
  139. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  140. package/dist/shared-tree/sharedTree.d.ts +19 -2
  141. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  142. package/dist/shared-tree/sharedTree.js +11 -3
  143. package/dist/shared-tree/sharedTree.js.map +1 -1
  144. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  145. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  146. package/dist/shared-tree/sharedTreeChangeFamily.js +4 -4
  147. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  148. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
  149. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  150. package/dist/shared-tree/sharedTreeEditBuilder.js +15 -11
  151. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  152. package/dist/shared-tree/treeCheckout.d.ts +71 -41
  153. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  154. package/dist/shared-tree/treeCheckout.js +119 -86
  155. package/dist/shared-tree/treeCheckout.js.map +1 -1
  156. package/dist/shared-tree-core/branch.d.ts +9 -13
  157. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  158. package/dist/shared-tree-core/branch.js +21 -25
  159. package/dist/shared-tree-core/branch.js.map +1 -1
  160. package/dist/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
  161. package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  162. package/dist/shared-tree-core/defaultResubmitMachine.js +4 -4
  163. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  164. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  165. package/dist/shared-tree-core/editManager.js +1 -1
  166. package/dist/shared-tree-core/editManager.js.map +1 -1
  167. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  168. package/dist/shared-tree-core/sharedTreeCore.js +2 -2
  169. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  170. package/dist/simple-tree/api/create.d.ts +1 -1
  171. package/dist/simple-tree/api/create.d.ts.map +1 -1
  172. package/dist/simple-tree/api/create.js +11 -13
  173. package/dist/simple-tree/api/create.js.map +1 -1
  174. package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
  175. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  176. package/dist/simple-tree/api/getJsonSchema.js +1 -1
  177. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  178. package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
  179. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  180. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  181. package/dist/simple-tree/api/index.d.ts +2 -1
  182. package/dist/simple-tree/api/index.d.ts.map +1 -1
  183. package/dist/simple-tree/api/index.js +3 -1
  184. package/dist/simple-tree/api/index.js.map +1 -1
  185. package/dist/simple-tree/api/schemaFactory.d.ts +6 -6
  186. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  187. package/dist/simple-tree/api/schemaFactory.js +15 -2
  188. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  189. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  190. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  191. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  192. package/dist/simple-tree/api/simpleSchema.d.ts +14 -10
  193. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
  194. package/dist/simple-tree/api/simpleSchema.js.map +1 -1
  195. package/dist/simple-tree/api/tree.d.ts +12 -6
  196. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  197. package/dist/simple-tree/api/tree.js +4 -4
  198. package/dist/simple-tree/api/tree.js.map +1 -1
  199. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  200. package/dist/simple-tree/api/treeNodeApi.js +8 -6
  201. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  202. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  203. package/dist/simple-tree/api/verboseTree.js +6 -10
  204. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  205. package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
  206. package/dist/simple-tree/api/view.d.ts.map +1 -0
  207. package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  208. package/dist/simple-tree/api/view.js.map +1 -0
  209. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  210. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  211. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  212. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  213. package/dist/simple-tree/arrayNode.d.ts +147 -14
  214. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  215. package/dist/simple-tree/arrayNode.js +32 -20
  216. package/dist/simple-tree/arrayNode.js.map +1 -1
  217. package/dist/simple-tree/core/context.d.ts +55 -0
  218. package/dist/simple-tree/core/context.d.ts.map +1 -0
  219. package/dist/simple-tree/core/context.js +60 -0
  220. package/dist/simple-tree/core/context.js.map +1 -0
  221. package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
  222. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  223. package/dist/simple-tree/core/getOrCreateNode.js +36 -0
  224. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
  225. package/dist/simple-tree/core/index.d.ts +7 -3
  226. package/dist/simple-tree/core/index.d.ts.map +1 -1
  227. package/dist/simple-tree/core/index.js +16 -7
  228. package/dist/simple-tree/core/index.js.map +1 -1
  229. package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
  230. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  231. package/dist/simple-tree/core/schemaCaching.js +16 -45
  232. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  233. package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
  234. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  235. package/dist/simple-tree/core/treeNodeKernel.js +94 -58
  236. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  237. package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
  238. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  239. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  240. package/dist/simple-tree/core/types.d.ts +0 -5
  241. package/dist/simple-tree/core/types.d.ts.map +1 -1
  242. package/dist/simple-tree/core/types.js.map +1 -1
  243. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  244. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  245. package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
  246. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  247. package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  248. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
  249. package/dist/simple-tree/core/walkSchema.js +34 -0
  250. package/dist/simple-tree/core/walkSchema.js.map +1 -0
  251. package/dist/simple-tree/createContext.d.ts +11 -0
  252. package/dist/simple-tree/createContext.d.ts.map +1 -0
  253. package/dist/simple-tree/createContext.js +25 -0
  254. package/dist/simple-tree/createContext.js.map +1 -0
  255. package/dist/simple-tree/index.d.ts +3 -4
  256. package/dist/simple-tree/index.d.ts.map +1 -1
  257. package/dist/simple-tree/index.js +7 -7
  258. package/dist/simple-tree/index.js.map +1 -1
  259. package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
  260. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  261. package/dist/simple-tree/leafNodeSchema.js +1 -2
  262. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  263. package/dist/simple-tree/mapNode.d.ts +4 -4
  264. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  265. package/dist/simple-tree/mapNode.js +9 -5
  266. package/dist/simple-tree/mapNode.js.map +1 -1
  267. package/dist/simple-tree/objectNode.d.ts +8 -8
  268. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  269. package/dist/simple-tree/objectNode.js +33 -14
  270. package/dist/simple-tree/objectNode.js.map +1 -1
  271. package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
  272. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  273. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  274. package/dist/simple-tree/proxies.d.ts +1 -2
  275. package/dist/simple-tree/proxies.d.ts.map +1 -1
  276. package/dist/simple-tree/proxies.js +6 -22
  277. package/dist/simple-tree/proxies.js.map +1 -1
  278. package/dist/simple-tree/schemaTypes.d.ts +2 -2
  279. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  280. package/dist/simple-tree/schemaTypes.js.map +1 -1
  281. package/dist/simple-tree/toFlexSchema.d.ts +6 -36
  282. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  283. package/dist/simple-tree/toFlexSchema.js +58 -142
  284. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  285. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  286. package/dist/simple-tree/toMapTree.js +2 -2
  287. package/dist/simple-tree/toMapTree.js.map +1 -1
  288. package/dist/simple-tree/treeNodeValid.d.ts +13 -5
  289. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  290. package/dist/simple-tree/treeNodeValid.js +19 -10
  291. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  292. package/dist/simple-tree/typesUnsafe.d.ts +4 -4
  293. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  294. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  295. package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
  296. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
  297. package/dist/simple-tree/walkFieldSchema.js +17 -0
  298. package/dist/simple-tree/walkFieldSchema.js.map +1 -0
  299. package/dist/util/index.d.ts +1 -1
  300. package/dist/util/index.d.ts.map +1 -1
  301. package/dist/util/index.js.map +1 -1
  302. package/dist/util/typeUtils.d.ts +14 -45
  303. package/dist/util/typeUtils.d.ts.map +1 -1
  304. package/dist/util/typeUtils.js.map +1 -1
  305. package/lib/alpha.d.ts +6 -0
  306. package/lib/beta.d.ts +3 -0
  307. package/lib/core/change-family/changeFamily.d.ts +2 -2
  308. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  309. package/lib/core/change-family/changeFamily.js.map +1 -1
  310. package/lib/core/change-family/editBuilder.d.ts +3 -2
  311. package/lib/core/change-family/editBuilder.d.ts.map +1 -1
  312. package/lib/core/change-family/editBuilder.js.map +1 -1
  313. package/lib/core/rebase/changeRebaser.d.ts +2 -1
  314. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  315. package/lib/core/rebase/changeRebaser.js.map +1 -1
  316. package/lib/core/rebase/utils.js +1 -1
  317. package/lib/core/rebase/utils.js.map +1 -1
  318. package/lib/core/schema-stored/schema.d.ts +7 -0
  319. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  320. package/lib/core/schema-stored/schema.js +9 -0
  321. package/lib/core/schema-stored/schema.js.map +1 -1
  322. package/lib/core/tree/anchorSet.d.ts +1 -2
  323. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  324. package/lib/core/tree/anchorSet.js +2 -2
  325. package/lib/core/tree/anchorSet.js.map +1 -1
  326. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  327. package/lib/core/tree/detachedFieldIndex.js +13 -2
  328. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  329. package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  330. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  331. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
  332. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  333. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
  334. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  335. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
  336. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  337. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  338. package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
  339. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  340. package/lib/feature-libraries/editableTreeBinder.js +1 -532
  341. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  342. package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
  343. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  344. package/lib/feature-libraries/flex-tree/context.js +3 -3
  345. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  346. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  347. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  348. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  349. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  350. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  351. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
  352. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  353. package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  354. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  355. package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
  356. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  357. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  358. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  359. package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
  360. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  361. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  362. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  363. package/lib/feature-libraries/index.d.ts +4 -7
  364. package/lib/feature-libraries/index.d.ts.map +1 -1
  365. package/lib/feature-libraries/index.js +4 -6
  366. package/lib/feature-libraries/index.js.map +1 -1
  367. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  368. package/lib/feature-libraries/mitigatedChangeFamily.js +4 -4
  369. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  370. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
  371. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  372. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  373. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
  374. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  375. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +180 -61
  376. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  377. package/lib/feature-libraries/optional-field/optionalField.d.ts +10 -9
  378. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  379. package/lib/feature-libraries/optional-field/optionalField.js +9 -7
  380. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  381. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
  382. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  383. package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -8
  384. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  385. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  386. package/lib/feature-libraries/sequence-field/compose.js +32 -20
  387. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  388. package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  389. package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  390. package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  391. package/lib/feature-libraries/sequence-field/invert.d.ts +6 -1
  392. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  393. package/lib/feature-libraries/sequence-field/invert.js +25 -9
  394. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  395. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
  396. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  397. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
  398. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  399. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
  400. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  401. package/lib/feature-libraries/typed-schema/flexList.js +0 -11
  402. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  403. package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
  404. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  405. package/lib/feature-libraries/typed-schema/index.js +0 -3
  406. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  407. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  408. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  409. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
  410. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  411. package/lib/index.d.ts +3 -3
  412. package/lib/index.d.ts.map +1 -1
  413. package/lib/index.js +1 -1
  414. package/lib/index.js.map +1 -1
  415. package/lib/internalTypes.d.ts +1 -1
  416. package/lib/internalTypes.d.ts.map +1 -1
  417. package/lib/internalTypes.js.map +1 -1
  418. package/lib/legacy.d.ts +3 -0
  419. package/lib/packageVersion.d.ts +1 -1
  420. package/lib/packageVersion.js +1 -1
  421. package/lib/packageVersion.js.map +1 -1
  422. package/lib/public.d.ts +3 -0
  423. package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  424. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  425. package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
  426. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  427. package/lib/shared-tree/index.d.ts +3 -3
  428. package/lib/shared-tree/index.d.ts.map +1 -1
  429. package/lib/shared-tree/index.js +1 -2
  430. package/lib/shared-tree/index.js.map +1 -1
  431. package/lib/shared-tree/schematizeTree.d.ts +1 -40
  432. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  433. package/lib/shared-tree/schematizeTree.js +1 -9
  434. package/lib/shared-tree/schematizeTree.js.map +1 -1
  435. package/lib/shared-tree/schematizingTreeView.d.ts +8 -7
  436. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  437. package/lib/shared-tree/schematizingTreeView.js +19 -11
  438. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  439. package/lib/shared-tree/sharedTree.d.ts +19 -2
  440. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  441. package/lib/shared-tree/sharedTree.js +11 -4
  442. package/lib/shared-tree/sharedTree.js.map +1 -1
  443. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
  444. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  445. package/lib/shared-tree/sharedTreeChangeFamily.js +4 -4
  446. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  447. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
  448. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  449. package/lib/shared-tree/sharedTreeEditBuilder.js +15 -11
  450. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  451. package/lib/shared-tree/treeCheckout.d.ts +71 -41
  452. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  453. package/lib/shared-tree/treeCheckout.js +122 -89
  454. package/lib/shared-tree/treeCheckout.js.map +1 -1
  455. package/lib/shared-tree-core/branch.d.ts +9 -13
  456. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  457. package/lib/shared-tree-core/branch.js +22 -26
  458. package/lib/shared-tree-core/branch.js.map +1 -1
  459. package/lib/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
  460. package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
  461. package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
  462. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  463. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  464. package/lib/shared-tree-core/editManager.js +2 -2
  465. package/lib/shared-tree-core/editManager.js.map +1 -1
  466. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  467. package/lib/shared-tree-core/sharedTreeCore.js +2 -2
  468. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  469. package/lib/simple-tree/api/create.d.ts +1 -1
  470. package/lib/simple-tree/api/create.d.ts.map +1 -1
  471. package/lib/simple-tree/api/create.js +14 -16
  472. package/lib/simple-tree/api/create.js.map +1 -1
  473. package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
  474. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  475. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  476. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  477. package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
  478. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  479. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  480. package/lib/simple-tree/api/index.d.ts +2 -1
  481. package/lib/simple-tree/api/index.d.ts.map +1 -1
  482. package/lib/simple-tree/api/index.js +1 -0
  483. package/lib/simple-tree/api/index.js.map +1 -1
  484. package/lib/simple-tree/api/schemaFactory.d.ts +6 -6
  485. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  486. package/lib/simple-tree/api/schemaFactory.js +15 -2
  487. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  488. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  489. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  490. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  491. package/lib/simple-tree/api/simpleSchema.d.ts +14 -10
  492. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
  493. package/lib/simple-tree/api/simpleSchema.js.map +1 -1
  494. package/lib/simple-tree/api/tree.d.ts +12 -6
  495. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  496. package/lib/simple-tree/api/tree.js +4 -4
  497. package/lib/simple-tree/api/tree.js.map +1 -1
  498. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  499. package/lib/simple-tree/api/treeNodeApi.js +10 -8
  500. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  501. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  502. package/lib/simple-tree/api/verboseTree.js +6 -10
  503. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  504. package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
  505. package/lib/simple-tree/api/view.d.ts.map +1 -0
  506. package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  507. package/lib/simple-tree/api/view.js.map +1 -0
  508. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  509. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  510. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +7 -1
  511. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  512. package/lib/simple-tree/arrayNode.d.ts +147 -14
  513. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  514. package/lib/simple-tree/arrayNode.js +37 -25
  515. package/lib/simple-tree/arrayNode.js.map +1 -1
  516. package/lib/simple-tree/core/context.d.ts +55 -0
  517. package/lib/simple-tree/core/context.d.ts.map +1 -0
  518. package/lib/simple-tree/core/context.js +55 -0
  519. package/lib/simple-tree/core/context.js.map +1 -0
  520. package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
  521. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  522. package/lib/simple-tree/core/getOrCreateNode.js +32 -0
  523. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
  524. package/lib/simple-tree/core/index.d.ts +7 -3
  525. package/lib/simple-tree/core/index.d.ts.map +1 -1
  526. package/lib/simple-tree/core/index.js +6 -2
  527. package/lib/simple-tree/core/index.js.map +1 -1
  528. package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
  529. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  530. package/lib/simple-tree/core/schemaCaching.js +13 -39
  531. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  532. package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
  533. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  534. package/lib/simple-tree/core/treeNodeKernel.js +89 -54
  535. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  536. package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
  537. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  538. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  539. package/lib/simple-tree/core/types.d.ts +0 -5
  540. package/lib/simple-tree/core/types.d.ts.map +1 -1
  541. package/lib/simple-tree/core/types.js.map +1 -1
  542. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  543. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  544. package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
  545. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  546. package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  547. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
  548. package/lib/simple-tree/core/walkSchema.js +29 -0
  549. package/lib/simple-tree/core/walkSchema.js.map +1 -0
  550. package/lib/simple-tree/createContext.d.ts +11 -0
  551. package/lib/simple-tree/createContext.d.ts.map +1 -0
  552. package/lib/simple-tree/createContext.js +21 -0
  553. package/lib/simple-tree/createContext.js.map +1 -0
  554. package/lib/simple-tree/index.d.ts +3 -4
  555. package/lib/simple-tree/index.d.ts.map +1 -1
  556. package/lib/simple-tree/index.js +3 -4
  557. package/lib/simple-tree/index.js.map +1 -1
  558. package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
  559. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  560. package/lib/simple-tree/leafNodeSchema.js +3 -4
  561. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  562. package/lib/simple-tree/mapNode.d.ts +4 -4
  563. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  564. package/lib/simple-tree/mapNode.js +12 -8
  565. package/lib/simple-tree/mapNode.js.map +1 -1
  566. package/lib/simple-tree/objectNode.d.ts +8 -8
  567. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  568. package/lib/simple-tree/objectNode.js +36 -17
  569. package/lib/simple-tree/objectNode.js.map +1 -1
  570. package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
  571. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  572. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  573. package/lib/simple-tree/proxies.d.ts +1 -2
  574. package/lib/simple-tree/proxies.d.ts.map +1 -1
  575. package/lib/simple-tree/proxies.js +7 -22
  576. package/lib/simple-tree/proxies.js.map +1 -1
  577. package/lib/simple-tree/schemaTypes.d.ts +2 -2
  578. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  579. package/lib/simple-tree/schemaTypes.js.map +1 -1
  580. package/lib/simple-tree/toFlexSchema.d.ts +6 -36
  581. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  582. package/lib/simple-tree/toFlexSchema.js +61 -142
  583. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  584. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  585. package/lib/simple-tree/toMapTree.js +4 -4
  586. package/lib/simple-tree/toMapTree.js.map +1 -1
  587. package/lib/simple-tree/treeNodeValid.d.ts +13 -5
  588. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  589. package/lib/simple-tree/treeNodeValid.js +21 -12
  590. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  591. package/lib/simple-tree/typesUnsafe.d.ts +4 -4
  592. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  593. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  594. package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
  595. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
  596. package/lib/simple-tree/walkFieldSchema.js +13 -0
  597. package/lib/simple-tree/walkFieldSchema.js.map +1 -0
  598. package/lib/util/index.d.ts +1 -1
  599. package/lib/util/index.d.ts.map +1 -1
  600. package/lib/util/index.js.map +1 -1
  601. package/lib/util/typeUtils.d.ts +14 -45
  602. package/lib/util/typeUtils.d.ts.map +1 -1
  603. package/lib/util/typeUtils.js.map +1 -1
  604. package/package.json +32 -23
  605. package/src/core/change-family/changeFamily.ts +5 -2
  606. package/src/core/change-family/editBuilder.ts +3 -2
  607. package/src/core/rebase/changeRebaser.ts +6 -1
  608. package/src/core/rebase/utils.ts +1 -1
  609. package/src/core/schema-stored/schema.ts +17 -0
  610. package/src/core/tree/anchorSet.ts +3 -4
  611. package/src/core/tree/detachedFieldIndex.ts +14 -3
  612. package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
  613. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +92 -47
  614. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +7 -7
  615. package/src/feature-libraries/editableTreeBinder.ts +2 -915
  616. package/src/feature-libraries/flex-tree/context.ts +7 -20
  617. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
  618. package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
  619. package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
  620. package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
  621. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  622. package/src/feature-libraries/index.ts +3 -71
  623. package/src/feature-libraries/mitigatedChangeFamily.ts +11 -4
  624. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +1 -0
  625. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +218 -175
  626. package/src/feature-libraries/optional-field/optionalField.ts +21 -17
  627. package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -10
  628. package/src/feature-libraries/sequence-field/compose.ts +67 -58
  629. package/src/feature-libraries/sequence-field/invert.ts +30 -6
  630. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +65 -19
  631. package/src/feature-libraries/typed-schema/flexList.ts +3 -84
  632. package/src/feature-libraries/typed-schema/index.ts +1 -33
  633. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
  634. package/src/index.ts +6 -0
  635. package/src/internalTypes.ts +0 -1
  636. package/src/packageVersion.ts +1 -1
  637. package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
  638. package/src/shared-tree/index.ts +4 -8
  639. package/src/shared-tree/schematizeTree.ts +2 -56
  640. package/src/shared-tree/schematizingTreeView.ts +34 -15
  641. package/src/shared-tree/sharedTree.ts +39 -9
  642. package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
  643. package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
  644. package/src/shared-tree/treeCheckout.ts +232 -134
  645. package/src/shared-tree-core/branch.ts +26 -40
  646. package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
  647. package/src/shared-tree-core/editManager.ts +2 -1
  648. package/src/shared-tree-core/sharedTreeCore.ts +4 -2
  649. package/src/simple-tree/api/create.ts +18 -20
  650. package/src/simple-tree/api/getJsonSchema.ts +3 -3
  651. package/src/simple-tree/api/getSimpleSchema.ts +2 -2
  652. package/src/simple-tree/api/index.ts +2 -0
  653. package/src/simple-tree/api/schemaFactory.ts +41 -12
  654. package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
  655. package/src/simple-tree/api/simpleSchema.ts +15 -10
  656. package/src/simple-tree/api/tree.ts +15 -9
  657. package/src/simple-tree/api/treeNodeApi.ts +12 -10
  658. package/src/simple-tree/api/verboseTree.ts +6 -12
  659. package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
  660. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +11 -2
  661. package/src/simple-tree/arrayNode.ts +202 -53
  662. package/src/simple-tree/core/context.ts +78 -0
  663. package/src/simple-tree/core/getOrCreateNode.ts +38 -0
  664. package/src/simple-tree/core/index.ts +11 -7
  665. package/src/simple-tree/core/schemaCaching.ts +13 -50
  666. package/src/simple-tree/core/treeNodeKernel.ts +117 -78
  667. package/src/simple-tree/core/treeNodeSchema.ts +35 -1
  668. package/src/simple-tree/core/types.ts +0 -5
  669. package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
  670. package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
  671. package/src/simple-tree/createContext.ts +24 -0
  672. package/src/simple-tree/index.ts +5 -2
  673. package/src/simple-tree/leafNodeSchema.ts +3 -9
  674. package/src/simple-tree/mapNode.ts +20 -17
  675. package/src/simple-tree/objectNode.ts +63 -38
  676. package/src/simple-tree/objectNodeTypes.ts +8 -5
  677. package/src/simple-tree/proxies.ts +8 -26
  678. package/src/simple-tree/schemaTypes.ts +2 -2
  679. package/src/simple-tree/toFlexSchema.ts +71 -204
  680. package/src/simple-tree/toMapTree.ts +5 -5
  681. package/src/simple-tree/treeNodeValid.ts +28 -22
  682. package/src/simple-tree/typesUnsafe.ts +4 -4
  683. package/src/simple-tree/walkFieldSchema.ts +19 -0
  684. package/src/util/index.ts +1 -5
  685. package/src/util/typeUtils.ts +14 -56
  686. package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
  687. package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
  688. package/dist/feature-libraries/fieldGenerator.js +0 -13
  689. package/dist/feature-libraries/fieldGenerator.js.map +0 -1
  690. package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
  691. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  692. package/dist/feature-libraries/flex-map-tree/index.js +0 -14
  693. package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
  694. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  695. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  696. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  697. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
  698. package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  699. package/dist/feature-libraries/storedToViewSchema.js +0 -67
  700. package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
  701. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  702. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  703. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
  704. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  705. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  706. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  707. package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
  708. package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  709. package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
  710. package/dist/feature-libraries/typed-schema/view.js.map +0 -1
  711. package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  712. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  713. package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
  714. package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
  715. package/dist/simple-tree/walkSchema.d.ts.map +0 -1
  716. package/dist/simple-tree/walkSchema.js +0 -49
  717. package/dist/simple-tree/walkSchema.js.map +0 -1
  718. package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
  719. package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
  720. package/lib/feature-libraries/fieldGenerator.js +0 -12
  721. package/lib/feature-libraries/fieldGenerator.js.map +0 -1
  722. package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
  723. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  724. package/lib/feature-libraries/flex-map-tree/index.js +0 -6
  725. package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
  726. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  727. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  728. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  729. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
  730. package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  731. package/lib/feature-libraries/storedToViewSchema.js +0 -62
  732. package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
  733. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  734. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  735. package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
  736. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  737. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  738. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  739. package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
  740. package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  741. package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
  742. package/lib/feature-libraries/typed-schema/view.js.map +0 -1
  743. package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  744. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  745. package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
  746. package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
  747. package/lib/simple-tree/walkSchema.d.ts.map +0 -1
  748. package/lib/simple-tree/walkSchema.js +0 -43
  749. package/lib/simple-tree/walkSchema.js.map +0 -1
  750. package/src/feature-libraries/fieldGenerator.ts +0 -47
  751. package/src/feature-libraries/flex-map-tree/index.ts +0 -14
  752. package/src/feature-libraries/storedToViewSchema.ts +0 -100
  753. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
  754. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
  755. package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
@@ -67,8 +67,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
67
67
 
68
68
  // @public @sealed
69
69
  export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
70
- custom?: TCustomMetadata;
71
- description?: string | undefined;
70
+ readonly custom?: TCustomMetadata;
71
+ readonly description?: string | undefined;
72
72
  }
73
73
 
74
74
  // @public
@@ -99,14 +99,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
99
99
  type _InlineTrick = 0;
100
100
 
101
101
  // @public
102
- type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
102
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
104
104
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
105
+ readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
106
106
  }>;
107
107
 
108
108
  // @public
109
- export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
109
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
110
110
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
111
111
  } & {
112
112
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
@@ -147,7 +147,6 @@ declare namespace InternalTypes {
147
147
  ApplyKind,
148
148
  NodeBuilderData,
149
149
  FieldHasDefault,
150
- TreeNodeSchemaNonClass,
151
150
  TreeArrayNodeBase,
152
151
  ScopedSchemaName,
153
152
  DefaultProvider,
@@ -185,8 +184,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
185
184
  }
186
185
 
187
186
  // @public @sealed
188
- export interface ITree extends IFluidLoadable {
189
- viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
187
+ export interface ITree extends ViewableTree, IFluidLoadable {
190
188
  }
191
189
 
192
190
  // @public
@@ -218,7 +216,7 @@ export interface MakeNominal {
218
216
  }
219
217
 
220
218
  // @public
221
- export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
219
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
222
220
 
223
221
  // @public
224
222
  type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -249,12 +247,12 @@ export enum NodeKind {
249
247
  }
250
248
 
251
249
  // @public
252
- type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
253
- -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
250
+ type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
251
+ -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
254
252
  };
255
253
 
256
254
  // @public
257
- type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
255
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
258
256
  -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
259
257
  };
260
258
 
@@ -277,11 +275,18 @@ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
277
275
  values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
278
276
  }
279
277
 
280
- // @public
278
+ // @public @deprecated
281
279
  export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
282
280
  readonly [P in symbol | string]: P extends K ? T : never;
283
281
  };
284
282
 
283
+ // @public
284
+ export type RestrictiveStringRecord<T> = {
285
+ readonly [P in string]: T;
286
+ } & {
287
+ readonly [P in symbol]?: never;
288
+ };
289
+
285
290
  // @public @sealed
286
291
  export interface Revertible {
287
292
  dispose(): void;
@@ -330,7 +335,7 @@ export interface SchemaCompatibilityStatus {
330
335
  // @public @sealed
331
336
  export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
332
337
  constructor(scope: TScope);
333
- array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
338
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
334
339
  array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
335
340
  arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
336
341
  [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
@@ -338,7 +343,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
338
343
  readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
339
344
  readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
340
345
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
341
- map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
346
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
342
347
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
343
348
  mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
344
349
  [Symbol.iterator](): Iterator<[
@@ -348,8 +353,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
348
353
  }, false, T>;
349
354
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
350
355
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
351
- object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
352
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
356
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
357
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
353
358
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
354
359
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
355
360
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -390,14 +395,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
390
395
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
391
396
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
392
397
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
393
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
394
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
398
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
399
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
395
400
  moveRangeToStart(sourceStart: number, sourceEnd: number): void;
396
401
  moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
397
402
  moveToEnd(sourceIndex: number): void;
398
403
  moveToEnd(sourceIndex: number, source: TMoveFrom): void;
399
- moveToIndex(index: number, sourceIndex: number): void;
400
- moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
404
+ moveToIndex(destinationGap: number, sourceIndex: number): void;
405
+ moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
401
406
  moveToStart(sourceIndex: number): void;
402
407
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
403
408
  removeAt(index: number): void;
@@ -478,6 +483,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
478
483
 
479
484
  // @public @sealed
480
485
  export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
486
+ readonly childTypes: ReadonlySet<TreeNodeSchema>;
481
487
  readonly identifier: Name;
482
488
  readonly implicitlyConstructable: ImplicitlyConstructable;
483
489
  readonly info: Info;
@@ -486,16 +492,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
486
492
  }
487
493
 
488
494
  // @public @sealed
489
- interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
495
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
490
496
  // (undocumented)
491
497
  create(data: TInsertable): TNode;
492
498
  }
493
499
 
494
500
  // @public
495
- export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
501
+ export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
496
502
 
497
503
  // @public
498
- export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
504
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
499
505
 
500
506
  // @public
501
507
  export enum TreeStatus {
@@ -547,15 +553,20 @@ export type Unhydrated<T> = T;
547
553
 
548
554
  // @public
549
555
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
550
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
556
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
551
557
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
552
558
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
553
559
  }[T["kind"]], false, {
554
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
560
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
555
561
  [NodeKind.Array]: ImplicitAllowedTypes;
556
562
  [NodeKind.Map]: ImplicitAllowedTypes;
557
563
  }[T["kind"]]>> = true;
558
564
 
565
+ // @public @sealed
566
+ export interface ViewableTree {
567
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
568
+ }
569
+
559
570
  // @public @sealed
560
571
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
561
572
  // @deprecated
@@ -67,8 +67,8 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
67
67
 
68
68
  // @public @sealed
69
69
  export interface FieldSchemaMetadata<TCustomMetadata = unknown> {
70
- custom?: TCustomMetadata;
71
- description?: string | undefined;
70
+ readonly custom?: TCustomMetadata;
71
+ readonly description?: string | undefined;
72
72
  }
73
73
 
74
74
  // @public
@@ -99,14 +99,14 @@ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
99
99
  type _InlineTrick = 0;
100
100
 
101
101
  // @public
102
- type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
103
- readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
102
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = FlattenKeys<{
103
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property] & string>;
104
104
  } & {
105
- readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
105
+ readonly [Property in keyof T as FieldHasDefault<T[Property] & string> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property] & string>;
106
106
  }>;
107
107
 
108
108
  // @public
109
- export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
109
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
110
110
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
111
111
  } & {
112
112
  readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
@@ -147,7 +147,6 @@ declare namespace InternalTypes {
147
147
  ApplyKind,
148
148
  NodeBuilderData,
149
149
  FieldHasDefault,
150
- TreeNodeSchemaNonClass,
151
150
  TreeArrayNodeBase,
152
151
  ScopedSchemaName,
153
152
  DefaultProvider,
@@ -185,8 +184,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
185
184
  }
186
185
 
187
186
  // @public @sealed
188
- export interface ITree extends IFluidLoadable {
189
- viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
187
+ export interface ITree extends ViewableTree, IFluidLoadable {
190
188
  }
191
189
 
192
190
  // @public
@@ -218,7 +216,7 @@ export interface MakeNominal {
218
216
  }
219
217
 
220
218
  // @public
221
- export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
219
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypes<T>>;
222
220
 
223
221
  // @public
224
222
  type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -249,12 +247,12 @@ export enum NodeKind {
249
247
  }
250
248
 
251
249
  // @public
252
- type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
253
- -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
250
+ type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = {
251
+ -readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
254
252
  };
255
253
 
256
254
  // @public
257
- type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
255
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>> = {
258
256
  -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
259
257
  };
260
258
 
@@ -277,11 +275,18 @@ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
277
275
  values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
278
276
  }
279
277
 
280
- // @public
278
+ // @public @deprecated
281
279
  export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
282
280
  readonly [P in symbol | string]: P extends K ? T : never;
283
281
  };
284
282
 
283
+ // @public
284
+ export type RestrictiveStringRecord<T> = {
285
+ readonly [P in string]: T;
286
+ } & {
287
+ readonly [P in symbol]?: never;
288
+ };
289
+
285
290
  // @public @sealed
286
291
  export interface Revertible {
287
292
  dispose(): void;
@@ -330,7 +335,7 @@ export interface SchemaCompatibilityStatus {
330
335
  // @public @sealed
331
336
  export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
332
337
  constructor(scope: TScope);
333
- array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
338
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
334
339
  array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
335
340
  arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
336
341
  [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
@@ -338,7 +343,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
338
343
  readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
339
344
  readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
340
345
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
341
- map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
346
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
342
347
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
343
348
  mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
344
349
  [Symbol.iterator](): Iterator<[
@@ -348,8 +353,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
348
353
  }, false, T>;
349
354
  readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
350
355
  readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
351
- object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
352
- objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
356
+ object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
357
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
353
358
  optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
354
359
  optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
355
360
  required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider">): FieldSchema<FieldKind.Required, T, TCustomMetadata>;
@@ -390,14 +395,14 @@ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<
390
395
  insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
391
396
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
392
397
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
393
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
394
- moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
398
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number): void;
399
+ moveRangeToIndex(destinationGap: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
395
400
  moveRangeToStart(sourceStart: number, sourceEnd: number): void;
396
401
  moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
397
402
  moveToEnd(sourceIndex: number): void;
398
403
  moveToEnd(sourceIndex: number, source: TMoveFrom): void;
399
- moveToIndex(index: number, sourceIndex: number): void;
400
- moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
404
+ moveToIndex(destinationGap: number, sourceIndex: number): void;
405
+ moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
401
406
  moveToStart(sourceIndex: number): void;
402
407
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
403
408
  removeAt(index: number): void;
@@ -478,6 +483,7 @@ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind
478
483
 
479
484
  // @public @sealed
480
485
  export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
486
+ readonly childTypes: ReadonlySet<TreeNodeSchema>;
481
487
  readonly identifier: Name;
482
488
  readonly implicitlyConstructable: ImplicitlyConstructable;
483
489
  readonly info: Info;
@@ -486,16 +492,16 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
486
492
  }
487
493
 
488
494
  // @public @sealed
489
- interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
495
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
490
496
  // (undocumented)
491
497
  create(data: TInsertable): TNode;
492
498
  }
493
499
 
494
500
  // @public
495
- export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
501
+ export type TreeObjectNode<T extends RestrictiveStringRecord<ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
496
502
 
497
503
  // @public
498
- export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
504
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveStringRecord<ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
499
505
 
500
506
  // @public
501
507
  export enum TreeStatus {
@@ -547,15 +553,20 @@ export type Unhydrated<T> = T;
547
553
 
548
554
  // @public
549
555
  export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
550
- [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
556
+ [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
551
557
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
552
558
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
553
559
  }[T["kind"]], false, {
554
- [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
560
+ [NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
555
561
  [NodeKind.Array]: ImplicitAllowedTypes;
556
562
  [NodeKind.Map]: ImplicitAllowedTypes;
557
563
  }[T["kind"]]>> = true;
558
564
 
565
+ // @public @sealed
566
+ export interface ViewableTree {
567
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
568
+ }
569
+
559
570
  // @public @sealed
560
571
  export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
561
572
  // @deprecated
package/dist/alpha.d.ts CHANGED
@@ -45,6 +45,7 @@ export {
45
45
  NodeKind,
46
46
  Off,
47
47
  RestrictiveReadonlyRecord,
48
+ RestrictiveStringRecord,
48
49
  Revertible,
49
50
  RevertibleFactory,
50
51
  RevertibleStatus,
@@ -66,6 +67,7 @@ export {
66
67
  TreeNodeSchema,
67
68
  TreeNodeSchemaClass,
68
69
  TreeNodeSchemaCore,
70
+ TreeNodeSchemaNonClass,
69
71
  TreeObjectNode,
70
72
  TreeObjectNodeUnsafe,
71
73
  TreeStatus,
@@ -75,6 +77,7 @@ export {
75
77
  Unenforced,
76
78
  Unhydrated,
77
79
  ValidateRecursiveSchema,
80
+ ViewableTree,
78
81
  WithType,
79
82
  rollback,
80
83
  typeSchemaSymbol,
@@ -99,5 +102,8 @@ export {
99
102
  JsonSchemaRef,
100
103
  JsonSchemaType,
101
104
  JsonTreeSchema,
105
+ TreeBranch,
106
+ TreeBranchFork,
107
+ getBranch,
102
108
  getJsonSchema
103
109
  } from "./index.js";
package/dist/beta.d.ts CHANGED
@@ -45,6 +45,7 @@ export {
45
45
  NodeKind,
46
46
  Off,
47
47
  RestrictiveReadonlyRecord,
48
+ RestrictiveStringRecord,
48
49
  Revertible,
49
50
  RevertibleFactory,
50
51
  RevertibleStatus,
@@ -66,6 +67,7 @@ export {
66
67
  TreeNodeSchema,
67
68
  TreeNodeSchemaClass,
68
69
  TreeNodeSchemaCore,
70
+ TreeNodeSchemaNonClass,
69
71
  TreeObjectNode,
70
72
  TreeObjectNodeUnsafe,
71
73
  TreeStatus,
@@ -75,6 +77,7 @@ export {
75
77
  Unenforced,
76
78
  Unhydrated,
77
79
  ValidateRecursiveSchema,
80
+ ViewableTree,
78
81
  WithType,
79
82
  rollback,
80
83
  typeSchemaSymbol,
@@ -6,9 +6,9 @@ import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
6
6
  import type { ICodecFamily, IJsonCodec } from "../../codec/index.js";
7
7
  import type { SchemaAndPolicy } from "../../core/index.js";
8
8
  import type { JsonCompatibleReadOnly } from "../../util/index.js";
9
- import type { ChangeRebaser, RevisionTag } from "../rebase/index.js";
9
+ import type { ChangeRebaser, RevisionTag, TaggedChange } from "../rebase/index.js";
10
10
  export interface ChangeFamily<TEditor extends ChangeFamilyEditor, TChange> {
11
- buildEditor(changeReceiver: (change: TChange) => void): TEditor;
11
+ buildEditor(mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<TChange>) => void): TEditor;
12
12
  readonly rebaser: ChangeRebaser<TChange>;
13
13
  readonly codecs: ICodecFamily<TChange, ChangeEncodingContext>;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"changeFamily.d.ts","sourceRoot":"","sources":["../../../src/core/change-family/changeFamily.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,kBAAkB,EAAE,OAAO;IACxE,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAEhE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,UAAU,CAClD,OAAO,EACP,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,CACrB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC;;;;;;;OAOG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB;;;;;;;OAOG;IACH,eAAe,IAAI,IAAI,CAAC;CACxB"}
1
+ {"version":3,"file":"changeFamily.d.ts","sourceRoot":"","sources":["../../../src/core/change-family/changeFamily.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnF,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,kBAAkB,EAAE,OAAO;IACxE,WAAW,CACV,eAAe,EAAE,MAAM,WAAW,EAClC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,GACrD,OAAO,CAAC;IAEX,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,UAAU,CAClD,OAAO,EACP,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,CACrB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC;;;;;;;OAOG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB;;;;;;;OAOG;IACH,eAAe,IAAI,IAAI,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"changeFamily.js","sourceRoot":"","sources":["../../../src/core/change-family/changeFamily.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IIdCompressor, SessionId } from \"@fluidframework/id-compressor\";\n\nimport type { ICodecFamily, IJsonCodec } from \"../../codec/index.js\";\nimport type { SchemaAndPolicy } from \"../../core/index.js\";\nimport type { JsonCompatibleReadOnly } from \"../../util/index.js\";\nimport type { ChangeRebaser, RevisionTag } from \"../rebase/index.js\";\n\nexport interface ChangeFamily<TEditor extends ChangeFamilyEditor, TChange> {\n\tbuildEditor(changeReceiver: (change: TChange) => void): TEditor;\n\n\treadonly rebaser: ChangeRebaser<TChange>;\n\treadonly codecs: ICodecFamily<TChange, ChangeEncodingContext>;\n}\n\nexport interface ChangeEncodingContext {\n\treadonly originatorId: SessionId;\n\treadonly revision: RevisionTag | undefined;\n\treadonly idCompressor: IIdCompressor;\n\treadonly schema?: SchemaAndPolicy;\n}\n\nexport type ChangeFamilyCodec<TChange> = IJsonCodec<\n\tTChange,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tChangeEncodingContext\n>;\n\nexport interface ChangeFamilyEditor {\n\t/**\n\t * Must be called when a new transaction starts.\n\t *\n\t * Note: transactions are an optional feature. It is valid to make edits outside of a transaction.\n\t *\n\t * For each call to this function, a matching call to `exitTransaction` must be made at a later time.\n\t * Can be called repeatedly to indicate the start of nesting transactions.\n\t */\n\tenterTransaction(): void;\n\n\t/**\n\t * Must be called when a transaction ends.\n\t *\n\t * Note: transactions are an optional feature. It is valid to make edits outside of a transaction.\n\t *\n\t * For each call to this function, a matching call to `enterTransaction` must be made at an earlier time.\n\t * Can be called repeatedly to indicate the end of nesting transactions.\n\t */\n\texitTransaction(): void;\n}\n"]}
1
+ {"version":3,"file":"changeFamily.js","sourceRoot":"","sources":["../../../src/core/change-family/changeFamily.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IIdCompressor, SessionId } from \"@fluidframework/id-compressor\";\n\nimport type { ICodecFamily, IJsonCodec } from \"../../codec/index.js\";\nimport type { SchemaAndPolicy } from \"../../core/index.js\";\nimport type { JsonCompatibleReadOnly } from \"../../util/index.js\";\nimport type { ChangeRebaser, RevisionTag, TaggedChange } from \"../rebase/index.js\";\n\nexport interface ChangeFamily<TEditor extends ChangeFamilyEditor, TChange> {\n\tbuildEditor(\n\t\tmintRevisionTag: () => RevisionTag,\n\t\tchangeReceiver: (change: TaggedChange<TChange>) => void,\n\t): TEditor;\n\n\treadonly rebaser: ChangeRebaser<TChange>;\n\treadonly codecs: ICodecFamily<TChange, ChangeEncodingContext>;\n}\n\nexport interface ChangeEncodingContext {\n\treadonly originatorId: SessionId;\n\treadonly revision: RevisionTag | undefined;\n\treadonly idCompressor: IIdCompressor;\n\treadonly schema?: SchemaAndPolicy;\n}\n\nexport type ChangeFamilyCodec<TChange> = IJsonCodec<\n\tTChange,\n\tJsonCompatibleReadOnly,\n\tJsonCompatibleReadOnly,\n\tChangeEncodingContext\n>;\n\nexport interface ChangeFamilyEditor {\n\t/**\n\t * Must be called when a new transaction starts.\n\t *\n\t * Note: transactions are an optional feature. It is valid to make edits outside of a transaction.\n\t *\n\t * For each call to this function, a matching call to `exitTransaction` must be made at a later time.\n\t * Can be called repeatedly to indicate the start of nesting transactions.\n\t */\n\tenterTransaction(): void;\n\n\t/**\n\t * Must be called when a transaction ends.\n\t *\n\t * Note: transactions are an optional feature. It is valid to make edits outside of a transaction.\n\t *\n\t * For each call to this function, a matching call to `enterTransaction` must be made at an earlier time.\n\t * Can be called repeatedly to indicate the end of nesting transactions.\n\t */\n\texitTransaction(): void;\n}\n"]}
@@ -2,17 +2,18 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+ import type { TaggedChange } from "../rebase/index.js";
5
6
  import type { ChangeFamily, ChangeFamilyEditor } from "./changeFamily.js";
6
7
  export declare abstract class EditBuilder<TChange> implements ChangeFamilyEditor {
7
8
  protected readonly changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>;
8
9
  private readonly changeReceiver;
9
- constructor(changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>, changeReceiver: (change: TChange) => void);
10
+ constructor(changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>, changeReceiver: (change: TaggedChange<TChange>) => void);
10
11
  /**
11
12
  * Subclasses add editing methods which call this with their generated edits.
12
13
  *
13
14
  * @sealed
14
15
  */
15
- protected applyChange(change: TChange): void;
16
+ protected applyChange(change: TaggedChange<TChange>): void;
16
17
  enterTransaction(): void;
17
18
  exitTransaction(): void;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/change-family/editBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,8BAAsB,WAAW,CAAC,OAAO,CAAE,YAAW,kBAAkB;IAEtE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADZ,YAAY,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EACzD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI;IAG3D;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIrC,gBAAgB,IAAI,IAAI;IACxB,eAAe,IAAI,IAAI;CAC9B"}
1
+ {"version":3,"file":"editBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/change-family/editBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,8BAAsB,WAAW,CAAC,OAAO,CAAE,YAAW,kBAAkB;IAEtE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADZ,YAAY,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EACzD,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI;IAGzE;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAInD,gBAAgB,IAAI,IAAI;IACxB,eAAe,IAAI,IAAI;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"editBuilder.js","sourceRoot":"","sources":["../../../src/core/change-family/editBuilder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAsB,WAAW;IAChC,YACoB,YAAuD,EACzD,cAAyC;QADvC,iBAAY,GAAZ,YAAY,CAA2C;QACzD,mBAAc,GAAd,cAAc,CAA2B;IACxD,CAAC;IAEJ;;;;OAIG;IACO,WAAW,CAAC,MAAe;QACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEM,gBAAgB,KAAU,CAAC;IAC3B,eAAe,KAAU,CAAC;CACjC;AAjBD,kCAiBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ChangeFamily, ChangeFamilyEditor } from \"./changeFamily.js\";\n\nexport abstract class EditBuilder<TChange> implements ChangeFamilyEditor {\n\tpublic constructor(\n\t\tprotected readonly changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>,\n\t\tprivate readonly changeReceiver: (change: TChange) => void,\n\t) {}\n\n\t/**\n\t * Subclasses add editing methods which call this with their generated edits.\n\t *\n\t * @sealed\n\t */\n\tprotected applyChange(change: TChange): void {\n\t\tthis.changeReceiver(change);\n\t}\n\n\tpublic enterTransaction(): void {}\n\tpublic exitTransaction(): void {}\n}\n"]}
1
+ {"version":3,"file":"editBuilder.js","sourceRoot":"","sources":["../../../src/core/change-family/editBuilder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAKH,MAAsB,WAAW;IAChC,YACoB,YAAuD,EACzD,cAAuD;QADrD,iBAAY,GAAZ,YAAY,CAA2C;QACzD,mBAAc,GAAd,cAAc,CAAyC;IACtE,CAAC;IAEJ;;;;OAIG;IACO,WAAW,CAAC,MAA6B;QAClD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEM,gBAAgB,KAAU,CAAC;IAC3B,eAAe,KAAU,CAAC;CACjC;AAjBD,kCAiBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { TaggedChange } from \"../rebase/index.js\";\nimport type { ChangeFamily, ChangeFamilyEditor } from \"./changeFamily.js\";\n\nexport abstract class EditBuilder<TChange> implements ChangeFamilyEditor {\n\tpublic constructor(\n\t\tprotected readonly changeFamily: ChangeFamily<ChangeFamilyEditor, TChange>,\n\t\tprivate readonly changeReceiver: (change: TaggedChange<TChange>) => void,\n\t) {}\n\n\t/**\n\t * Subclasses add editing methods which call this with their generated edits.\n\t *\n\t * @sealed\n\t */\n\tprotected applyChange(change: TaggedChange<TChange>): void {\n\t\tthis.changeReceiver(change);\n\t}\n\n\tpublic enterTransaction(): void {}\n\tpublic exitTransaction(): void {}\n}\n"]}
@@ -46,6 +46,7 @@ export interface ChangeRebaser<TChangeset> {
46
46
  * @param changes - The changes to invert.
47
47
  * @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
48
48
  * performing a sandwich rebase.
49
+ * @param revision - The revision for the invert changeset.
49
50
  * This flag is relevant to merge semantics that are dependent on edit sequencing order:
50
51
  * - In the context of an undo, this function inverts a change that is sequenced and applied before the produced inverse.
51
52
  * - In the context of a rollback, this function inverts a change that is sequenced after but applied before the produced inverse.
@@ -54,7 +55,7 @@ export interface ChangeRebaser<TChangeset> {
54
55
  * `compose([changes, inverse(changes)])` be equal to `compose([])`:
55
56
  * See {@link ChangeRebaser} for details.
56
57
  */
57
- invert(changes: TaggedChange<TChangeset>, isRollback: boolean): TChangeset;
58
+ invert(changes: TaggedChange<TChangeset>, isRollback: boolean, revision: RevisionTag): TChangeset;
58
59
  /**
59
60
  * Rebase `change` over `over`.
60
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"changeRebaser.d.ts","sourceRoot":"","sources":["../../../src/core/rebase/changeRebaser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,aAAa,CAAC,UAAU;IACxC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC;IAEzD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IAE3E;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CACL,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAC9B,gBAAgB,EAAE,sBAAsB,GACtC,UAAU,CAAC;IAEd,cAAc,CACb,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,UAAU,CAAC,EAAE,WAAW,GACtB,UAAU,CAAC;CACd;AAED;GACG;AACH,MAAM,WAAW,YAAY,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS;IACvE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EACxC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,MAAM,EAAE,IAAI,GACV,YAAY,CAAC,IAAI,CAAC,CAEpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC;AAEvE;GACG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC;IAChF,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;CACpD;AAED;GACG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAE1F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAC/C,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,WAAW,GAAG,SAAS,GACjC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAM7B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE5D;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACnC;AAED,oBAAY,iBAAiB;IAC5B,UAAU,IAAA;IACV,OAAO,IAAA;IACP,QAAQ,IAAA;CACR"}
1
+ {"version":3,"file":"changeRebaser.d.ts","sourceRoot":"","sources":["../../../src/core/rebase/changeRebaser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,aAAa,CAAC,UAAU;IACxC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC;IAEzD;;;;;;;;;;;;OAYG;IACH,MAAM,CACL,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EACjC,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,WAAW,GACnB,UAAU,CAAC;IAEd;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CACL,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAC9B,gBAAgB,EAAE,sBAAsB,GACtC,UAAU,CAAC;IAEd,cAAc,CACb,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,UAAU,CAAC,EAAE,WAAW,GACtB,UAAU,CAAC;CACd;AAED;GACG;AACH,MAAM,WAAW,YAAY,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS;IACvE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EACxC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,MAAM,EAAE,IAAI,GACV,YAAY,CAAC,IAAI,CAAC,CAEpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC;AAEvE;GACG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC;IAChF,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;CACpD;AAED;GACG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAE1F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAC/C,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,WAAW,GAAG,SAAS,GACjC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAM7B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE5D;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACnC;AAED,oBAAY,iBAAiB;IAC5B,UAAU,IAAA;IACV,OAAO,IAAA;IACP,QAAQ,IAAA;CACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"changeRebaser.js","sourceRoot":"","sources":["../../../src/core/rebase/changeRebaser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsGH,SAAgB,eAAe,CAC9B,KAAwB,EACxB,MAAY;IAEZ,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AALD,0CAKC;AAiCD,SAAgB,SAAS,CAAI,MAAS,EAAE,QAAiC;IACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAFD,8BAEC;AAED,SAAgB,kBAAkB,CACjC,aAAsB,EACtB,QAAc,EACd,UAAmC;IAEnC,OAAO;QACN,QAAQ;QACR,MAAM,EAAE,aAAa;QACrB,UAAU;KACV,CAAC;AACH,CAAC;AAVD,gDAUC;AAED,SAAgB,cAAc,CAAI,MAAS;IAC1C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAFD,wCAEC;AAMD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC5B,qEAAU,CAAA;IACV,+DAAO,CAAA;IACP,iEAAQ,CAAA;AACT,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { Invariant } from \"../../util/index.js\";\n\nimport type { RevisionTag } from \"./types.js\";\n\n/**\n * Rebasing logic for a particular kind of change.\n *\n * This interface is used to provide rebase policy to `Rebaser`.\n *\n * The implementation must ensure TChangeset forms a [group](https://en.wikipedia.org/wiki/Group_(mathematics)) where:\n * - `compose([])` is the identity element.\n * - associativity is defined as `compose([...a, ...b])` is equal to\n * `compose([compose(a), compose(b)])` for all `a` and `b`.\n * - `inverse(a)` gives the inverse element of `a`.\n *\n * In these requirements the definition of equality is up to the implementer,\n * but it is required that any two changes which are considered equal:\n * - have the same impact when applied to any tree.\n * - can be substituted for each-other in all methods on this\n * interface and produce equal (by this same definition) results.\n *\n * For the sake of testability, implementations will likely want to have a concrete equality implementation.\n *\n * This API uses `compose` on arrays instead of an explicit identity element and associative binary operator\n * to allow the implementation more room for optimization,\n * but should otherwise be equivalent to the identity element and binary operator group approach.\n *\n * TODO:\n * Be more specific about the above requirements.\n * For example, would something that is close to forming a group but has precision issues\n * (ex: the floating point numbers and addition) be ok?\n * Would this cause decoherence (and thus be absolutely not ok),\n * or just minor semantic precision issues, which could be tolerated.\n * For now assume that such issues are not ok.\n */\nexport interface ChangeRebaser<TChangeset> {\n\t_typeCheck?: Invariant<TChangeset>;\n\n\t/**\n\t * Compose a collection of changesets into a single one.\n\t * See {@link ChangeRebaser} for requirements.\n\t */\n\tcompose(changes: TaggedChange<TChangeset>[]): TChangeset;\n\n\t/**\n\t * @param changes - The changes 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 * This flag is relevant to merge semantics that are dependent on edit sequencing order:\n\t * - In the context of an undo, this function inverts a change that is sequenced and applied before the produced inverse.\n\t * - In the context of a rollback, this function inverts a change that is sequenced after but applied before the produced inverse.\n\t * @returns the inverse of `changes`.\n\t *\n\t * `compose([changes, inverse(changes)])` be equal to `compose([])`:\n\t * See {@link ChangeRebaser} for details.\n\t */\n\tinvert(changes: TaggedChange<TChangeset>, isRollback: boolean): TChangeset;\n\n\t/**\n\t * Rebase `change` over `over`.\n\t *\n\t * The resulting changeset should, as much as possible, replicate the same semantics as `change`,\n\t * except be valid to apply after `over` instead of before it.\n\t *\n\t * When rebasing `change` onto a new branch, `revisionMetadata` should include entries for all changesets\n\t * from the source which are being rebased onto the target branch.\n\t *\n\t * Requirements:\n\t * The implementation must ensure that for all possible changesets `a`, `b` and `c`:\n\t * - `rebase(a, compose([b, c])` is equal to `rebase(rebase(a, b), c)`.\n\t * - `rebase(compose([a, b]), c)` is equal to\n\t * `compose([rebase(a, c), rebase(b, compose([inverse(a), c, rebase(a, c)])])`.\n\t * - `rebase(a, compose([]))` is equal to `a`.\n\t * - `rebase(compose([]), a)` is equal to `compose([])`.\n\t */\n\trebase(\n\t\tchange: TaggedChange<TChangeset>,\n\t\tover: TaggedChange<TChangeset>,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\tchangeRevision(\n\t\tchange: TChangeset,\n\t\tnewRevision: RevisionTag | undefined,\n\t\trollBackOf?: RevisionTag,\n\t): TChangeset;\n}\n\n/**\n */\nexport interface TaggedChange<TChangeset, TTag = RevisionTag | undefined> {\n\treadonly revision: TTag;\n\t/**\n\t * When populated, indicates that the changeset is a rollback for the purpose of a rebase sandwich.\n\t * The value corresponds to the `revision` of the original changeset being rolled back.\n\t */\n\treadonly rollbackOf?: RevisionTag;\n\treadonly change: TChangeset;\n}\n\nexport function mapTaggedChange<TIn, TOut>(\n\tinput: TaggedChange<TIn>,\n\tchange: TOut,\n): TaggedChange<TOut> {\n\treturn { ...input, change };\n}\n\n/**\n * A callback that returns the index of the changeset associated with the given RevisionTag among the changesets being\n * composed or rebased. This index is solely meant to communicate relative ordering, and is only valid within the scope of the\n * compose or rebase operation.\n *\n * During composition, the index reflects the order of the changeset within the overall composed changeset that is\n * being produced.\n *\n * During rebase, the indices of the base changes are all lower than the indices of the change being rebased.\n */\nexport type RevisionIndexer = (tag: RevisionTag) => number | undefined;\n\n/**\n */\nexport interface RevisionMetadataSource {\n\treadonly getIndex: RevisionIndexer;\n\treadonly tryGetInfo: (tag: RevisionTag | undefined) => RevisionInfo | undefined;\n\treadonly hasRollback: (tag: RevisionTag) => boolean;\n}\n\n/**\n */\nexport interface RevisionInfo {\n\treadonly revision: RevisionTag;\n\t/**\n\t * When populated, indicates that the changeset is a rollback for the purpose of a rebase sandwich.\n\t * The value corresponds to the `revision` of the original changeset being rolled back.\n\t */\n\treadonly rollbackOf?: RevisionTag;\n}\n\nexport function tagChange<T>(change: T, revision: RevisionTag | undefined): TaggedChange<T> {\n\treturn { revision, change };\n}\n\nexport function tagRollbackInverse<TChange, TTag>(\n\tinverseChange: TChange,\n\trevision: TTag,\n\trollbackOf: RevisionTag | undefined,\n): TaggedChange<TChange, TTag> {\n\treturn {\n\t\trevision,\n\t\tchange: inverseChange,\n\t\trollbackOf,\n\t};\n}\n\nexport function makeAnonChange<T>(change: T): TaggedChange<T> {\n\treturn { revision: undefined, change };\n}\n\nexport interface FinalChange {\n\treadonly status: FinalChangeStatus;\n}\n\nexport enum FinalChangeStatus {\n\tconflicted,\n\trebased,\n\tcommuted,\n}\n"]}
1
+ {"version":3,"file":"changeRebaser.js","sourceRoot":"","sources":["../../../src/core/rebase/changeRebaser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA2GH,SAAgB,eAAe,CAC9B,KAAwB,EACxB,MAAY;IAEZ,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AALD,0CAKC;AAiCD,SAAgB,SAAS,CAAI,MAAS,EAAE,QAAiC;IACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAFD,8BAEC;AAED,SAAgB,kBAAkB,CACjC,aAAsB,EACtB,QAAc,EACd,UAAmC;IAEnC,OAAO;QACN,QAAQ;QACR,MAAM,EAAE,aAAa;QACrB,UAAU;KACV,CAAC;AACH,CAAC;AAVD,gDAUC;AAED,SAAgB,cAAc,CAAI,MAAS;IAC1C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAFD,wCAEC;AAMD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC5B,qEAAU,CAAA;IACV,+DAAO,CAAA;IACP,iEAAQ,CAAA;AACT,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { Invariant } from \"../../util/index.js\";\n\nimport type { RevisionTag } from \"./types.js\";\n\n/**\n * Rebasing logic for a particular kind of change.\n *\n * This interface is used to provide rebase policy to `Rebaser`.\n *\n * The implementation must ensure TChangeset forms a [group](https://en.wikipedia.org/wiki/Group_(mathematics)) where:\n * - `compose([])` is the identity element.\n * - associativity is defined as `compose([...a, ...b])` is equal to\n * `compose([compose(a), compose(b)])` for all `a` and `b`.\n * - `inverse(a)` gives the inverse element of `a`.\n *\n * In these requirements the definition of equality is up to the implementer,\n * but it is required that any two changes which are considered equal:\n * - have the same impact when applied to any tree.\n * - can be substituted for each-other in all methods on this\n * interface and produce equal (by this same definition) results.\n *\n * For the sake of testability, implementations will likely want to have a concrete equality implementation.\n *\n * This API uses `compose` on arrays instead of an explicit identity element and associative binary operator\n * to allow the implementation more room for optimization,\n * but should otherwise be equivalent to the identity element and binary operator group approach.\n *\n * TODO:\n * Be more specific about the above requirements.\n * For example, would something that is close to forming a group but has precision issues\n * (ex: the floating point numbers and addition) be ok?\n * Would this cause decoherence (and thus be absolutely not ok),\n * or just minor semantic precision issues, which could be tolerated.\n * For now assume that such issues are not ok.\n */\nexport interface ChangeRebaser<TChangeset> {\n\t_typeCheck?: Invariant<TChangeset>;\n\n\t/**\n\t * Compose a collection of changesets into a single one.\n\t * See {@link ChangeRebaser} for requirements.\n\t */\n\tcompose(changes: TaggedChange<TChangeset>[]): TChangeset;\n\n\t/**\n\t * @param changes - The changes 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 revision - The revision for the invert changeset.\n\t * This flag is relevant to merge semantics that are dependent on edit sequencing order:\n\t * - In the context of an undo, this function inverts a change that is sequenced and applied before the produced inverse.\n\t * - In the context of a rollback, this function inverts a change that is sequenced after but applied before the produced inverse.\n\t * @returns the inverse of `changes`.\n\t *\n\t * `compose([changes, inverse(changes)])` be equal to `compose([])`:\n\t * See {@link ChangeRebaser} for details.\n\t */\n\tinvert(\n\t\tchanges: TaggedChange<TChangeset>,\n\t\tisRollback: boolean,\n\t\trevision: RevisionTag,\n\t): TChangeset;\n\n\t/**\n\t * Rebase `change` over `over`.\n\t *\n\t * The resulting changeset should, as much as possible, replicate the same semantics as `change`,\n\t * except be valid to apply after `over` instead of before it.\n\t *\n\t * When rebasing `change` onto a new branch, `revisionMetadata` should include entries for all changesets\n\t * from the source which are being rebased onto the target branch.\n\t *\n\t * Requirements:\n\t * The implementation must ensure that for all possible changesets `a`, `b` and `c`:\n\t * - `rebase(a, compose([b, c])` is equal to `rebase(rebase(a, b), c)`.\n\t * - `rebase(compose([a, b]), c)` is equal to\n\t * `compose([rebase(a, c), rebase(b, compose([inverse(a), c, rebase(a, c)])])`.\n\t * - `rebase(a, compose([]))` is equal to `a`.\n\t * - `rebase(compose([]), a)` is equal to `compose([])`.\n\t */\n\trebase(\n\t\tchange: TaggedChange<TChangeset>,\n\t\tover: TaggedChange<TChangeset>,\n\t\trevisionMetadata: RevisionMetadataSource,\n\t): TChangeset;\n\n\tchangeRevision(\n\t\tchange: TChangeset,\n\t\tnewRevision: RevisionTag | undefined,\n\t\trollBackOf?: RevisionTag,\n\t): TChangeset;\n}\n\n/**\n */\nexport interface TaggedChange<TChangeset, TTag = RevisionTag | undefined> {\n\treadonly revision: TTag;\n\t/**\n\t * When populated, indicates that the changeset is a rollback for the purpose of a rebase sandwich.\n\t * The value corresponds to the `revision` of the original changeset being rolled back.\n\t */\n\treadonly rollbackOf?: RevisionTag;\n\treadonly change: TChangeset;\n}\n\nexport function mapTaggedChange<TIn, TOut>(\n\tinput: TaggedChange<TIn>,\n\tchange: TOut,\n): TaggedChange<TOut> {\n\treturn { ...input, change };\n}\n\n/**\n * A callback that returns the index of the changeset associated with the given RevisionTag among the changesets being\n * composed or rebased. This index is solely meant to communicate relative ordering, and is only valid within the scope of the\n * compose or rebase operation.\n *\n * During composition, the index reflects the order of the changeset within the overall composed changeset that is\n * being produced.\n *\n * During rebase, the indices of the base changes are all lower than the indices of the change being rebased.\n */\nexport type RevisionIndexer = (tag: RevisionTag) => number | undefined;\n\n/**\n */\nexport interface RevisionMetadataSource {\n\treadonly getIndex: RevisionIndexer;\n\treadonly tryGetInfo: (tag: RevisionTag | undefined) => RevisionInfo | undefined;\n\treadonly hasRollback: (tag: RevisionTag) => boolean;\n}\n\n/**\n */\nexport interface RevisionInfo {\n\treadonly revision: RevisionTag;\n\t/**\n\t * When populated, indicates that the changeset is a rollback for the purpose of a rebase sandwich.\n\t * The value corresponds to the `revision` of the original changeset being rolled back.\n\t */\n\treadonly rollbackOf?: RevisionTag;\n}\n\nexport function tagChange<T>(change: T, revision: RevisionTag | undefined): TaggedChange<T> {\n\treturn { revision, change };\n}\n\nexport function tagRollbackInverse<TChange, TTag>(\n\tinverseChange: TChange,\n\trevision: TTag,\n\trollbackOf: RevisionTag | undefined,\n): TaggedChange<TChange, TTag> {\n\treturn {\n\t\trevision,\n\t\tchange: inverseChange,\n\t\trollbackOf,\n\t};\n}\n\nexport function makeAnonChange<T>(change: T): TaggedChange<T> {\n\treturn { revision: undefined, change };\n}\n\nexport interface FinalChange {\n\treadonly status: FinalChangeStatus;\n}\n\nexport enum FinalChangeStatus {\n\tconflicted,\n\trebased,\n\tcommuted,\n}\n"]}
@@ -217,8 +217,8 @@ function rollbackFromCommit(changeRebaser, commit, mintRevisionTag, cache) {
217
217
  if (commit.rollback !== undefined) {
218
218
  return commit.rollback;
219
219
  }
220
- const untagged = changeRebaser.invert(commit, true);
221
220
  const tag = mintRevisionTag();
221
+ const untagged = changeRebaser.invert(commit, true, tag);
222
222
  const deeplyTaggedRollback = changeRebaser.changeRevision(untagged, tag, commit.revision);
223
223
  const fullyTaggedRollback = (0, changeRebaser_js_1.tagRollbackInverse)(deeplyTaggedRollback, tag, commit.revision);
224
224
  if (cache === true) {