@fluidframework/tree 2.73.0 → 2.74.0-368706

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 (1294) hide show
  1. package/.vscode/settings.json +2 -2
  2. package/api-report/tree.alpha.api.md +133 -85
  3. package/api-report/tree.beta.api.md +0 -1
  4. package/api-report/tree.legacy.beta.api.md +0 -1
  5. package/api-report/tree.legacy.public.api.md +0 -1
  6. package/api-report/tree.public.api.md +0 -1
  7. package/dist/alpha.d.ts +7 -2
  8. package/dist/codec/codec.d.ts +14 -1
  9. package/dist/codec/codec.d.ts.map +1 -1
  10. package/dist/codec/codec.js +11 -0
  11. package/dist/codec/codec.js.map +1 -1
  12. package/dist/codec/versioned/codec.d.ts +1 -1
  13. package/dist/codec/versioned/codec.d.ts.map +1 -1
  14. package/dist/codec/versioned/codec.js.map +1 -1
  15. package/dist/codec/versioned/format.d.ts +4 -1
  16. package/dist/codec/versioned/format.d.ts.map +1 -1
  17. package/dist/codec/versioned/format.js +4 -1
  18. package/dist/codec/versioned/format.js.map +1 -1
  19. package/dist/core/change-family/changeFamily.d.ts +4 -1
  20. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  21. package/dist/core/change-family/changeFamily.js.map +1 -1
  22. package/dist/core/change-family/index.d.ts +1 -1
  23. package/dist/core/change-family/index.d.ts.map +1 -1
  24. package/dist/core/change-family/index.js.map +1 -1
  25. package/dist/core/index.d.ts +3 -3
  26. package/dist/core/index.d.ts.map +1 -1
  27. package/dist/core/index.js +7 -4
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/rebase/changeRebaser.d.ts +6 -1
  30. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  31. package/dist/core/rebase/changeRebaser.js.map +1 -1
  32. package/dist/core/rebase/index.d.ts +1 -1
  33. package/dist/core/rebase/index.d.ts.map +1 -1
  34. package/dist/core/rebase/index.js +2 -1
  35. package/dist/core/rebase/index.js.map +1 -1
  36. package/dist/core/rebase/types.d.ts +2 -1
  37. package/dist/core/rebase/types.d.ts.map +1 -1
  38. package/dist/core/rebase/types.js +5 -1
  39. package/dist/core/rebase/types.js.map +1 -1
  40. package/dist/core/rebase/utils.d.ts.map +1 -1
  41. package/dist/core/rebase/utils.js +25 -7
  42. package/dist/core/rebase/utils.js.map +1 -1
  43. package/dist/core/tree/detachedFieldIndex.d.ts +40 -13
  44. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  45. package/dist/core/tree/detachedFieldIndex.js +21 -12
  46. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  47. package/dist/core/tree/index.d.ts +4 -3
  48. package/dist/core/tree/index.d.ts.map +1 -1
  49. package/dist/core/tree/index.js +6 -2
  50. package/dist/core/tree/index.js.map +1 -1
  51. package/dist/core/tree/pathTree.d.ts +11 -3
  52. package/dist/core/tree/pathTree.d.ts.map +1 -1
  53. package/dist/core/tree/pathTree.js +14 -2
  54. package/dist/core/tree/pathTree.js.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  56. package/dist/feature-libraries/chunked-forest/basicChunk.js +7 -0
  57. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  59. package/dist/feature-libraries/chunked-forest/chunkTree.js +4 -1
  60. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  61. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -2
  62. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  63. package/dist/feature-libraries/chunked-forest/codec/codecs.js +1 -1
  64. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  65. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +15 -7
  66. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
  67. package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -1
  68. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +7 -2
  69. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  70. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +90 -42
  71. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  72. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +234 -69
  73. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  74. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -4
  75. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  76. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +33 -28
  77. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  78. package/dist/feature-libraries/default-schema/index.d.ts +2 -1
  79. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  80. package/dist/feature-libraries/default-schema/index.js +4 -2
  81. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  82. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +36 -0
  83. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  84. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +126 -0
  85. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  86. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  87. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  88. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  89. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  90. package/dist/feature-libraries/deltaUtils.d.ts +1 -0
  91. package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
  92. package/dist/feature-libraries/deltaUtils.js +6 -1
  93. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  94. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +30 -8
  95. package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  96. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +41 -11
  97. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  98. package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
  99. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  100. package/dist/feature-libraries/flex-tree/context.js +6 -0
  101. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  102. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  103. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  104. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  105. package/dist/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  106. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  107. package/dist/feature-libraries/flex-tree/lazyField.js +37 -8
  108. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  109. package/dist/feature-libraries/forest-summary/codec.d.ts +2 -2
  110. package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  111. package/dist/feature-libraries/forest-summary/codec.js +4 -4
  112. package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
  113. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +9 -13
  114. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  115. package/dist/feature-libraries/forest-summary/forestSummarizer.js +22 -27
  116. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  117. package/dist/feature-libraries/forest-summary/format.d.ts +41 -5
  118. package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
  119. package/dist/feature-libraries/forest-summary/format.js +7 -7
  120. package/dist/feature-libraries/forest-summary/format.js.map +1 -1
  121. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +11 -9
  122. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  123. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +16 -29
  124. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  125. package/dist/feature-libraries/forest-summary/index.d.ts +2 -1
  126. package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
  127. package/dist/feature-libraries/forest-summary/index.js +3 -2
  128. package/dist/feature-libraries/forest-summary/index.js.map +1 -1
  129. package/dist/feature-libraries/forest-summary/summaryTypes.d.ts +47 -0
  130. package/dist/feature-libraries/forest-summary/summaryTypes.d.ts.map +1 -0
  131. package/dist/feature-libraries/forest-summary/summaryTypes.js +57 -0
  132. package/dist/feature-libraries/forest-summary/summaryTypes.js.map +1 -0
  133. package/dist/feature-libraries/index.d.ts +5 -5
  134. package/dist/feature-libraries/index.d.ts.map +1 -1
  135. package/dist/feature-libraries/index.js +7 -4
  136. package/dist/feature-libraries/index.js.map +1 -1
  137. package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  138. package/dist/feature-libraries/mapTreeCursor.js +1 -0
  139. package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
  140. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  141. package/dist/feature-libraries/mitigatedChangeFamily.js +2 -2
  142. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  143. package/dist/feature-libraries/modular-schema/comparison.d.ts +18 -2
  144. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  145. package/dist/feature-libraries/modular-schema/comparison.js +54 -3
  146. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  147. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  148. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  149. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +4 -7
  150. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  151. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -52
  152. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  153. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  154. package/dist/feature-libraries/modular-schema/fieldKind.d.ts +25 -13
  155. package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  156. package/dist/feature-libraries/modular-schema/fieldKind.js +0 -21
  157. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  158. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  159. package/dist/feature-libraries/modular-schema/genericFieldKind.js +7 -10
  160. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  161. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +2 -2
  162. package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  163. package/dist/feature-libraries/modular-schema/index.d.ts +5 -5
  164. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  165. package/dist/feature-libraries/modular-schema/index.js +12 -8
  166. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  167. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +17 -0
  168. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
  169. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +388 -0
  170. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
  171. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +17 -0
  172. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
  173. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +413 -0
  174. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
  175. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -4
  176. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  177. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -284
  178. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  179. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -15
  180. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  181. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1298 -465
  182. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  183. package/dist/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +2 -2
  184. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
  185. package/dist/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +5 -5
  186. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
  187. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +146 -0
  188. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
  189. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +32 -0
  190. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
  191. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +50 -10
  192. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  193. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +24 -3
  194. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  195. package/dist/feature-libraries/optional-field/index.d.ts +2 -2
  196. package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
  197. package/dist/feature-libraries/optional-field/index.js +1 -2
  198. package/dist/feature-libraries/optional-field/index.js.map +1 -1
  199. package/dist/feature-libraries/optional-field/optionalField.d.ts +5 -26
  200. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  201. package/dist/feature-libraries/optional-field/optionalField.js +217 -451
  202. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  203. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  204. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  205. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  206. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  207. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  208. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
  209. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  210. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +27 -8
  211. package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  212. package/dist/feature-libraries/schema-index/schemaSummarizer.js +42 -16
  213. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  214. package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
  215. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  216. package/dist/feature-libraries/sequence-field/compose.js +80 -256
  217. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  218. package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  219. package/dist/feature-libraries/sequence-field/formatV2.js +1 -0
  220. package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
  221. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  222. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  223. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  224. package/dist/feature-libraries/sequence-field/index.d.ts +2 -3
  225. package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
  226. package/dist/feature-libraries/sequence-field/index.js +1 -3
  227. package/dist/feature-libraries/sequence-field/index.js.map +1 -1
  228. package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
  229. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  230. package/dist/feature-libraries/sequence-field/invert.js +65 -167
  231. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  232. package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  233. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  234. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  235. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  236. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  237. package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -86
  238. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  239. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
  240. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  241. package/dist/feature-libraries/sequence-field/rebase.js +106 -112
  242. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  243. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  244. package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -33
  245. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  246. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  247. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  248. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  249. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  250. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  251. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +358 -179
  252. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  253. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  254. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -60
  255. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  256. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  257. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  258. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  259. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  260. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  261. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  262. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  263. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  264. package/dist/feature-libraries/sequence-field/types.d.ts +30 -59
  265. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  266. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  267. package/dist/feature-libraries/sequence-field/utils.d.ts +15 -24
  268. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  269. package/dist/feature-libraries/sequence-field/utils.js +111 -299
  270. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  271. package/dist/feature-libraries/treeCompressionUtils.d.ts +2 -12
  272. package/dist/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
  273. package/dist/feature-libraries/treeCompressionUtils.js +4 -14
  274. package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
  275. package/dist/index.d.ts +3 -3
  276. package/dist/index.d.ts.map +1 -1
  277. package/dist/index.js +6 -3
  278. package/dist/index.js.map +1 -1
  279. package/dist/packageVersion.d.ts +1 -1
  280. package/dist/packageVersion.d.ts.map +1 -1
  281. package/dist/packageVersion.js +1 -1
  282. package/dist/packageVersion.js.map +1 -1
  283. package/dist/shared-tree/independentView.d.ts +1 -1
  284. package/dist/shared-tree/independentView.d.ts.map +1 -1
  285. package/dist/shared-tree/independentView.js.map +1 -1
  286. package/dist/shared-tree/index.d.ts +1 -1
  287. package/dist/shared-tree/index.d.ts.map +1 -1
  288. package/dist/shared-tree/index.js.map +1 -1
  289. package/dist/shared-tree/schematizeTree.d.ts +4 -4
  290. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  291. package/dist/shared-tree/schematizeTree.js +2 -1
  292. package/dist/shared-tree/schematizeTree.js.map +1 -1
  293. package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
  294. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  295. package/dist/shared-tree/schematizingTreeView.js +32 -33
  296. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  297. package/dist/shared-tree/sharedTree.d.ts +18 -15
  298. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  299. package/dist/shared-tree/sharedTree.js +15 -4
  300. package/dist/shared-tree/sharedTree.js.map +1 -1
  301. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  302. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  303. package/dist/shared-tree/sharedTreeChangeCodecs.js +1 -0
  304. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  305. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts +20 -8
  306. package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  307. package/dist/shared-tree/sharedTreeChangeEnricher.js +25 -11
  308. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  309. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +6 -6
  310. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  311. package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
  312. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  313. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  314. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  315. package/dist/shared-tree/sharedTreeEditBuilder.js +13 -6
  316. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  317. package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
  318. package/dist/shared-tree/treeAlpha.js +1 -1
  319. package/dist/shared-tree/treeAlpha.js.map +1 -1
  320. package/dist/shared-tree/treeCheckout.d.ts +14 -12
  321. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  322. package/dist/shared-tree/treeCheckout.js +66 -17
  323. package/dist/shared-tree/treeCheckout.js.map +1 -1
  324. package/dist/shared-tree-core/branch.d.ts +3 -2
  325. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  326. package/dist/shared-tree-core/branch.js +4 -3
  327. package/dist/shared-tree-core/branch.js.map +1 -1
  328. package/dist/shared-tree-core/editManager.d.ts +2 -2
  329. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  330. package/dist/shared-tree-core/editManager.js +9 -9
  331. package/dist/shared-tree-core/editManager.js.map +1 -1
  332. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
  333. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  334. package/dist/shared-tree-core/editManagerCodecs.js +16 -6
  335. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  336. package/{lib/shared-tree-core/editManagerCodecsV5.d.ts → dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts} +3 -3
  337. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -0
  338. package/dist/shared-tree-core/{editManagerCodecsV5.js → editManagerCodecsVSharedBranches.js} +7 -7
  339. package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -0
  340. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +20 -6
  341. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  342. package/dist/shared-tree-core/editManagerFormatCommons.js +22 -7
  343. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  344. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  345. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  346. package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  347. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  348. package/dist/shared-tree-core/{editManagerFormatV5.d.ts → editManagerFormatVSharedBranches.d.ts} +3 -3
  349. package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -0
  350. package/dist/shared-tree-core/{editManagerFormatV5.js → editManagerFormatVSharedBranches.js} +2 -2
  351. package/dist/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -0
  352. package/dist/shared-tree-core/editManagerSummarizer.d.ts +29 -9
  353. package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  354. package/dist/shared-tree-core/editManagerSummarizer.js +41 -13
  355. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  356. package/dist/shared-tree-core/index.d.ts +5 -3
  357. package/dist/shared-tree-core/index.d.ts.map +1 -1
  358. package/dist/shared-tree-core/index.js +8 -1
  359. package/dist/shared-tree-core/index.js.map +1 -1
  360. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  361. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  362. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  363. package/{lib/shared-tree-core/messageCodecV5.d.ts → dist/shared-tree-core/messageCodecVSharedBranches.d.ts} +2 -2
  364. package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -0
  365. package/dist/shared-tree-core/{messageCodecV5.js → messageCodecVSharedBranches.js} +6 -6
  366. package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -0
  367. package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
  368. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  369. package/dist/shared-tree-core/messageCodecs.js +16 -6
  370. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  371. package/dist/shared-tree-core/messageFormat.d.ts +20 -6
  372. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  373. package/dist/shared-tree-core/messageFormat.js +22 -7
  374. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  375. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
  376. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  377. package/dist/shared-tree-core/messageFormatV1ToV4.js +8 -1
  378. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  379. package/dist/shared-tree-core/{messageFormatV5.d.ts → messageFormatVSharedBranches.d.ts} +5 -7
  380. package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -0
  381. package/dist/shared-tree-core/{messageFormatV5.js → messageFormatVSharedBranches.js} +3 -2
  382. package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -0
  383. package/dist/shared-tree-core/sharedTreeCore.d.ts +14 -47
  384. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  385. package/dist/shared-tree-core/sharedTreeCore.js +30 -18
  386. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  387. package/dist/shared-tree-core/summaryTypes.d.ts +94 -0
  388. package/dist/shared-tree-core/summaryTypes.d.ts.map +1 -0
  389. package/dist/shared-tree-core/summaryTypes.js +47 -0
  390. package/dist/shared-tree-core/summaryTypes.js.map +1 -0
  391. package/dist/shared-tree-core/versionedSummarizer.d.ts +67 -0
  392. package/dist/shared-tree-core/versionedSummarizer.d.ts.map +1 -0
  393. package/dist/shared-tree-core/versionedSummarizer.js +63 -0
  394. package/dist/shared-tree-core/versionedSummarizer.js.map +1 -0
  395. package/dist/simple-tree/api/configuration.d.ts +3 -26
  396. package/dist/simple-tree/api/configuration.d.ts.map +1 -1
  397. package/dist/simple-tree/api/configuration.js +10 -21
  398. package/dist/simple-tree/api/configuration.js.map +1 -1
  399. package/dist/simple-tree/api/dirtyIndex.d.ts +11 -0
  400. package/dist/simple-tree/api/dirtyIndex.d.ts.map +1 -1
  401. package/dist/simple-tree/api/dirtyIndex.js +7 -0
  402. package/dist/simple-tree/api/dirtyIndex.js.map +1 -1
  403. package/dist/simple-tree/api/discrepancies.d.ts +1 -1
  404. package/dist/simple-tree/api/discrepancies.d.ts.map +1 -1
  405. package/dist/simple-tree/api/discrepancies.js.map +1 -1
  406. package/dist/simple-tree/api/getSimpleSchema.d.ts +3 -3
  407. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  408. package/dist/simple-tree/api/getSimpleSchema.js +9 -3
  409. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  410. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +16 -13
  411. package/dist/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
  412. package/dist/simple-tree/api/incrementalAllowedTypes.js +24 -14
  413. package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  414. package/dist/simple-tree/api/index.d.ts +4 -5
  415. package/dist/simple-tree/api/index.d.ts.map +1 -1
  416. package/dist/simple-tree/api/index.js +5 -6
  417. package/dist/simple-tree/api/index.js.map +1 -1
  418. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +1 -1
  419. package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  420. package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  421. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +5 -5
  422. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  423. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  424. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  425. package/dist/simple-tree/api/schemaFactoryRecursive.js +0 -1
  426. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  427. package/dist/simple-tree/api/schemaFromSimple.d.ts +6 -1
  428. package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  429. package/dist/simple-tree/api/schemaFromSimple.js +5 -0
  430. package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
  431. package/dist/simple-tree/api/schemaStatics.d.ts +12 -12
  432. package/dist/simple-tree/api/simpleSchemaCodec.d.ts +15 -3
  433. package/dist/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -1
  434. package/dist/simple-tree/api/simpleSchemaCodec.js +18 -6
  435. package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  436. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
  437. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  438. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  439. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +8 -1
  440. package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  441. package/dist/simple-tree/api/snapshotCompatibilityChecker.js +13 -8
  442. package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  443. package/dist/simple-tree/api/tree.d.ts +1 -1
  444. package/dist/simple-tree/api/tree.js.map +1 -1
  445. package/dist/simple-tree/api/typesUnsafe.d.ts +3 -3
  446. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  447. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  448. package/dist/simple-tree/core/allowedTypes.d.ts +2 -2
  449. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  450. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  451. package/dist/simple-tree/core/index.d.ts +1 -1
  452. package/dist/simple-tree/core/index.d.ts.map +1 -1
  453. package/dist/simple-tree/core/index.js +2 -3
  454. package/dist/simple-tree/core/index.js.map +1 -1
  455. package/dist/simple-tree/core/toStored.d.ts +17 -15
  456. package/dist/simple-tree/core/toStored.d.ts.map +1 -1
  457. package/dist/simple-tree/core/toStored.js +5 -40
  458. package/dist/simple-tree/core/toStored.js.map +1 -1
  459. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  460. package/dist/simple-tree/core/treeNodeKernel.js +1 -0
  461. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  462. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  463. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  464. package/dist/simple-tree/core/unhydratedFlexTree.js +59 -8
  465. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  466. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
  467. package/dist/simple-tree/core/walkSchema.js +4 -0
  468. package/dist/simple-tree/core/walkSchema.js.map +1 -1
  469. package/dist/simple-tree/createContext.d.ts.map +1 -1
  470. package/dist/simple-tree/createContext.js +20 -5
  471. package/dist/simple-tree/createContext.js.map +1 -1
  472. package/dist/simple-tree/fieldSchema.d.ts +7 -7
  473. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  474. package/dist/simple-tree/fieldSchema.js.map +1 -1
  475. package/dist/simple-tree/index.d.ts +8 -7
  476. package/dist/simple-tree/index.d.ts.map +1 -1
  477. package/dist/simple-tree/index.js +16 -13
  478. package/dist/simple-tree/index.js.map +1 -1
  479. package/dist/simple-tree/leafNodeSchema.d.ts +5 -5
  480. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  481. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  482. package/dist/simple-tree/node-kinds/array/arrayNode.js +6 -3
  483. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  484. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  485. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  486. package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  487. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  488. package/dist/simple-tree/node-kinds/common.js +1 -1
  489. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  490. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  491. package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
  492. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  493. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  494. package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  495. package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  496. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  497. package/dist/simple-tree/node-kinds/object/objectNode.js +19 -18
  498. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  499. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +2 -2
  500. package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  501. package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  502. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  503. package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
  504. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  505. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +3 -3
  506. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  507. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  508. package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
  509. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  510. package/dist/simple-tree/prepareForInsertion.js +183 -125
  511. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  512. package/dist/simple-tree/simpleSchema.d.ts +55 -23
  513. package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
  514. package/dist/simple-tree/simpleSchema.js +17 -0
  515. package/dist/simple-tree/simpleSchema.js.map +1 -1
  516. package/dist/simple-tree/simpleSchemaFormatV1.d.ts +1 -1
  517. package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -1
  518. package/dist/simple-tree/simpleSchemaFormatV1.js +8 -1
  519. package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  520. package/dist/simple-tree/toStoredSchema.d.ts +58 -11
  521. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  522. package/dist/simple-tree/toStoredSchema.js +205 -30
  523. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  524. package/dist/simple-tree/treeSchema.d.ts +23 -0
  525. package/dist/simple-tree/treeSchema.d.ts.map +1 -0
  526. package/dist/simple-tree/treeSchema.js +25 -0
  527. package/dist/simple-tree/treeSchema.js.map +1 -0
  528. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  529. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  530. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +29 -11
  531. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  532. package/dist/tableSchema.d.ts +117 -63
  533. package/dist/tableSchema.d.ts.map +1 -1
  534. package/dist/tableSchema.js +159 -58
  535. package/dist/tableSchema.js.map +1 -1
  536. package/dist/treeFactory.d.ts +5 -0
  537. package/dist/treeFactory.d.ts.map +1 -1
  538. package/dist/treeFactory.js +29 -8
  539. package/dist/treeFactory.js.map +1 -1
  540. package/dist/util/breakable.js +3 -3
  541. package/dist/util/breakable.js.map +1 -1
  542. package/dist/util/index.d.ts +2 -1
  543. package/dist/util/index.d.ts.map +1 -1
  544. package/dist/util/index.js +4 -1
  545. package/dist/util/index.js.map +1 -1
  546. package/dist/util/rangeMap.d.ts +24 -12
  547. package/dist/util/rangeMap.d.ts.map +1 -1
  548. package/dist/util/rangeMap.js +46 -6
  549. package/dist/util/rangeMap.js.map +1 -1
  550. package/dist/util/readSnapshotBlob.d.ts +13 -0
  551. package/dist/util/readSnapshotBlob.d.ts.map +1 -0
  552. package/dist/util/readSnapshotBlob.js +18 -0
  553. package/dist/util/readSnapshotBlob.js.map +1 -0
  554. package/dist/util/typeCheckTests.d.ts.map +1 -1
  555. package/dist/util/typeCheckTests.js.map +1 -1
  556. package/lib/alpha.d.ts +7 -2
  557. package/lib/codec/codec.d.ts +14 -1
  558. package/lib/codec/codec.d.ts.map +1 -1
  559. package/lib/codec/codec.js +11 -0
  560. package/lib/codec/codec.js.map +1 -1
  561. package/lib/codec/versioned/codec.d.ts +1 -1
  562. package/lib/codec/versioned/codec.d.ts.map +1 -1
  563. package/lib/codec/versioned/codec.js.map +1 -1
  564. package/lib/codec/versioned/format.d.ts +4 -1
  565. package/lib/codec/versioned/format.d.ts.map +1 -1
  566. package/lib/codec/versioned/format.js +4 -1
  567. package/lib/codec/versioned/format.js.map +1 -1
  568. package/lib/core/change-family/changeFamily.d.ts +4 -1
  569. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  570. package/lib/core/change-family/changeFamily.js.map +1 -1
  571. package/lib/core/change-family/index.d.ts +1 -1
  572. package/lib/core/change-family/index.d.ts.map +1 -1
  573. package/lib/core/change-family/index.js.map +1 -1
  574. package/lib/core/index.d.ts +3 -3
  575. package/lib/core/index.d.ts.map +1 -1
  576. package/lib/core/index.js +2 -2
  577. package/lib/core/index.js.map +1 -1
  578. package/lib/core/rebase/changeRebaser.d.ts +6 -1
  579. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  580. package/lib/core/rebase/changeRebaser.js.map +1 -1
  581. package/lib/core/rebase/index.d.ts +1 -1
  582. package/lib/core/rebase/index.d.ts.map +1 -1
  583. package/lib/core/rebase/index.js +1 -1
  584. package/lib/core/rebase/index.js.map +1 -1
  585. package/lib/core/rebase/types.d.ts +2 -1
  586. package/lib/core/rebase/types.d.ts.map +1 -1
  587. package/lib/core/rebase/types.js +3 -0
  588. package/lib/core/rebase/types.js.map +1 -1
  589. package/lib/core/rebase/utils.d.ts.map +1 -1
  590. package/lib/core/rebase/utils.js +25 -7
  591. package/lib/core/rebase/utils.js.map +1 -1
  592. package/lib/core/tree/detachedFieldIndex.d.ts +40 -13
  593. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  594. package/lib/core/tree/detachedFieldIndex.js +22 -13
  595. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  596. package/lib/core/tree/index.d.ts +4 -3
  597. package/lib/core/tree/index.d.ts.map +1 -1
  598. package/lib/core/tree/index.js +3 -2
  599. package/lib/core/tree/index.js.map +1 -1
  600. package/lib/core/tree/pathTree.d.ts +11 -3
  601. package/lib/core/tree/pathTree.d.ts.map +1 -1
  602. package/lib/core/tree/pathTree.js +12 -1
  603. package/lib/core/tree/pathTree.js.map +1 -1
  604. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  605. package/lib/feature-libraries/chunked-forest/basicChunk.js +8 -1
  606. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  607. package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
  608. package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -1
  609. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  610. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -2
  611. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  612. package/lib/feature-libraries/chunked-forest/codec/codecs.js +2 -2
  613. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  614. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +15 -7
  615. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
  616. package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -1
  617. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +7 -2
  618. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  619. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +90 -42
  620. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  621. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +232 -69
  622. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  623. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -4
  624. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  625. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +34 -29
  626. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  627. package/lib/feature-libraries/default-schema/index.d.ts +2 -1
  628. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  629. package/lib/feature-libraries/default-schema/index.js +2 -1
  630. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  631. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +36 -0
  632. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  633. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +122 -0
  634. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  635. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  636. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  637. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  638. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  639. package/lib/feature-libraries/deltaUtils.d.ts +1 -0
  640. package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
  641. package/lib/feature-libraries/deltaUtils.js +5 -1
  642. package/lib/feature-libraries/deltaUtils.js.map +1 -1
  643. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +30 -8
  644. package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
  645. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +38 -8
  646. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  647. package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
  648. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  649. package/lib/feature-libraries/flex-tree/context.js +6 -0
  650. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  651. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  652. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  653. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  654. package/lib/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  655. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  656. package/lib/feature-libraries/flex-tree/lazyField.js +38 -9
  657. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  658. package/lib/feature-libraries/forest-summary/codec.d.ts +2 -2
  659. package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
  660. package/lib/feature-libraries/forest-summary/codec.js +5 -5
  661. package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
  662. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +9 -13
  663. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  664. package/lib/feature-libraries/forest-summary/forestSummarizer.js +19 -24
  665. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  666. package/lib/feature-libraries/forest-summary/format.d.ts +41 -5
  667. package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
  668. package/lib/feature-libraries/forest-summary/format.js +3 -3
  669. package/lib/feature-libraries/forest-summary/format.js.map +1 -1
  670. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +11 -9
  671. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  672. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +13 -26
  673. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  674. package/lib/feature-libraries/forest-summary/index.d.ts +2 -1
  675. package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
  676. package/lib/feature-libraries/forest-summary/index.js +2 -1
  677. package/lib/feature-libraries/forest-summary/index.js.map +1 -1
  678. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts +47 -0
  679. package/lib/feature-libraries/forest-summary/summaryTypes.d.ts.map +1 -0
  680. package/lib/feature-libraries/forest-summary/summaryTypes.js +53 -0
  681. package/lib/feature-libraries/forest-summary/summaryTypes.js.map +1 -0
  682. package/lib/feature-libraries/index.d.ts +5 -5
  683. package/lib/feature-libraries/index.d.ts.map +1 -1
  684. package/lib/feature-libraries/index.js +4 -4
  685. package/lib/feature-libraries/index.js.map +1 -1
  686. package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
  687. package/lib/feature-libraries/mapTreeCursor.js +2 -1
  688. package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
  689. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  690. package/lib/feature-libraries/mitigatedChangeFamily.js +2 -2
  691. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  692. package/lib/feature-libraries/modular-schema/comparison.d.ts +18 -2
  693. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  694. package/lib/feature-libraries/modular-schema/comparison.js +55 -5
  695. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  696. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +97 -21
  697. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  698. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +3 -5
  699. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  700. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -52
  701. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  702. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  703. package/lib/feature-libraries/modular-schema/fieldKind.d.ts +25 -13
  704. package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
  705. package/lib/feature-libraries/modular-schema/fieldKind.js +0 -21
  706. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  707. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  708. package/lib/feature-libraries/modular-schema/genericFieldKind.js +7 -10
  709. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  710. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +1 -1
  711. package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
  712. package/lib/feature-libraries/modular-schema/index.d.ts +5 -5
  713. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  714. package/lib/feature-libraries/modular-schema/index.js +4 -3
  715. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  716. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +17 -0
  717. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
  718. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +384 -0
  719. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
  720. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +17 -0
  721. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
  722. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +409 -0
  723. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
  724. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +4 -4
  725. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  726. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +10 -286
  727. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  728. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -15
  729. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  730. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1284 -458
  731. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  732. package/lib/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +2 -2
  733. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
  734. package/lib/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +2 -2
  735. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
  736. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +146 -0
  737. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
  738. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +29 -0
  739. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
  740. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +50 -10
  741. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  742. package/lib/feature-libraries/modular-schema/modularChangeTypes.js +20 -2
  743. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  744. package/lib/feature-libraries/optional-field/index.d.ts +2 -2
  745. package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
  746. package/lib/feature-libraries/optional-field/index.js +1 -1
  747. package/lib/feature-libraries/optional-field/index.js.map +1 -1
  748. package/lib/feature-libraries/optional-field/optionalField.d.ts +5 -26
  749. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  750. package/lib/feature-libraries/optional-field/optionalField.js +217 -449
  751. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  752. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +24 -33
  753. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  754. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  755. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  756. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  757. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
  758. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  759. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +27 -8
  760. package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
  761. package/lib/feature-libraries/schema-index/schemaSummarizer.js +38 -12
  762. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  763. package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
  764. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  765. package/lib/feature-libraries/sequence-field/compose.js +82 -258
  766. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  767. package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
  768. package/lib/feature-libraries/sequence-field/formatV2.js +1 -0
  769. package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
  770. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  771. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  772. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  773. package/lib/feature-libraries/sequence-field/index.d.ts +2 -3
  774. package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
  775. package/lib/feature-libraries/sequence-field/index.js +0 -1
  776. package/lib/feature-libraries/sequence-field/index.js.map +1 -1
  777. package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
  778. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  779. package/lib/feature-libraries/sequence-field/invert.js +67 -169
  780. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  781. package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  782. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  783. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  784. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  785. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  786. package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -80
  787. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  788. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
  789. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  790. package/lib/feature-libraries/sequence-field/rebase.js +108 -114
  791. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  792. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  793. package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -33
  794. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  795. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  796. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +0 -2
  797. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  798. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  799. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  800. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +350 -175
  801. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  802. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  803. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -61
  804. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  805. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  806. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  807. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +10 -10
  808. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  809. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  810. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  811. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +14 -109
  812. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  813. package/lib/feature-libraries/sequence-field/types.d.ts +30 -59
  814. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  815. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  816. package/lib/feature-libraries/sequence-field/utils.d.ts +15 -24
  817. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  818. package/lib/feature-libraries/sequence-field/utils.js +107 -292
  819. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  820. package/lib/feature-libraries/treeCompressionUtils.d.ts +2 -12
  821. package/lib/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
  822. package/lib/feature-libraries/treeCompressionUtils.js +3 -13
  823. package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
  824. package/lib/index.d.ts +3 -3
  825. package/lib/index.d.ts.map +1 -1
  826. package/lib/index.js +2 -2
  827. package/lib/index.js.map +1 -1
  828. package/lib/packageVersion.d.ts +1 -1
  829. package/lib/packageVersion.d.ts.map +1 -1
  830. package/lib/packageVersion.js +1 -1
  831. package/lib/packageVersion.js.map +1 -1
  832. package/lib/shared-tree/independentView.d.ts +1 -1
  833. package/lib/shared-tree/independentView.d.ts.map +1 -1
  834. package/lib/shared-tree/independentView.js.map +1 -1
  835. package/lib/shared-tree/index.d.ts +1 -1
  836. package/lib/shared-tree/index.d.ts.map +1 -1
  837. package/lib/shared-tree/index.js.map +1 -1
  838. package/lib/shared-tree/schematizeTree.d.ts +4 -4
  839. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  840. package/lib/shared-tree/schematizeTree.js +3 -2
  841. package/lib/shared-tree/schematizeTree.js.map +1 -1
  842. package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
  843. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  844. package/lib/shared-tree/schematizingTreeView.js +35 -36
  845. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  846. package/lib/shared-tree/sharedTree.d.ts +18 -15
  847. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  848. package/lib/shared-tree/sharedTree.js +15 -4
  849. package/lib/shared-tree/sharedTree.js.map +1 -1
  850. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
  851. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  852. package/lib/shared-tree/sharedTreeChangeCodecs.js +1 -0
  853. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  854. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts +20 -8
  855. package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
  856. package/lib/shared-tree/sharedTreeChangeEnricher.js +25 -11
  857. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  858. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +6 -6
  859. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  860. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
  861. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  862. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  863. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  864. package/lib/shared-tree/sharedTreeEditBuilder.js +11 -5
  865. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  866. package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
  867. package/lib/shared-tree/treeAlpha.js +2 -2
  868. package/lib/shared-tree/treeAlpha.js.map +1 -1
  869. package/lib/shared-tree/treeCheckout.d.ts +14 -12
  870. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  871. package/lib/shared-tree/treeCheckout.js +69 -20
  872. package/lib/shared-tree/treeCheckout.js.map +1 -1
  873. package/lib/shared-tree-core/branch.d.ts +3 -2
  874. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  875. package/lib/shared-tree-core/branch.js +4 -3
  876. package/lib/shared-tree-core/branch.js.map +1 -1
  877. package/lib/shared-tree-core/editManager.d.ts +2 -2
  878. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  879. package/lib/shared-tree-core/editManager.js +9 -9
  880. package/lib/shared-tree-core/editManager.js.map +1 -1
  881. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
  882. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  883. package/lib/shared-tree-core/editManagerCodecs.js +14 -5
  884. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  885. package/{dist/shared-tree-core/editManagerCodecsV5.d.ts → lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts} +3 -3
  886. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -0
  887. package/lib/shared-tree-core/{editManagerCodecsV5.js → editManagerCodecsVSharedBranches.js} +4 -4
  888. package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -0
  889. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +20 -6
  890. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  891. package/lib/shared-tree-core/editManagerFormatCommons.js +22 -7
  892. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  893. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  894. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  895. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  896. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  897. package/lib/shared-tree-core/{editManagerFormatV5.d.ts → editManagerFormatVSharedBranches.d.ts} +3 -3
  898. package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -0
  899. package/lib/shared-tree-core/{editManagerFormatV5.js → editManagerFormatVSharedBranches.js} +2 -2
  900. package/lib/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -0
  901. package/lib/shared-tree-core/editManagerSummarizer.d.ts +29 -9
  902. package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
  903. package/lib/shared-tree-core/editManagerSummarizer.js +39 -11
  904. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  905. package/lib/shared-tree-core/index.d.ts +5 -3
  906. package/lib/shared-tree-core/index.d.ts.map +1 -1
  907. package/lib/shared-tree-core/index.js +4 -2
  908. package/lib/shared-tree-core/index.js.map +1 -1
  909. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  910. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  911. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  912. package/{dist/shared-tree-core/messageCodecV5.d.ts → lib/shared-tree-core/messageCodecVSharedBranches.d.ts} +2 -2
  913. package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -0
  914. package/lib/shared-tree-core/{messageCodecV5.js → messageCodecVSharedBranches.js} +3 -3
  915. package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -0
  916. package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
  917. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  918. package/lib/shared-tree-core/messageCodecs.js +14 -5
  919. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  920. package/lib/shared-tree-core/messageFormat.d.ts +20 -6
  921. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  922. package/lib/shared-tree-core/messageFormat.js +22 -7
  923. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  924. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +3 -2
  925. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  926. package/lib/shared-tree-core/messageFormatV1ToV4.js +8 -1
  927. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  928. package/lib/shared-tree-core/{messageFormatV5.d.ts → messageFormatVSharedBranches.d.ts} +5 -7
  929. package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -0
  930. package/lib/shared-tree-core/{messageFormatV5.js → messageFormatVSharedBranches.js} +3 -2
  931. package/lib/shared-tree-core/messageFormatVSharedBranches.js.map +1 -0
  932. package/lib/shared-tree-core/sharedTreeCore.d.ts +14 -47
  933. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  934. package/lib/shared-tree-core/sharedTreeCore.js +28 -16
  935. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  936. package/lib/shared-tree-core/summaryTypes.d.ts +94 -0
  937. package/lib/shared-tree-core/summaryTypes.d.ts.map +1 -0
  938. package/lib/shared-tree-core/summaryTypes.js +43 -0
  939. package/lib/shared-tree-core/summaryTypes.js.map +1 -0
  940. package/lib/shared-tree-core/versionedSummarizer.d.ts +67 -0
  941. package/lib/shared-tree-core/versionedSummarizer.d.ts.map +1 -0
  942. package/lib/shared-tree-core/versionedSummarizer.js +59 -0
  943. package/lib/shared-tree-core/versionedSummarizer.js.map +1 -0
  944. package/lib/simple-tree/api/configuration.d.ts +3 -26
  945. package/lib/simple-tree/api/configuration.d.ts.map +1 -1
  946. package/lib/simple-tree/api/configuration.js +14 -25
  947. package/lib/simple-tree/api/configuration.js.map +1 -1
  948. package/lib/simple-tree/api/dirtyIndex.d.ts +11 -0
  949. package/lib/simple-tree/api/dirtyIndex.d.ts.map +1 -1
  950. package/lib/simple-tree/api/dirtyIndex.js +7 -0
  951. package/lib/simple-tree/api/dirtyIndex.js.map +1 -1
  952. package/lib/simple-tree/api/discrepancies.d.ts +1 -1
  953. package/lib/simple-tree/api/discrepancies.d.ts.map +1 -1
  954. package/lib/simple-tree/api/discrepancies.js.map +1 -1
  955. package/lib/simple-tree/api/getSimpleSchema.d.ts +3 -3
  956. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  957. package/lib/simple-tree/api/getSimpleSchema.js +9 -3
  958. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  959. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +16 -13
  960. package/lib/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
  961. package/lib/simple-tree/api/incrementalAllowedTypes.js +23 -13
  962. package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
  963. package/lib/simple-tree/api/index.d.ts +4 -5
  964. package/lib/simple-tree/api/index.d.ts.map +1 -1
  965. package/lib/simple-tree/api/index.js +3 -4
  966. package/lib/simple-tree/api/index.js.map +1 -1
  967. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +1 -1
  968. package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
  969. package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
  970. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +5 -5
  971. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  972. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  973. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  974. package/lib/simple-tree/api/schemaFactoryRecursive.js +0 -1
  975. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  976. package/lib/simple-tree/api/schemaFromSimple.d.ts +6 -1
  977. package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
  978. package/lib/simple-tree/api/schemaFromSimple.js +5 -0
  979. package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
  980. package/lib/simple-tree/api/schemaStatics.d.ts +12 -12
  981. package/lib/simple-tree/api/simpleSchemaCodec.d.ts +15 -3
  982. package/lib/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -1
  983. package/lib/simple-tree/api/simpleSchemaCodec.js +15 -3
  984. package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
  985. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
  986. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  987. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  988. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +8 -1
  989. package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
  990. package/lib/simple-tree/api/snapshotCompatibilityChecker.js +15 -10
  991. package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
  992. package/lib/simple-tree/api/tree.d.ts +1 -1
  993. package/lib/simple-tree/api/tree.js.map +1 -1
  994. package/lib/simple-tree/api/typesUnsafe.d.ts +3 -3
  995. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  996. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  997. package/lib/simple-tree/core/allowedTypes.d.ts +2 -2
  998. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  999. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  1000. package/lib/simple-tree/core/index.d.ts +1 -1
  1001. package/lib/simple-tree/core/index.d.ts.map +1 -1
  1002. package/lib/simple-tree/core/index.js +1 -1
  1003. package/lib/simple-tree/core/index.js.map +1 -1
  1004. package/lib/simple-tree/core/toStored.d.ts +17 -15
  1005. package/lib/simple-tree/core/toStored.d.ts.map +1 -1
  1006. package/lib/simple-tree/core/toStored.js +4 -37
  1007. package/lib/simple-tree/core/toStored.js.map +1 -1
  1008. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  1009. package/lib/simple-tree/core/treeNodeKernel.js +1 -0
  1010. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  1011. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
  1012. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  1013. package/lib/simple-tree/core/unhydratedFlexTree.js +58 -8
  1014. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  1015. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
  1016. package/lib/simple-tree/core/walkSchema.js +5 -1
  1017. package/lib/simple-tree/core/walkSchema.js.map +1 -1
  1018. package/lib/simple-tree/createContext.d.ts.map +1 -1
  1019. package/lib/simple-tree/createContext.js +20 -5
  1020. package/lib/simple-tree/createContext.js.map +1 -1
  1021. package/lib/simple-tree/fieldSchema.d.ts +7 -7
  1022. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  1023. package/lib/simple-tree/fieldSchema.js.map +1 -1
  1024. package/lib/simple-tree/index.d.ts +8 -7
  1025. package/lib/simple-tree/index.d.ts.map +1 -1
  1026. package/lib/simple-tree/index.js +6 -5
  1027. package/lib/simple-tree/index.js.map +1 -1
  1028. package/lib/simple-tree/leafNodeSchema.d.ts +5 -5
  1029. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  1030. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  1031. package/lib/simple-tree/node-kinds/array/arrayNode.js +7 -4
  1032. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  1033. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
  1034. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
  1035. package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
  1036. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  1037. package/lib/simple-tree/node-kinds/common.js +2 -2
  1038. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  1039. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  1040. package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
  1041. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  1042. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
  1043. package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
  1044. package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
  1045. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  1046. package/lib/simple-tree/node-kinds/object/objectNode.js +20 -19
  1047. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  1048. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +2 -2
  1049. package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
  1050. package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
  1051. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  1052. package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
  1053. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  1054. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +3 -3
  1055. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  1056. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  1057. package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
  1058. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  1059. package/lib/simple-tree/prepareForInsertion.js +183 -124
  1060. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  1061. package/lib/simple-tree/simpleSchema.d.ts +55 -23
  1062. package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
  1063. package/lib/simple-tree/simpleSchema.js +16 -1
  1064. package/lib/simple-tree/simpleSchema.js.map +1 -1
  1065. package/lib/simple-tree/simpleSchemaFormatV1.d.ts +1 -1
  1066. package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -1
  1067. package/lib/simple-tree/simpleSchemaFormatV1.js +8 -1
  1068. package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -1
  1069. package/lib/simple-tree/toStoredSchema.d.ts +58 -11
  1070. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  1071. package/lib/simple-tree/toStoredSchema.js +204 -31
  1072. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  1073. package/lib/simple-tree/treeSchema.d.ts +23 -0
  1074. package/lib/simple-tree/treeSchema.d.ts.map +1 -0
  1075. package/lib/simple-tree/treeSchema.js +21 -0
  1076. package/lib/simple-tree/treeSchema.js.map +1 -0
  1077. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
  1078. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  1079. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +26 -9
  1080. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  1081. package/lib/tableSchema.d.ts +117 -63
  1082. package/lib/tableSchema.d.ts.map +1 -1
  1083. package/lib/tableSchema.js +160 -59
  1084. package/lib/tableSchema.js.map +1 -1
  1085. package/lib/treeFactory.d.ts +5 -0
  1086. package/lib/treeFactory.d.ts.map +1 -1
  1087. package/lib/treeFactory.js +28 -8
  1088. package/lib/treeFactory.js.map +1 -1
  1089. package/lib/util/breakable.js +3 -3
  1090. package/lib/util/breakable.js.map +1 -1
  1091. package/lib/util/index.d.ts +2 -1
  1092. package/lib/util/index.d.ts.map +1 -1
  1093. package/lib/util/index.js +2 -1
  1094. package/lib/util/index.js.map +1 -1
  1095. package/lib/util/rangeMap.d.ts +24 -12
  1096. package/lib/util/rangeMap.d.ts.map +1 -1
  1097. package/lib/util/rangeMap.js +44 -5
  1098. package/lib/util/rangeMap.js.map +1 -1
  1099. package/lib/util/readSnapshotBlob.d.ts +13 -0
  1100. package/lib/util/readSnapshotBlob.d.ts.map +1 -0
  1101. package/lib/util/readSnapshotBlob.js +14 -0
  1102. package/lib/util/readSnapshotBlob.js.map +1 -0
  1103. package/lib/util/typeCheckTests.d.ts.map +1 -1
  1104. package/lib/util/typeCheckTests.js.map +1 -1
  1105. package/package.json +22 -22
  1106. package/src/codec/codec.ts +15 -1
  1107. package/src/codec/versioned/codec.ts +1 -1
  1108. package/src/codec/versioned/format.ts +4 -1
  1109. package/src/core/change-family/changeFamily.ts +5 -0
  1110. package/src/core/change-family/index.ts +1 -0
  1111. package/src/core/index.ts +7 -2
  1112. package/src/core/rebase/changeRebaser.ts +6 -1
  1113. package/src/core/rebase/index.ts +1 -0
  1114. package/src/core/rebase/types.ts +8 -1
  1115. package/src/core/rebase/utils.ts +31 -7
  1116. package/src/core/tree/detachedFieldIndex.ts +71 -14
  1117. package/src/core/tree/index.ts +9 -3
  1118. package/src/core/tree/pathTree.ts +16 -4
  1119. package/src/feature-libraries/chunked-forest/basicChunk.ts +7 -1
  1120. package/src/feature-libraries/chunked-forest/chunkTree.ts +6 -1
  1121. package/src/feature-libraries/chunked-forest/codec/codecs.ts +3 -7
  1122. package/src/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.ts +18 -11
  1123. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +9 -9
  1124. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +393 -127
  1125. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +35 -38
  1126. package/src/feature-libraries/default-schema/index.ts +16 -5
  1127. package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +180 -0
  1128. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
  1129. package/src/feature-libraries/deltaUtils.ts +6 -1
  1130. package/src/feature-libraries/detachedFieldIndexSummarizer.ts +62 -15
  1131. package/src/feature-libraries/flex-tree/context.ts +17 -0
  1132. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
  1133. package/src/feature-libraries/flex-tree/lazyField.ts +66 -24
  1134. package/src/feature-libraries/forest-summary/codec.ts +8 -8
  1135. package/src/feature-libraries/forest-summary/forestSummarizer.ts +47 -39
  1136. package/src/feature-libraries/forest-summary/format.ts +4 -4
  1137. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +23 -39
  1138. package/src/feature-libraries/forest-summary/index.ts +2 -1
  1139. package/src/feature-libraries/forest-summary/summaryTypes.ts +61 -0
  1140. package/src/feature-libraries/index.ts +23 -14
  1141. package/src/feature-libraries/mapTreeCursor.ts +2 -1
  1142. package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
  1143. package/src/feature-libraries/modular-schema/comparison.ts +63 -5
  1144. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +142 -44
  1145. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +36 -57
  1146. package/src/feature-libraries/modular-schema/fieldKind.ts +24 -40
  1147. package/src/feature-libraries/modular-schema/genericFieldKind.ts +10 -19
  1148. package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +1 -1
  1149. package/src/feature-libraries/modular-schema/index.ts +21 -15
  1150. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +732 -0
  1151. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +790 -0
  1152. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +32 -505
  1153. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2542 -742
  1154. package/src/feature-libraries/modular-schema/{modularChangeFormat.ts → modularChangeFormatV1.ts} +2 -1
  1155. package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +62 -0
  1156. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +98 -10
  1157. package/src/feature-libraries/optional-field/index.ts +1 -3
  1158. package/src/feature-libraries/optional-field/optionalField.ts +317 -574
  1159. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +24 -38
  1160. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
  1161. package/src/feature-libraries/schema-index/schemaSummarizer.ts +59 -18
  1162. package/src/feature-libraries/sequence-field/compose.ts +134 -519
  1163. package/src/feature-libraries/sequence-field/formatV2.ts +1 -0
  1164. package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
  1165. package/src/feature-libraries/sequence-field/index.ts +0 -9
  1166. package/src/feature-libraries/sequence-field/invert.ts +103 -228
  1167. package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
  1168. package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -191
  1169. package/src/feature-libraries/sequence-field/rebase.ts +168 -203
  1170. package/src/feature-libraries/sequence-field/replaceRevisions.ts +31 -52
  1171. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +0 -2
  1172. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +643 -220
  1173. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -68
  1174. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +25 -27
  1175. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +19 -129
  1176. package/src/feature-libraries/sequence-field/types.ts +34 -64
  1177. package/src/feature-libraries/sequence-field/utils.ts +133 -346
  1178. package/src/feature-libraries/treeCompressionUtils.ts +1 -15
  1179. package/src/index.ts +7 -2
  1180. package/src/packageVersion.ts +1 -1
  1181. package/src/shared-tree/independentView.ts +1 -1
  1182. package/src/shared-tree/index.ts +3 -2
  1183. package/src/shared-tree/schematizeTree.ts +21 -8
  1184. package/src/shared-tree/schematizingTreeView.ts +50 -68
  1185. package/src/shared-tree/sharedTree.ts +51 -30
  1186. package/src/shared-tree/sharedTreeChangeCodecs.ts +5 -1
  1187. package/src/shared-tree/sharedTreeChangeEnricher.ts +31 -11
  1188. package/src/shared-tree/sharedTreeChangeFamily.ts +9 -6
  1189. package/src/shared-tree/sharedTreeEditBuilder.ts +46 -12
  1190. package/src/shared-tree/treeAlpha.ts +2 -3
  1191. package/src/shared-tree/treeCheckout.ts +106 -33
  1192. package/src/shared-tree-core/branch.ts +8 -2
  1193. package/src/shared-tree-core/editManager.ts +16 -2
  1194. package/src/shared-tree-core/editManagerCodecs.ts +17 -5
  1195. package/src/shared-tree-core/{editManagerCodecsV5.ts → editManagerCodecsVSharedBranches.ts} +3 -3
  1196. package/src/shared-tree-core/editManagerFormatCommons.ts +22 -7
  1197. package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
  1198. package/src/shared-tree-core/{editManagerFormatV5.ts → editManagerFormatVSharedBranches.ts} +2 -2
  1199. package/src/shared-tree-core/editManagerSummarizer.ts +58 -16
  1200. package/src/shared-tree-core/index.ts +11 -3
  1201. package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
  1202. package/src/shared-tree-core/{messageCodecV5.ts → messageCodecVSharedBranches.ts} +3 -3
  1203. package/src/shared-tree-core/messageCodecs.ts +17 -5
  1204. package/src/shared-tree-core/messageFormat.ts +22 -7
  1205. package/src/shared-tree-core/messageFormatV1ToV4.ts +16 -2
  1206. package/src/shared-tree-core/{messageFormatV5.ts → messageFormatVSharedBranches.ts} +4 -6
  1207. package/src/shared-tree-core/sharedTreeCore.ts +67 -76
  1208. package/src/shared-tree-core/summaryTypes.ts +122 -0
  1209. package/src/shared-tree-core/versionedSummarizer.ts +107 -0
  1210. package/src/simple-tree/api/configuration.ts +21 -68
  1211. package/src/simple-tree/api/dirtyIndex.ts +11 -0
  1212. package/src/simple-tree/api/discrepancies.ts +1 -1
  1213. package/src/simple-tree/api/getSimpleSchema.ts +13 -6
  1214. package/src/simple-tree/api/incrementalAllowedTypes.ts +34 -20
  1215. package/src/simple-tree/api/index.ts +4 -5
  1216. package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
  1217. package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -2
  1218. package/src/simple-tree/api/schemaFactoryRecursive.ts +0 -2
  1219. package/src/simple-tree/api/schemaFromSimple.ts +11 -5
  1220. package/src/simple-tree/api/simpleSchemaCodec.ts +17 -3
  1221. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +1 -1
  1222. package/src/simple-tree/api/snapshotCompatibilityChecker.ts +18 -10
  1223. package/src/simple-tree/api/tree.ts +1 -1
  1224. package/src/simple-tree/api/typesUnsafe.ts +7 -3
  1225. package/src/simple-tree/core/allowedTypes.ts +3 -3
  1226. package/src/simple-tree/core/index.ts +2 -2
  1227. package/src/simple-tree/core/toStored.ts +22 -55
  1228. package/src/simple-tree/core/treeNodeKernel.ts +1 -0
  1229. package/src/simple-tree/core/unhydratedFlexTree.ts +87 -36
  1230. package/src/simple-tree/core/walkSchema.ts +6 -0
  1231. package/src/simple-tree/createContext.ts +26 -11
  1232. package/src/simple-tree/fieldSchema.ts +16 -7
  1233. package/src/simple-tree/index.ts +13 -12
  1234. package/src/simple-tree/node-kinds/array/arrayNode.ts +14 -7
  1235. package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +3 -3
  1236. package/src/simple-tree/node-kinds/common.ts +2 -5
  1237. package/src/simple-tree/node-kinds/map/mapNode.ts +9 -6
  1238. package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +3 -3
  1239. package/src/simple-tree/node-kinds/object/objectNode.ts +28 -27
  1240. package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +6 -2
  1241. package/src/simple-tree/node-kinds/record/recordNode.ts +15 -11
  1242. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +3 -3
  1243. package/src/simple-tree/prepareForInsertion.ts +343 -200
  1244. package/src/simple-tree/simpleSchema.ts +79 -32
  1245. package/src/simple-tree/simpleSchemaFormatV1.ts +9 -1
  1246. package/src/simple-tree/toStoredSchema.ts +319 -61
  1247. package/src/simple-tree/treeSchema.ts +54 -0
  1248. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +42 -14
  1249. package/src/tableSchema.ts +485 -166
  1250. package/src/treeFactory.ts +32 -9
  1251. package/src/util/breakable.ts +4 -4
  1252. package/src/util/index.ts +5 -0
  1253. package/src/util/rangeMap.ts +72 -18
  1254. package/src/util/readSnapshotBlob.ts +23 -0
  1255. package/src/util/typeCheckTests.ts +0 -1
  1256. package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
  1257. package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
  1258. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  1259. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  1260. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
  1261. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  1262. package/dist/shared-tree-core/editManagerCodecsV5.d.ts.map +0 -1
  1263. package/dist/shared-tree-core/editManagerCodecsV5.js.map +0 -1
  1264. package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +0 -1
  1265. package/dist/shared-tree-core/editManagerFormatV5.js.map +0 -1
  1266. package/dist/shared-tree-core/messageCodecV5.d.ts.map +0 -1
  1267. package/dist/shared-tree-core/messageCodecV5.js.map +0 -1
  1268. package/dist/shared-tree-core/messageFormatV5.d.ts.map +0 -1
  1269. package/dist/shared-tree-core/messageFormatV5.js.map +0 -1
  1270. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +0 -40
  1271. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +0 -1
  1272. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +0 -177
  1273. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +0 -1
  1274. package/docs/main/sequence-field/move-composition.md +0 -46
  1275. package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
  1276. package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
  1277. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  1278. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  1279. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
  1280. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  1281. package/lib/shared-tree-core/editManagerCodecsV5.d.ts.map +0 -1
  1282. package/lib/shared-tree-core/editManagerCodecsV5.js.map +0 -1
  1283. package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +0 -1
  1284. package/lib/shared-tree-core/editManagerFormatV5.js.map +0 -1
  1285. package/lib/shared-tree-core/messageCodecV5.d.ts.map +0 -1
  1286. package/lib/shared-tree-core/messageCodecV5.js.map +0 -1
  1287. package/lib/shared-tree-core/messageFormatV5.d.ts.map +0 -1
  1288. package/lib/shared-tree-core/messageFormatV5.js.map +0 -1
  1289. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +0 -40
  1290. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +0 -1
  1291. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +0 -171
  1292. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +0 -1
  1293. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
  1294. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +0 -209
@@ -13,7 +13,7 @@ import {
13
13
  type InsertableObjectFromSchemaRecord,
14
14
  type InsertableTreeNodeFromImplicitAllowedTypes,
15
15
  type NodeKind,
16
- type SchemaFactoryBeta,
16
+ SchemaFactoryBeta,
17
17
  type ScopedSchemaName,
18
18
  TreeArrayNode,
19
19
  type TreeNode,
@@ -25,11 +25,14 @@ import {
25
25
  type InsertableTreeFieldFromImplicitField,
26
26
  type InternalTreeNode,
27
27
  SchemaFactory,
28
+ scoped,
28
29
  type ImplicitFieldSchema,
29
30
  withBufferedTreeEvents,
30
31
  type TreeRecordNode,
32
+ objectSchema,
31
33
  } from "./simple-tree/index.js";
32
34
  import { validateIndex, validateIndexRange } from "./util/index.js";
35
+ import { EmptyKey } from "./core/index.js";
33
36
 
34
37
  // Future improvement TODOs:
35
38
  // - Omit `cells` property from Row insertion type.
@@ -40,9 +43,10 @@ import { validateIndex, validateIndexRange } from "./util/index.js";
40
43
  // - Add constraint APIs to make it possible to avoid situations that could yield "orphaned" cells.
41
44
 
42
45
  /**
43
- * The sub-scope applied to user-provided {@link SchemaFactory}s by table schema factories.
46
+ * Scope for table schema built-in types.
47
+ * @remarks User-provided factory scoping will be applied as `com.fluidframework.table<user-scope>`.
44
48
  */
45
- const tableSchemaFactorySubScope = "table";
49
+ const baseSchemaScope = "com.fluidframework.table";
46
50
 
47
51
  /**
48
52
  * A private symbol put on table schema to help identify them.
@@ -51,16 +55,16 @@ const tableSchemaSymbol: unique symbol = Symbol("tableNode");
51
55
 
52
56
  /**
53
57
  * A row in a table.
54
- * @typeParam TCell - The type of the cells in the {@link TableSchema.Table}.
55
- * @typeParam TProps - Additional properties to associate with the row.
58
+ * @typeParam TCellSchema - The type of the cells in the {@link TableSchema.Table}.
59
+ * @typeParam TPropsSchema - Additional properties to associate with the row.
56
60
  * @privateRemarks Private counterpart to the {@link TableSchema.Row}.
57
61
  * Exposes internal properties needed for table operations (publicly exposed via {@link TableSchema.Table}).
58
62
  * @sealed
59
63
  */
60
64
  export interface RowPrivate<
61
- TCell extends ImplicitAllowedTypes,
62
- TProps extends ImplicitFieldSchema = ImplicitFieldSchema,
63
- > extends TableSchema.Row<TCell, TProps> {
65
+ TCellSchema extends ImplicitAllowedTypes,
66
+ TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema,
67
+ > extends TableSchema.Row<TCellSchema, TPropsSchema> {
64
68
  /**
65
69
  * The row's cells.
66
70
  * @remarks This is a user-defined schema that can be used to store additional information about the row.
@@ -68,7 +72,7 @@ export interface RowPrivate<
68
72
  * Note: these docs are duplicated on the inline type definitions in {@link System_TableSchema.createRowSchema}.
69
73
  * If you update the docs here, please also update the inline type definitions.
70
74
  */
71
- readonly cells: TreeRecordNode<TCell>;
75
+ readonly cells: TreeRecordNode<TCellSchema>;
72
76
  }
73
77
 
74
78
  /**
@@ -82,6 +86,36 @@ export interface RowPrivate<
82
86
  * @system @alpha
83
87
  */
84
88
  export namespace System_TableSchema {
89
+ /**
90
+ * A list of items in a table whose elements may be rearranged, but not inserted or removed.
91
+ *
92
+ * @privateRemarks Used by {@link TableSchema.Table} for its `rows` and `columns` properties to allow basic rearrangement operations on the underlying sequences without permitting mutation operations that might violate table invariants.
93
+ *
94
+ * Note: this can't reasonably be implemented via `Pick<ArrayNode<...>>` because we only want to include the
95
+ * subset of its method overloads which do not support moving items between lists.
96
+ *
97
+ * @alpha @system
98
+ */
99
+ export type RearrangeableList<TItemSchema extends ImplicitAllowedTypes> = TreeNode &
100
+ readonly TreeNodeFromImplicitAllowedTypes<TItemSchema>[] & {
101
+ // #region Capture the subset of item rearrangement methods from `TreeArrayNode` that do not allow moving between lists.
102
+
103
+ /** {@inheritDoc (TreeArrayNode:interface).(moveToEnd:1)} */
104
+ moveToEnd(sourceIndex: number): void;
105
+ /** {@inheritDoc (TreeArrayNode:interface).(moveToStart:1)} */
106
+ moveToStart(sourceIndex: number): void;
107
+ /** {@inheritDoc (TreeArrayNode:interface).(moveToIndex:1)} */
108
+ moveToIndex(sourceIndex: number, destinationIndex: number): void;
109
+ /** {@inheritDoc (TreeArrayNode:interface).(moveRangeToEnd:1)} */
110
+ moveRangeToEnd(startIndex: number, endIndex: number): void;
111
+ /** {@inheritDoc (TreeArrayNode:interface).(moveRangeToStart:1)} */
112
+ moveRangeToStart(startIndex: number, endIndex: number): void;
113
+ /** {@inheritDoc (TreeArrayNode:interface).(moveRangeToIndex:1)} */
114
+ moveRangeToIndex(startIndex: number, endIndex: number, destinationIndex: number): void;
115
+
116
+ // #endregion
117
+ };
118
+
85
119
  /**
86
120
  * Default type used for column and row "props" fields.
87
121
  * @privateRemarks
@@ -102,6 +136,7 @@ export namespace System_TableSchema {
102
136
  /**
103
137
  * Schema factory with which the Column schema will be associated.
104
138
  * @remarks Can be used to associate the resulting schema with an existing {@link SchemaFactory.scope|scope}.
139
+ * The resulting schema will have an identifier of the form: `com.fluidframework.table<${TUserScope}>.<Column|Row|Table>`.
105
140
  */
106
141
  readonly schemaFactory: TSchemaFactory;
107
142
  }
@@ -122,14 +157,15 @@ export namespace System_TableSchema {
122
157
  // #region Column
123
158
 
124
159
  /**
125
- * Base options for creating table cow schema.
160
+ * Base options for creating table column schema.
126
161
  * @remarks Includes parameters common to all column factory overloads.
127
162
  * @system @alpha
128
163
  */
129
164
  export type CreateColumnOptionsBase<
130
- TSchemaFactory extends SchemaFactoryBeta = SchemaFactoryBeta,
131
- TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes,
132
- > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
165
+ TUserScope extends string = string,
166
+ TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>,
167
+ TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes,
168
+ > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
133
169
 
134
170
  /**
135
171
  * Factory for creating column schema.
@@ -137,12 +173,12 @@ export namespace System_TableSchema {
137
173
  */
138
174
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -- Return type is too complex to be reasonable to specify
139
175
  export function createColumnSchema<
140
- const TInputScope extends string | undefined,
176
+ const TUserScope extends string,
141
177
  const TCellSchema extends ImplicitAllowedTypes,
142
178
  const TPropsSchema extends ImplicitFieldSchema,
143
- >(inputSchemaFactory: SchemaFactoryBeta<TInputScope>, propsSchema: TPropsSchema) {
144
- const schemaFactory = inputSchemaFactory.scopedFactory(tableSchemaFactorySubScope);
145
- type Scope = ScopedSchemaName<TInputScope, typeof tableSchemaFactorySubScope>;
179
+ >(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, propsSchema: TPropsSchema) {
180
+ const schemaFactory = createTableScopedFactory(inputSchemaFactory);
181
+ type Scope = typeof schemaFactory.scope;
146
182
 
147
183
  // Note: `columnFields` is broken into two parts to work around a TypeScript bug
148
184
  // that results in broken `.d.ts` output.
@@ -252,10 +288,10 @@ export namespace System_TableSchema {
252
288
  * @sealed @system @alpha
253
289
  */
254
290
  export type ColumnSchemaBase<
255
- TScope extends string | undefined = string | undefined,
291
+ TUserScope extends string = string,
256
292
  TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes,
257
293
  TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema,
258
- > = ReturnType<typeof createColumnSchema<TScope, TCellSchema, TPropsSchema>>;
294
+ > = ReturnType<typeof createColumnSchema<TUserScope, TCellSchema, TPropsSchema>>;
259
295
 
260
296
  // #endregion
261
297
 
@@ -267,9 +303,10 @@ export namespace System_TableSchema {
267
303
  * @system @alpha
268
304
  */
269
305
  export type CreateRowOptionsBase<
270
- TSchemaFactory extends SchemaFactoryBeta = SchemaFactoryBeta,
271
- TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes,
272
- > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
306
+ TUserScope extends string = string,
307
+ TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>,
308
+ TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes,
309
+ > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
273
310
 
274
311
  /**
275
312
  * Factory for creating row schema.
@@ -277,16 +314,16 @@ export namespace System_TableSchema {
277
314
  */
278
315
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -- Return type is too complex to be reasonable to specify
279
316
  export function createRowSchema<
280
- const TInputScope extends string | undefined,
317
+ const TUserScope extends string,
281
318
  const TCellSchema extends ImplicitAllowedTypes,
282
319
  const TPropsSchema extends ImplicitFieldSchema,
283
320
  >(
284
- inputSchemaFactory: SchemaFactoryBeta<TInputScope>,
321
+ inputSchemaFactory: SchemaFactoryBeta<TUserScope>,
285
322
  cellSchema: TCellSchema,
286
323
  propsSchema: TPropsSchema,
287
324
  ) {
288
- const schemaFactory = inputSchemaFactory.scopedFactory(tableSchemaFactorySubScope);
289
- type Scope = ScopedSchemaName<TInputScope, typeof tableSchemaFactorySubScope>;
325
+ const schemaFactory = createTableScopedFactory(inputSchemaFactory);
326
+ type Scope = typeof schemaFactory.scope;
290
327
 
291
328
  // Note: `rowFields` is broken into two parts to work around a TypeScript bug
292
329
  // that results in broken `.d.ts` output.
@@ -404,10 +441,10 @@ export namespace System_TableSchema {
404
441
  * @sealed @system @alpha
405
442
  */
406
443
  export type RowSchemaBase<
407
- TScope extends string | undefined = string | undefined,
444
+ TUserScope extends string = string,
408
445
  TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes,
409
446
  TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema,
410
- > = ReturnType<typeof createRowSchema<TScope, TCellSchema, TPropsSchema>>;
447
+ > = ReturnType<typeof createRowSchema<TUserScope, TCellSchema, TPropsSchema>>;
411
448
 
412
449
  // #endregion
413
450
 
@@ -419,9 +456,10 @@ export namespace System_TableSchema {
419
456
  * @system @alpha
420
457
  */
421
458
  export type TableFactoryOptionsBase<
422
- TSchemaFactory extends SchemaFactoryBeta = SchemaFactoryBeta,
423
- TCell extends ImplicitAllowedTypes = ImplicitAllowedTypes,
424
- > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCell>;
459
+ TUserScope extends string = string,
460
+ TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>,
461
+ TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes,
462
+ > = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
425
463
 
426
464
  /**
427
465
  * Factory for creating table schema.
@@ -429,50 +467,137 @@ export namespace System_TableSchema {
429
467
  */
430
468
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -- Return type is too complex to be reasonable to specify
431
469
  export function createTableSchema<
432
- const TInputScope extends string | undefined,
470
+ const TUserScope extends string,
433
471
  const TCellSchema extends ImplicitAllowedTypes,
434
- const TColumnSchema extends ColumnSchemaBase<TInputScope, TCellSchema>,
435
- const TRowSchema extends RowSchemaBase<TInputScope, TCellSchema>,
472
+ const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>,
473
+ const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>,
436
474
  >(
437
- inputSchemaFactory: SchemaFactoryBeta<TInputScope>,
475
+ inputSchemaFactory: SchemaFactoryBeta<TUserScope>,
438
476
  _cellSchema: TCellSchema,
439
477
  columnSchema: TColumnSchema,
440
478
  rowSchema: TRowSchema,
441
479
  ) {
442
- const schemaFactory = inputSchemaFactory.scopedFactory(tableSchemaFactorySubScope);
443
- type Scope = ScopedSchemaName<TInputScope, typeof tableSchemaFactorySubScope>;
480
+ const schemaFactory = createTableScopedFactory(inputSchemaFactory);
481
+ type Scope = typeof schemaFactory.scope;
444
482
 
445
483
  type CellValueType = TreeNodeFromImplicitAllowedTypes<TCellSchema>;
446
484
  type ColumnValueType = TreeNodeFromImplicitAllowedTypes<TColumnSchema>;
485
+ type ColumnInsertableType = InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>;
447
486
  type RowValueType = TreeNodeFromImplicitAllowedTypes<TRowSchema>;
487
+ type RowInsertableType = InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>;
448
488
 
449
489
  // Internal version of RowValueType that exposes the `cells` property for use within Table methods.
450
490
  type RowValueInternalType = RowValueType & RowPrivate<TCellSchema>;
451
491
 
492
+ /**
493
+ * {@link Table} inner fields.
494
+ * @remarks Extracted for re-use as construction parameters.
495
+ * @see {@link Table.create}.
496
+ */
497
+ const tableInnerFields = {
498
+ rows: schemaFactory.array("Table.rows", rowSchema),
499
+ columns: schemaFactory.array("Table.columns", columnSchema),
500
+ } as const satisfies Record<string, ImplicitFieldSchema>;
501
+
452
502
  /**
453
503
  * {@link Table} fields.
454
504
  * @remarks Extracted for re-use in returned type signature defined later in this function.
455
505
  * The implicit typing is intentional.
456
506
  */
457
507
  const tableFields = {
458
- rows: schemaFactory.array("Table.rows", rowSchema),
459
- columns: schemaFactory.array("Table.columns", columnSchema),
508
+ table: schemaFactory.required(schemaFactory.object("Table", tableInnerFields), {
509
+ // Use an empty key in the stored schema format to help prevent schema-unaware edits from being
510
+ // made to the table, which may violate intended invariants.
511
+ key: EmptyKey,
512
+ }),
460
513
  } as const satisfies Record<string, ImplicitFieldSchema>;
461
514
 
515
+ type TableValueType = TreeNode &
516
+ TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> &
517
+ WithType<ScopedSchemaName<Scope, "TableRoot">>;
518
+ // Prevent users from calling the table node constructor directly.
519
+ // They should use the static `create` factory method instead.
520
+ type TableInsertableType = never;
521
+ type TableConstructorType = new (data?: InternalTreeNode | undefined) => TableValueType;
522
+
462
523
  /**
463
524
  * The Table schema
464
525
  */
465
526
  class Table
466
- extends schemaFactory.object("Table", tableFields, {
467
- // Will make it easier to evolve this schema in the future.
468
- allowUnknownOptionalFields: true,
469
- })
470
- implements TableSchema.Table<TInputScope, TCellSchema, TColumnSchema, TRowSchema>
527
+ // Calling the objectSchema factory directly rather than using the schemaFactory so we can specify
528
+ // `implicitlyConstructable: false`, which the SchemaFactory APIs do not yet support.
529
+ // TODO: when support for configuring `implicitlyConstructable` is added to SchemaFactory, switch to
530
+ // using that instead.
531
+ extends objectSchema(
532
+ /* identifier: */ scoped(schemaFactory as SchemaFactory<Scope>, "TableRoot"),
533
+ /* info: */ tableFields,
534
+ /* implicitlyConstructable: */ false,
535
+ /* nodeOptions: */ {
536
+ // Will make it easier to evolve this schema in the future.
537
+ allowUnknownOptionalFields: true,
538
+ },
539
+ )
540
+ implements TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema>
471
541
  {
472
- public static empty<TThis extends TableConstructorType>(
542
+ public constructor(node?: InternalTreeNode | undefined) {
543
+ super(node ?? { table: { columns: [], rows: [] } });
544
+ }
545
+
546
+ public static create<TThis extends TableConstructorType>(
473
547
  this: TThis,
548
+ initialContents?:
549
+ | TableSchema.TableFactoryMethodParameters<
550
+ TUserScope,
551
+ TCellSchema,
552
+ TColumnSchema,
553
+ TRowSchema
554
+ >
555
+ | undefined,
474
556
  ): InstanceType<TThis> {
475
- return new this({ columns: [], rows: [] }) as InstanceType<TThis>;
557
+ // #region Input validation
558
+
559
+ const columns =
560
+ (initialContents?.columns as Iterable<ColumnInsertableType> | undefined) ?? [];
561
+
562
+ const columnIds = new Set<string>();
563
+ for (const column of columns) {
564
+ columnIds.add((column as ColumnValueType).id);
565
+ }
566
+
567
+ const rows = (initialContents?.rows as Iterable<RowInsertableType> | undefined) ?? [];
568
+
569
+ Table._validateNewColumns(
570
+ columns,
571
+ // New table, so no existing columns to validate against
572
+ new Set(),
573
+ );
574
+
575
+ Table._validateNewRows(
576
+ rows,
577
+ // New table, so no existing rows to validate against
578
+ new Set(),
579
+ // No existing columns to validate cells against, but we do need to validate the new rows against the new columns
580
+ columnIds,
581
+ );
582
+
583
+ // #endregion
584
+ return new this(
585
+ initialContents === undefined
586
+ ? undefined
587
+ : ({
588
+ table: initialContents,
589
+ // We have typed our constructor to prevent users from calling it directly with insertable contents.
590
+ // But the base constructor still allows it. Cast to work around this.
591
+ } as unknown as InternalTreeNode),
592
+ ) as InstanceType<TThis>;
593
+ }
594
+
595
+ public get columns(): RearrangeableList<TColumnSchema> {
596
+ return this.table.columns as RearrangeableList<TColumnSchema>;
597
+ }
598
+
599
+ public get rows(): RearrangeableList<TRowSchema> {
600
+ return this.table.rows as RearrangeableList<TRowSchema>;
476
601
  }
477
602
 
478
603
  public getColumn(indexOrId: number | string): ColumnValueType | undefined {
@@ -504,17 +629,26 @@ export namespace System_TableSchema {
504
629
  columns,
505
630
  index,
506
631
  }: TableSchema.InsertColumnsParameters<TColumnSchema>): ColumnValueType[] {
632
+ // #region Input validation
633
+
634
+ // Ensure specified index is valid
635
+ if (index !== undefined) {
636
+ validateIndex(index, this.table.columns, "Table.insertColumns", true);
637
+ }
638
+
639
+ // Ensure the new columns being inserted are valid
640
+ this.#validateNewColumns(columns);
641
+
642
+ // #endregion
643
+
507
644
  // TypeScript is unable to narrow the column type correctly here, hence the casts below.
508
645
  // See: https://github.com/microsoft/TypeScript/issues/52144
509
646
  if (index === undefined) {
510
647
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
511
- this.columns.insertAtEnd(TreeArrayNode.spread(columns) as any);
648
+ this.table.columns.insertAtEnd(TreeArrayNode.spread(columns) as any);
512
649
  } else {
513
- // Ensure specified index is valid
514
- validateIndex(index, this.columns, "Table.insertColumns", true);
515
-
516
650
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
517
- this.columns.insertAt(index, TreeArrayNode.spread(columns) as any);
651
+ this.table.columns.insertAt(index, TreeArrayNode.spread(columns) as any);
518
652
  }
519
653
 
520
654
  // Inserting the input nodes into the tree hydrates them, making them usable as nodes.
@@ -529,27 +663,11 @@ export namespace System_TableSchema {
529
663
 
530
664
  // Ensure specified index is valid
531
665
  if (index !== undefined) {
532
- validateIndex(index, this.rows, "Table.insertRows", true);
666
+ validateIndex(index, this.table.rows, "Table.insertRows", true);
533
667
  }
534
668
 
535
- // Note: TypeScript is unable to narrow the type of the row type correctly here, hence the casts below.
536
- // See: https://github.com/microsoft/TypeScript/issues/52144
537
- for (const newRow of rows) {
538
- // If the row contains cells, verify that the table contains the columns for those cells.
539
- // Note: we intentionally hide `cells` on `IRow` to avoid leaking the internal data representation as much as possible, so we have to cast here.
540
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
541
- if ((newRow as any).cells !== undefined) {
542
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
543
- const keys: string[] = Object.keys((newRow as any).cells);
544
- for (const key of keys) {
545
- if (!this.#containsColumnWithId(key)) {
546
- throw new UsageError(
547
- `Attempted to insert row a cell under column ID "${key}", but the table does not contain a column with that ID.`,
548
- );
549
- }
550
- }
551
- }
552
- }
669
+ // Ensure the new rows being inserted are valid
670
+ this.#validateNewRows(rows);
553
671
 
554
672
  // #endregion
555
673
 
@@ -557,10 +675,10 @@ export namespace System_TableSchema {
557
675
  // See: https://github.com/microsoft/TypeScript/issues/52144
558
676
  if (index === undefined) {
559
677
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
560
- this.rows.insertAtEnd(TreeArrayNode.spread(rows) as any);
678
+ this.table.rows.insertAtEnd(TreeArrayNode.spread(rows) as any);
561
679
  } else {
562
680
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
563
- this.rows.insertAt(index, TreeArrayNode.spread(rows) as any);
681
+ this.table.rows.insertAt(index, TreeArrayNode.spread(rows) as any);
564
682
  }
565
683
 
566
684
  // Inserting the input nodes into the tree hydrates them, making them usable as nodes.
@@ -586,17 +704,18 @@ export namespace System_TableSchema {
586
704
  if (typeof indexOrColumns === "number" || indexOrColumns === undefined) {
587
705
  let removedColumns: ColumnValueType[] | undefined;
588
706
  const startIndex = indexOrColumns ?? 0;
589
- const endIndex = count === undefined ? this.columns.length : startIndex + count;
707
+ const endIndex =
708
+ count === undefined ? this.table.columns.length : startIndex + count;
590
709
 
591
710
  // If there are no columns to remove, do nothing
592
711
  if (startIndex === endIndex) {
593
712
  return [];
594
713
  }
595
714
 
596
- validateIndexRange(startIndex, endIndex, this.columns, "Table.removeColumns");
715
+ validateIndexRange(startIndex, endIndex, this.table.columns, "Table.removeColumns");
597
716
 
598
717
  this.#applyEditsInBatch(() => {
599
- const columnsToRemove = this.columns.slice(
718
+ const columnsToRemove = this.table.columns.slice(
600
719
  startIndex,
601
720
  endIndex,
602
721
  ) as ColumnValueType[];
@@ -607,7 +726,12 @@ export namespace System_TableSchema {
607
726
  }
608
727
 
609
728
  // Second, remove the column nodes:
610
- removeRangeFromArray(startIndex, endIndex, this.columns, "Table.removeColumns");
729
+ removeRangeFromArray(
730
+ startIndex,
731
+ endIndex,
732
+ this.table.columns,
733
+ "Table.removeColumns",
734
+ );
611
735
  removedColumns = columnsToRemove;
612
736
  });
613
737
  return removedColumns ?? fail(0xc1f /* Transaction did not complete. */);
@@ -630,7 +754,7 @@ export namespace System_TableSchema {
630
754
  // So if we throw an error here for any column, no columns will be removed.
631
755
  for (const columnToRemove of columnsToRemove) {
632
756
  // Remove the corresponding cell from all rows.
633
- for (const row of this.rows) {
757
+ for (const row of this.table.rows) {
634
758
  // TypeScript is unable to narrow the row type correctly here, hence the cast.
635
759
  // See: https://github.com/microsoft/TypeScript/issues/52144
636
760
  this.removeCell({
@@ -640,7 +764,7 @@ export namespace System_TableSchema {
640
764
  }
641
765
 
642
766
  // We have already validated that all of the columns exist above, so this is safe.
643
- this.columns.removeAt(this.columns.indexOf(columnToRemove));
767
+ this.table.columns.removeAt(this.table.columns.indexOf(columnToRemove));
644
768
  }
645
769
  });
646
770
  return columnsToRemove;
@@ -653,14 +777,19 @@ export namespace System_TableSchema {
653
777
  ): RowValueType[] {
654
778
  if (typeof indexOrRows === "number" || indexOrRows === undefined) {
655
779
  const startIndex = indexOrRows ?? 0;
656
- const endIndex = count === undefined ? this.columns.length : startIndex + count;
780
+ const endIndex = count === undefined ? this.table.rows.length : startIndex + count;
657
781
 
658
782
  // If there are no rows to remove, do nothing
659
783
  if (startIndex === endIndex) {
660
784
  return [];
661
785
  }
662
786
 
663
- return removeRangeFromArray(startIndex, endIndex, this.rows, "Table.removeRows");
787
+ return removeRangeFromArray(
788
+ startIndex,
789
+ endIndex,
790
+ this.table.rows,
791
+ "Table.removeRows",
792
+ );
664
793
  }
665
794
 
666
795
  // If there are no rows to remove, do nothing
@@ -681,8 +810,8 @@ export namespace System_TableSchema {
681
810
  // So if we throw an error here for any row, no rows will be removed.
682
811
  for (const rowToRemove of rowsToRemove) {
683
812
  // We have already validated that all of the rows exist above, so this is safe.
684
- const index = this.rows.indexOf(rowToRemove);
685
- this.rows.removeAt(index);
813
+ const index = this.table.rows.indexOf(rowToRemove);
814
+ this.table.rows.removeAt(index);
686
815
  }
687
816
  });
688
817
  return rowsToRemove;
@@ -709,7 +838,7 @@ export namespace System_TableSchema {
709
838
  * Removes the cell corresponding with the specified column from each row in the table.
710
839
  */
711
840
  #removeCells(column: ColumnValueType): void {
712
- for (const row of this.rows) {
841
+ for (const row of this.table.rows) {
713
842
  // TypeScript is unable to narrow the row type correctly here, hence the cast.
714
843
  // See: https://github.com/microsoft/TypeScript/issues/52144
715
844
  this.removeCell({
@@ -757,25 +886,25 @@ export namespace System_TableSchema {
757
886
  columnOrIdOrIndex: ColumnValueType | string | number,
758
887
  ): ColumnValueType | undefined {
759
888
  if (typeof columnOrIdOrIndex === "number") {
760
- if (columnOrIdOrIndex < 0 || columnOrIdOrIndex >= this.columns.length) {
889
+ if (columnOrIdOrIndex < 0 || columnOrIdOrIndex >= this.table.columns.length) {
761
890
  return undefined;
762
891
  }
763
892
  // TypeScript is unable to narrow the types correctly here, hence the cast.
764
893
  // See: https://github.com/microsoft/TypeScript/issues/52144
765
- return this.columns[columnOrIdOrIndex] as ColumnValueType;
894
+ return this.table.columns[columnOrIdOrIndex] as ColumnValueType;
766
895
  }
767
896
 
768
897
  if (typeof columnOrIdOrIndex === "string") {
769
898
  const columnId = columnOrIdOrIndex;
770
899
  // TypeScript is unable to narrow the types correctly here, hence the casts.
771
900
  // See: https://github.com/microsoft/TypeScript/issues/52144
772
- return this.columns.find((col) => (col as ColumnValueType).id === columnId) as
901
+ return this.table.columns.find((col) => (col as ColumnValueType).id === columnId) as
773
902
  | ColumnValueType
774
903
  | undefined;
775
904
  }
776
905
 
777
906
  // If the user provided a node, ensure it actually exists in this table.
778
- if (!this.columns.includes(columnOrIdOrIndex)) {
907
+ if (!this.table.columns.includes(columnOrIdOrIndex)) {
779
908
  return undefined;
780
909
  }
781
910
 
@@ -795,13 +924,6 @@ export namespace System_TableSchema {
795
924
  return column;
796
925
  }
797
926
 
798
- /**
799
- * Checks if a Column with the specified ID exists in the table.
800
- */
801
- #containsColumnWithId(columnId: string): boolean {
802
- return this.#tryGetColumn(columnId) !== undefined;
803
- }
804
-
805
927
  /**
806
928
  * Throw a `UsageError` for a missing Column by its ID or index.
807
929
  */
@@ -830,25 +952,25 @@ export namespace System_TableSchema {
830
952
  */
831
953
  #tryGetRow(rowOrIdOrIndex: RowValueType | string | number): RowValueType | undefined {
832
954
  if (typeof rowOrIdOrIndex === "number") {
833
- if (rowOrIdOrIndex < 0 || rowOrIdOrIndex >= this.rows.length) {
955
+ if (rowOrIdOrIndex < 0 || rowOrIdOrIndex >= this.table.rows.length) {
834
956
  return undefined;
835
957
  }
836
958
  // TypeScript is unable to narrow the types correctly here, hence the cast.
837
959
  // See: https://github.com/microsoft/TypeScript/issues/52144
838
- return this.rows[rowOrIdOrIndex] as RowValueType;
960
+ return this.table.rows[rowOrIdOrIndex] as RowValueType;
839
961
  }
840
962
 
841
963
  if (typeof rowOrIdOrIndex === "string") {
842
964
  const rowId = rowOrIdOrIndex;
843
965
  // TypeScript is unable to narrow the types correctly here, hence the casts.
844
966
  // See: https://github.com/microsoft/TypeScript/issues/52144
845
- return this.rows.find((row) => (row as RowValueType).id === rowId) as
967
+ return this.table.rows.find((row) => (row as RowValueType).id === rowId) as
846
968
  | RowValueType
847
969
  | undefined;
848
970
  }
849
971
 
850
972
  // If the user provided a node, ensure it actually exists in this table.
851
- if (!this.rows.includes(rowOrIdOrIndex)) {
973
+ if (!this.table.rows.includes(rowOrIdOrIndex)) {
852
974
  return undefined;
853
975
  }
854
976
 
@@ -868,6 +990,109 @@ export namespace System_TableSchema {
868
990
  return row;
869
991
  }
870
992
 
993
+ /**
994
+ * Validates the provided list of new columns being inserted into the table.
995
+ * @throws Throws a `UsageError` if any of the following conditions are met:
996
+ * - A column with a duplicate ID is being inserted.
997
+ */
998
+ #validateNewColumns(newColumns: readonly ColumnInsertableType[]): void {
999
+ return Table._validateNewColumns(
1000
+ newColumns,
1001
+ new Set(this.table.columns.map((column) => (column as ColumnValueType).id)),
1002
+ );
1003
+ }
1004
+
1005
+ /**
1006
+ * Validates the provided list of new rows being inserted into the table.
1007
+ * @throws Throws a `UsageError` if any of the following conditions are met:
1008
+ * - A row with a duplicate ID is being inserted.
1009
+ * - A row is being inserted that contains cells for columns that do not exist in the table.
1010
+ */
1011
+ #validateNewRows(newRows: readonly RowInsertableType[]): void {
1012
+ return Table._validateNewRows(
1013
+ newRows,
1014
+ new Set(this.table.rows.map((row) => (row as RowValueType).id)),
1015
+ new Set(this.table.columns.map((column) => (column as ColumnValueType).id)),
1016
+ );
1017
+ }
1018
+
1019
+ /**
1020
+ * Validates the provided list of new columns being inserted into the table.
1021
+ * @throws Throws a `UsageError` if any of the following conditions are met:
1022
+ * - A column with a duplicate ID is being inserted.
1023
+ */
1024
+ private static _validateNewColumns(
1025
+ newColumns: Iterable<ColumnInsertableType>,
1026
+ existingColumnIds: Set<string>,
1027
+ ): void {
1028
+ const newColumnIds = new Set<string>();
1029
+ for (const newColumn of newColumns) {
1030
+ // #region Ensure each column ID is unique
1031
+ const newColumnId = (newColumn as ColumnValueType).id;
1032
+ if (existingColumnIds.has(newColumnId)) {
1033
+ throw new UsageError(
1034
+ `Attempted to insert a column with ID "${newColumnId}", but a column with that ID already exists in the table.`,
1035
+ );
1036
+ }
1037
+ if (newColumnIds.has(newColumnId)) {
1038
+ throw new UsageError(
1039
+ `Attempted to insert multiple columns with ID "${newColumnId}". Column IDs must be unique.`,
1040
+ );
1041
+ }
1042
+ newColumnIds.add(newColumnId);
1043
+ }
1044
+ }
1045
+
1046
+ /**
1047
+ * Validates the provided list of new rows being inserted into the table.
1048
+ * @throws Throws a `UsageError` if any of the following conditions are met:
1049
+ * - A row with a duplicate ID is being inserted.
1050
+ * - A row is being inserted that contains cells for columns that do not exist in the table.
1051
+ */
1052
+ private static _validateNewRows(
1053
+ newRows: Iterable<RowInsertableType>,
1054
+ existingRowIds: Set<string>,
1055
+ columnIds: Set<string>,
1056
+ ): void {
1057
+ const newRowIds = new Set<string>();
1058
+ for (const newRow of newRows) {
1059
+ // #region Ensure each row ID is unique
1060
+
1061
+ const newRowId = (newRow as RowValueType).id;
1062
+ if (existingRowIds.has(newRowId)) {
1063
+ throw new UsageError(
1064
+ `Attempted to insert a row with ID "${newRowId}", but a row with that ID already exists in the table.`,
1065
+ );
1066
+ }
1067
+ if (newRowIds.has(newRowId)) {
1068
+ throw new UsageError(
1069
+ `Attempted to insert multiple rows with ID "${newRowId}". Row IDs must be unique.`,
1070
+ );
1071
+ }
1072
+ newRowIds.add(newRowId);
1073
+
1074
+ // #endregion
1075
+
1076
+ // #region If the row contains cells, verify that the table contains the columns for those cells
1077
+
1078
+ // Note: we intentionally hide `cells` on `IRow` to avoid leaking the internal data representation as much as possible, so we have to cast here.
1079
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1080
+ if ((newRow as any).cells !== undefined) {
1081
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1082
+ const keys: string[] = Object.keys((newRow as any).cells);
1083
+ for (const key of keys) {
1084
+ if (!columnIds.has(key)) {
1085
+ throw new UsageError(
1086
+ `Attempted to insert a row containing a cell under column ID "${key}", but the table does not contain a column with that ID.`,
1087
+ );
1088
+ }
1089
+ }
1090
+ }
1091
+
1092
+ // #endregion
1093
+ }
1094
+ }
1095
+
871
1096
  /**
872
1097
  * Throw a `UsageError` for a missing Row by its ID or index.
873
1098
  */
@@ -895,29 +1120,39 @@ export namespace System_TableSchema {
895
1120
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
896
1121
  (Table as any)[tableSchemaSymbol] = true;
897
1122
 
898
- type TableValueType = TreeNode &
899
- TableSchema.Table<TInputScope, TCellSchema, TColumnSchema, TRowSchema> &
900
- WithType<ScopedSchemaName<Scope, "Table">>;
901
- type TableInsertableType = InsertableObjectFromSchemaRecord<typeof tableFields>;
902
- type TableConstructorType = new (data: TableInsertableType) => TableValueType;
903
-
904
1123
  // Returning SingletonSchema without a type conversion results in TypeScript generating something like `readonly "__#124291@#brand": unknown;`
905
1124
  // for the private brand field of TreeNode.
906
1125
  // This numeric id doesn't seem to be stable over incremental builds, and thus causes diffs in the API extractor reports.
907
1126
  // This is avoided by doing this type conversion.
908
1127
  // The conversion is done via assignment instead of `as` to get stronger type safety.
909
1128
  const TableSchemaType: TreeNodeSchemaClass<
910
- /* Name */ ScopedSchemaName<Scope, "Table">,
1129
+ /* Name */ ScopedSchemaName<Scope, "TableRoot">,
911
1130
  /* Kind */ NodeKind.Object,
912
1131
  /* TNode */ TableValueType,
913
- /* TInsertable */ object & TableInsertableType,
914
- /* ImplicitlyConstructable */ true,
915
- /* Info */ typeof tableFields
1132
+ /* TInsertable */ TableInsertableType,
1133
+ /* ImplicitlyConstructable */ false,
1134
+ /* Info */ typeof tableFields,
1135
+ /* TConstructorExtra */ undefined
916
1136
  > & {
917
1137
  /**
918
- * Create an empty table.
1138
+ * Create a table with initial contents.
1139
+ * @param initialContents - The initial contents of the table.
1140
+ * If not provided, an empty table will be constructed.
1141
+ * @remarks Performs the following input validation:
1142
+ * - Ensures that any cells specified in the initial rows correspond to existing columns in the initial columns.
1143
+ * - Ensures that all column and row IDs are unique.
919
1144
  */
920
- empty<TThis extends TableConstructorType>(this: TThis): InstanceType<TThis>;
1145
+ create<TThis extends TableConstructorType>(
1146
+ this: TThis,
1147
+ initialContents?:
1148
+ | TableSchema.TableFactoryMethodParameters<
1149
+ TUserScope,
1150
+ TCellSchema,
1151
+ TColumnSchema,
1152
+ TRowSchema
1153
+ >
1154
+ | undefined,
1155
+ ): InstanceType<TThis>;
921
1156
  } = Table;
922
1157
 
923
1158
  // Return the table schema
@@ -929,15 +1164,21 @@ export namespace System_TableSchema {
929
1164
  * @sealed @system @alpha
930
1165
  */
931
1166
  export type TableSchemaBase<
932
- TScope extends string | undefined,
933
- TCell extends ImplicitAllowedTypes,
934
- TColumn extends ColumnSchemaBase<TScope, TCell>,
935
- TRow extends RowSchemaBase<TScope, TCell>,
936
- > = ReturnType<typeof createTableSchema<TScope, TCell, TColumn, TRow>>;
1167
+ TUserScope extends string,
1168
+ TCellSchema extends ImplicitAllowedTypes,
1169
+ TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>,
1170
+ TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>,
1171
+ > = ReturnType<typeof createTableSchema<TUserScope, TCellSchema, TColumnSchema, TRowSchema>>;
937
1172
 
938
1173
  // #endregion
939
1174
  }
940
1175
 
1176
+ function createTableScopedFactory<TUserScope extends string>(
1177
+ inputSchemaFactory: SchemaFactoryBeta<TUserScope>,
1178
+ ): SchemaFactoryBeta<`${typeof baseSchemaScope}<${TUserScope}>`> {
1179
+ return new SchemaFactoryBeta(`${baseSchemaScope}<${inputSchemaFactory.scope}>`);
1180
+ }
1181
+
941
1182
  /**
942
1183
  * Removes the specified range of elements from the array.
943
1184
  * @returns The removed elements.
@@ -1006,7 +1247,7 @@ function removeRangeFromArray<TNodeSchema extends ImplicitAllowedTypes>(
1006
1247
  * cell: schemaFactory.string,
1007
1248
  * }) {}
1008
1249
  *
1009
- * const table = new MyTable({
1250
+ * const table = MyTable.create({
1010
1251
  * columns: [{ id: "column-0" }],
1011
1252
  * rows: [{ id: "row-0", cells: { "column-0": "Hello world!" } }],
1012
1253
  * });
@@ -1109,35 +1350,47 @@ export namespace TableSchema {
1109
1350
 
1110
1351
  /**
1111
1352
  * Factory for creating new table column schema.
1112
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1353
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1113
1354
  * @typeParam TCell - The type of the cells in the {@link TableSchema.Table}.
1114
1355
  * @alpha
1115
1356
  */
1116
1357
  export function column<
1117
- const TScope extends string | undefined,
1358
+ const TUserScope extends string,
1118
1359
  const TCell extends ImplicitAllowedTypes,
1119
1360
  >(
1120
- params: System_TableSchema.CreateColumnOptionsBase<SchemaFactoryBeta<TScope>, TCell>,
1121
- ): System_TableSchema.ColumnSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>;
1361
+ params: System_TableSchema.CreateColumnOptionsBase<
1362
+ TUserScope,
1363
+ SchemaFactoryBeta<TUserScope>,
1364
+ TCell
1365
+ >,
1366
+ ): System_TableSchema.ColumnSchemaBase<
1367
+ TUserScope,
1368
+ TCell,
1369
+ System_TableSchema.DefaultPropsType
1370
+ >;
1122
1371
  /**
1123
1372
  * Factory for creating new table column schema.
1124
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1373
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1125
1374
  * @typeParam TCell - The type of the cells in the {@link TableSchema.Table}.
1126
1375
  * @typeParam TProps - Additional properties to associate with the column.
1127
1376
  * @alpha
1128
1377
  */
1129
1378
  export function column<
1130
- const TScope extends string | undefined,
1379
+ const TUserScope extends string,
1131
1380
  const TCell extends ImplicitAllowedTypes,
1132
1381
  const TProps extends ImplicitFieldSchema,
1133
1382
  >(
1134
- params: System_TableSchema.CreateColumnOptionsBase<SchemaFactoryBeta<TScope>, TCell> & {
1383
+ params: System_TableSchema.CreateColumnOptionsBase<
1384
+ TUserScope,
1385
+ SchemaFactoryBeta<TUserScope>,
1386
+ TCell
1387
+ > & {
1135
1388
  /**
1136
1389
  * Optional column properties.
1137
1390
  */
1138
1391
  readonly props: TProps;
1139
1392
  },
1140
- ): System_TableSchema.ColumnSchemaBase<TScope, TCell, TProps>;
1393
+ ): System_TableSchema.ColumnSchemaBase<TUserScope, TCell, TProps>;
1141
1394
  /**
1142
1395
  * Overload implementation
1143
1396
  */
@@ -1186,35 +1439,43 @@ export namespace TableSchema {
1186
1439
 
1187
1440
  /**
1188
1441
  * Factory for creating new table column schema.
1189
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1442
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1190
1443
  * @typeParam TCell - The type of the cells in the {@link TableSchema.Table}.
1191
1444
  * @alpha
1192
1445
  */
1193
1446
  export function row<
1194
- const TScope extends string | undefined,
1447
+ const TUserScope extends string,
1195
1448
  const TCell extends ImplicitAllowedTypes,
1196
1449
  >(
1197
- params: System_TableSchema.CreateRowOptionsBase<SchemaFactoryBeta<TScope>, TCell>,
1198
- ): System_TableSchema.RowSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>;
1450
+ params: System_TableSchema.CreateRowOptionsBase<
1451
+ TUserScope,
1452
+ SchemaFactoryBeta<TUserScope>,
1453
+ TCell
1454
+ >,
1455
+ ): System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>;
1199
1456
  /**
1200
1457
  * Factory for creating new table row schema.
1201
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1458
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1202
1459
  * @typeParam TCell - The type of the cells in the {@link TableSchema.Table}.
1203
1460
  * @typeParam TProps - Additional properties to associate with the row.
1204
1461
  * @alpha
1205
1462
  */
1206
1463
  export function row<
1207
- const TScope extends string | undefined,
1464
+ const TUserScope extends string,
1208
1465
  const TCell extends ImplicitAllowedTypes,
1209
1466
  const TProps extends ImplicitFieldSchema,
1210
1467
  >(
1211
- params: System_TableSchema.CreateRowOptionsBase<SchemaFactoryBeta<TScope>, TCell> & {
1468
+ params: System_TableSchema.CreateRowOptionsBase<
1469
+ TUserScope,
1470
+ SchemaFactoryBeta<TUserScope>,
1471
+ TCell
1472
+ > & {
1212
1473
  /**
1213
1474
  * Optional row properties.
1214
1475
  */
1215
1476
  readonly props: TProps;
1216
1477
  },
1217
- ): System_TableSchema.RowSchemaBase<TScope, TCell, TProps>;
1478
+ ): System_TableSchema.RowSchemaBase<TUserScope, TCell, TProps>;
1218
1479
  /**
1219
1480
  * Overload implementation
1220
1481
  */
@@ -1234,7 +1495,7 @@ export namespace TableSchema {
1234
1495
 
1235
1496
  /**
1236
1497
  * A key to uniquely identify a cell within a table.
1237
- * @alpha
1498
+ * @input @alpha
1238
1499
  */
1239
1500
  export interface CellKey<
1240
1501
  TColumn extends ImplicitAllowedTypes,
@@ -1253,7 +1514,7 @@ export namespace TableSchema {
1253
1514
 
1254
1515
  /**
1255
1516
  * {@link TableSchema.Table.insertColumns} parameters.
1256
- * @alpha
1517
+ * @input @alpha
1257
1518
  */
1258
1519
  export interface InsertColumnsParameters<TColumn extends ImplicitAllowedTypes> {
1259
1520
  /**
@@ -1270,7 +1531,7 @@ export namespace TableSchema {
1270
1531
 
1271
1532
  /**
1272
1533
  * {@link TableSchema.Table.insertRows} parameters.
1273
- * @alpha
1534
+ * @input @alpha
1274
1535
  */
1275
1536
  export interface InsertRowsParameters<TRow extends ImplicitAllowedTypes> {
1276
1537
  /**
@@ -1287,7 +1548,7 @@ export namespace TableSchema {
1287
1548
 
1288
1549
  /**
1289
1550
  * {@link TableSchema.Table.setCell} parameters.
1290
- * @alpha
1551
+ * @input @alpha
1291
1552
  */
1292
1553
  export interface SetCellParameters<
1293
1554
  TCell extends ImplicitAllowedTypes,
@@ -1307,27 +1568,33 @@ export namespace TableSchema {
1307
1568
 
1308
1569
  /**
1309
1570
  * A table.
1310
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1571
+ *
1572
+ * @remarks Table schema is created via the {@link TableSchema.(table:1)} factory.
1573
+ * Node instances of the schema type should be constructed via the static `create` method on the schema class.
1574
+ * E.g. `const table = MyTableSchema.create({ columns, rows});`
1575
+ *
1576
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1311
1577
  * @typeParam TCell - The type of the cells in the table.
1312
1578
  * @typeParam TColumn - The type of the columns in the table.
1313
1579
  * @typeParam TRow - The type of the rows in the table.
1580
+ *
1314
1581
  * @sealed @alpha
1315
1582
  */
1316
1583
  export interface Table<
1317
- TScope extends string | undefined,
1584
+ TUserScope extends string,
1318
1585
  TCell extends ImplicitAllowedTypes,
1319
- TColumn extends System_TableSchema.ColumnSchemaBase<TScope, TCell>,
1320
- TRow extends System_TableSchema.RowSchemaBase<TScope, TCell>,
1586
+ TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>,
1587
+ TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>,
1321
1588
  > {
1322
1589
  /**
1323
1590
  * The table's columns.
1324
1591
  */
1325
- readonly columns: TreeArrayNode<TColumn>;
1592
+ readonly columns: System_TableSchema.RearrangeableList<TColumn>;
1326
1593
 
1327
1594
  /**
1328
1595
  * The table's rows.
1329
1596
  */
1330
- readonly rows: TreeArrayNode<TRow>;
1597
+ readonly rows: System_TableSchema.RearrangeableList<TRow>;
1331
1598
 
1332
1599
  /**
1333
1600
  * Gets a table column by its {@link TableSchema.Column.id}.
@@ -1475,84 +1742,136 @@ export namespace TableSchema {
1475
1742
  ): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1476
1743
  }
1477
1744
 
1745
+ /**
1746
+ * Input parameters for {@link TableSchema.Table}'s `create` factory method.
1747
+ * @input @alpha
1748
+ */
1749
+ export interface TableFactoryMethodParameters<
1750
+ TUserScope extends string,
1751
+ TCell extends ImplicitAllowedTypes,
1752
+ TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>,
1753
+ TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>,
1754
+ > {
1755
+ /**
1756
+ * Initial columns for the table.
1757
+ */
1758
+ readonly columns?:
1759
+ | Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumn>>
1760
+ | undefined;
1761
+
1762
+ /**
1763
+ * Initial rows for the table.
1764
+ * @remarks If any cells are specified, they will be validated against the IDs of the provided columns.
1765
+ */
1766
+ readonly rows?: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRow>> | undefined;
1767
+ }
1768
+
1478
1769
  /**
1479
1770
  * Factory for creating new table schema.
1480
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1771
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1772
+ * The resulting schema will have an identifier of the form: `com.fluidframework.table<${TUserScope}>.Table`.
1481
1773
  * @typeParam TCell - The type of the cells in the table.
1482
1774
  * @alpha
1483
1775
  */
1484
1776
  export function table<
1485
- const TScope extends string | undefined,
1777
+ const TUserScope extends string,
1486
1778
  const TCell extends ImplicitAllowedTypes,
1487
1779
  >(
1488
- params: System_TableSchema.TableFactoryOptionsBase<SchemaFactoryBeta<TScope>, TCell>,
1780
+ params: System_TableSchema.TableFactoryOptionsBase<
1781
+ TUserScope,
1782
+ SchemaFactoryBeta<TUserScope>,
1783
+ TCell
1784
+ >,
1489
1785
  ): System_TableSchema.TableSchemaBase<
1490
- TScope,
1786
+ TUserScope,
1491
1787
  TCell,
1492
- System_TableSchema.ColumnSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>,
1493
- System_TableSchema.RowSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>
1788
+ System_TableSchema.ColumnSchemaBase<
1789
+ TUserScope,
1790
+ TCell,
1791
+ System_TableSchema.DefaultPropsType
1792
+ >,
1793
+ System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>
1494
1794
  >;
1495
1795
  /**
1496
1796
  * Factory for creating new table schema with custom column schema.
1497
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1797
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1798
+ * The resulting schema will have an identifier of the form: `com.fluidframework.table<${TUserScope}>.Table`.
1498
1799
  * @typeParam TCell - The type of the cells in the table.
1499
1800
  * @typeParam TColumn - The type of the columns in the table.
1500
1801
  * @alpha
1501
1802
  */
1502
1803
  export function table<
1503
- const TScope extends string | undefined,
1804
+ const TUserScope extends string,
1504
1805
  const TCell extends ImplicitAllowedTypes,
1505
- const TColumn extends System_TableSchema.ColumnSchemaBase<TScope, TCell>,
1806
+ const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>,
1506
1807
  >(
1507
- params: System_TableSchema.TableFactoryOptionsBase<SchemaFactoryBeta<TScope>, TCell> & {
1808
+ params: System_TableSchema.TableFactoryOptionsBase<
1809
+ TUserScope,
1810
+ SchemaFactoryBeta<TUserScope>,
1811
+ TCell
1812
+ > & {
1508
1813
  readonly column: TColumn;
1509
1814
  },
1510
1815
  ): System_TableSchema.TableSchemaBase<
1511
- TScope,
1816
+ TUserScope,
1512
1817
  TCell,
1513
1818
  TColumn,
1514
- System_TableSchema.RowSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>
1819
+ System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>
1515
1820
  >;
1516
1821
  /**
1517
1822
  * Factory for creating new table schema with custom row schema.
1518
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1823
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1824
+ * The resulting schema will have an identifier of the form: `com.fluidframework.table<${TUserScope}>.Table`.
1519
1825
  * @typeParam TCell - The type of the cells in the table.
1520
1826
  * @typeParam TRow - The type of the rows in the table.
1521
1827
  * @alpha
1522
1828
  */
1523
1829
  export function table<
1524
- const TScope extends string | undefined,
1830
+ const TUserScope extends string,
1525
1831
  const TCell extends ImplicitAllowedTypes,
1526
- const TRow extends System_TableSchema.RowSchemaBase<TScope, TCell>,
1832
+ const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>,
1527
1833
  >(
1528
- params: System_TableSchema.TableFactoryOptionsBase<SchemaFactoryBeta<TScope>, TCell> & {
1834
+ params: System_TableSchema.TableFactoryOptionsBase<
1835
+ TUserScope,
1836
+ SchemaFactoryBeta<TUserScope>,
1837
+ TCell
1838
+ > & {
1529
1839
  readonly row: TRow;
1530
1840
  },
1531
1841
  ): System_TableSchema.TableSchemaBase<
1532
- TScope,
1842
+ TUserScope,
1533
1843
  TCell,
1534
- System_TableSchema.ColumnSchemaBase<TScope, TCell, System_TableSchema.DefaultPropsType>,
1844
+ System_TableSchema.ColumnSchemaBase<
1845
+ TUserScope,
1846
+ TCell,
1847
+ System_TableSchema.DefaultPropsType
1848
+ >,
1535
1849
  TRow
1536
1850
  >;
1537
1851
  /**
1538
1852
  * Factory for creating new table schema with custom column and row schema.
1539
- * @typeParam TScope - The {@link SchemaFactory.scope | schema factory scope}.
1853
+ * @typeParam TUserScope - The {@link SchemaFactory.scope | schema factory scope}.
1854
+ * The resulting schema will have an identifier of the form: `com.fluidframework.table<${TUserScope}>.Table`.
1540
1855
  * @typeParam TCell - The type of the cells in the table.
1541
1856
  * @typeParam TColumn - The type of the columns in the table.
1542
1857
  * @typeParam TRow - The type of the rows in the table.
1543
1858
  * @alpha
1544
1859
  */
1545
1860
  export function table<
1546
- const TScope extends string | undefined,
1861
+ const TUserScope extends string,
1547
1862
  const TCell extends ImplicitAllowedTypes,
1548
- const TColumn extends System_TableSchema.ColumnSchemaBase<TScope, TCell>,
1549
- const TRow extends System_TableSchema.RowSchemaBase<TScope, TCell>,
1863
+ const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>,
1864
+ const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>,
1550
1865
  >(
1551
- params: System_TableSchema.TableFactoryOptionsBase<SchemaFactoryBeta<TScope>, TCell> & {
1866
+ params: System_TableSchema.TableFactoryOptionsBase<
1867
+ TUserScope,
1868
+ SchemaFactoryBeta<TUserScope>,
1869
+ TCell
1870
+ > & {
1552
1871
  readonly column: TColumn;
1553
1872
  readonly row: TRow;
1554
1873
  },
1555
- ): System_TableSchema.TableSchemaBase<TScope, TCell, TColumn, TRow>;
1874
+ ): System_TableSchema.TableSchemaBase<TUserScope, TCell, TColumn, TRow>;
1556
1875
  /**
1557
1876
  * Overload implementation
1558
1877
  */