@fluidframework/tree 2.0.0-dev-rc.5.0.0.271262 → 2.0.0-dev-rc.5.0.0.271717

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 (396) hide show
  1. package/api-report/tree.alpha.api.md +2 -13
  2. package/api-report/tree.beta.api.md +2 -13
  3. package/api-report/tree.public.api.md +2 -13
  4. package/dist/beta.d.ts +0 -1
  5. package/dist/codec/codec.js +0 -1
  6. package/dist/codec/codec.js.map +1 -1
  7. package/dist/codec/discriminatedUnions.js +0 -1
  8. package/dist/codec/discriminatedUnions.js.map +1 -1
  9. package/dist/core/change-family/editBuilder.js +0 -2
  10. package/dist/core/change-family/editBuilder.js.map +1 -1
  11. package/dist/core/rebase/revisionTagCodec.js +0 -2
  12. package/dist/core/rebase/revisionTagCodec.js.map +1 -1
  13. package/dist/core/schema-stored/schema.js +0 -4
  14. package/dist/core/schema-stored/schema.js.map +1 -1
  15. package/dist/core/schema-stored/storedSchemaRepository.js +1 -3
  16. package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
  17. package/dist/core/schema-view/view.js +0 -2
  18. package/dist/core/schema-view/view.js.map +1 -1
  19. package/dist/core/tree/anchorSet.js +46 -51
  20. package/dist/core/tree/anchorSet.js.map +1 -1
  21. package/dist/core/tree/detachedFieldIndex.js +2 -8
  22. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  23. package/dist/core/tree/detachedFieldIndexCodec.js +0 -3
  24. package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
  25. package/dist/core/tree/sparseTree.js +11 -15
  26. package/dist/core/tree/sparseTree.js.map +1 -1
  27. package/dist/domains/schemaBuilder.js +70 -70
  28. package/dist/domains/schemaBuilder.js.map +1 -1
  29. package/dist/events/events.js +1 -2
  30. package/dist/events/events.js.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -14
  32. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/chunkTree.js +6 -13
  34. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  35. package/dist/feature-libraries/chunked-forest/chunkedForest.js +2 -9
  36. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  37. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +3 -1
  38. package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  39. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +13 -3
  40. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +6 -11
  42. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +3 -3
  44. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  45. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +2 -5
  46. package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  47. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +0 -1
  48. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  49. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -1
  50. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  51. package/dist/feature-libraries/chunked-forest/codec/codecs.js +4 -1
  52. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  53. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +13 -25
  54. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  55. package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  56. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +5 -8
  57. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  58. package/dist/feature-libraries/chunked-forest/sequenceChunk.js +0 -1
  59. package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  60. package/dist/feature-libraries/chunked-forest/uniformChunk.js +5 -40
  61. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  62. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +0 -2
  63. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  64. package/dist/feature-libraries/detachedFieldIndexSummarizer.js +1 -2
  65. package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  66. package/dist/feature-libraries/editableTreeBinder.js +12 -13
  67. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  68. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +11 -12
  69. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  70. package/dist/feature-libraries/flex-tree/context.js +3 -7
  71. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  72. package/dist/feature-libraries/flex-tree/lazyEntity.js +22 -13
  73. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  74. package/dist/feature-libraries/flex-tree/lazyField.js +0 -6
  75. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  76. package/dist/feature-libraries/flex-tree/lazyNode.js +17 -10
  77. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  78. package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -6
  79. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  80. package/dist/feature-libraries/modular-schema/fieldKind.js +0 -2
  81. package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  82. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -3
  83. package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  84. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +2 -0
  85. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  86. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +2 -5
  87. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  88. package/dist/feature-libraries/node-key/mockNodeKeyManager.js +4 -2
  89. package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  90. package/dist/feature-libraries/node-key/nodeKeyIndex.js +0 -3
  91. package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  92. package/dist/feature-libraries/object-forest/objectForest.js +28 -23
  93. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  94. package/dist/feature-libraries/optional-field/optionalField.js +3 -1
  95. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  96. package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -5
  97. package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  98. package/dist/feature-libraries/schemaBuilderBase.js +3 -14
  99. package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
  100. package/dist/feature-libraries/sequence-field/compose.js +0 -6
  101. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  102. package/dist/feature-libraries/sequence-field/markListFactory.js +4 -3
  103. package/dist/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  104. package/dist/feature-libraries/sequence-field/markQueue.js +2 -4
  105. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  106. package/dist/feature-libraries/sequence-field/rebase.js +0 -6
  107. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  108. package/dist/feature-libraries/treeCursorUtils.js +9 -13
  109. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  110. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +4 -23
  111. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  112. package/dist/feature-libraries/typed-schema/view.js +0 -7
  113. package/dist/feature-libraries/typed-schema/view.js.map +1 -1
  114. package/dist/index.d.ts +1 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +1 -2
  117. package/dist/index.js.map +1 -1
  118. package/dist/packageVersion.d.ts +1 -1
  119. package/dist/packageVersion.js +1 -1
  120. package/dist/packageVersion.js.map +1 -1
  121. package/dist/public.d.ts +0 -1
  122. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  123. package/dist/shared-tree/schematizingTreeView.js +10 -27
  124. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  125. package/dist/shared-tree/sharedTree.d.ts +4 -0
  126. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  127. package/dist/shared-tree/sharedTree.js +13 -10
  128. package/dist/shared-tree/sharedTree.js.map +1 -1
  129. package/dist/shared-tree/sharedTreeChangeEnricher.js +11 -14
  130. package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  131. package/dist/shared-tree/sharedTreeChangeFamily.js +3 -5
  132. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  133. package/dist/shared-tree/sharedTreeEditBuilder.js +0 -2
  134. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  135. package/dist/shared-tree/treeCheckout.js +11 -22
  136. package/dist/shared-tree/treeCheckout.js.map +1 -1
  137. package/dist/shared-tree/treeView.js +0 -6
  138. package/dist/shared-tree/treeView.js.map +1 -1
  139. package/dist/shared-tree-core/branch.js +25 -31
  140. package/dist/shared-tree-core/branch.js.map +1 -1
  141. package/dist/shared-tree-core/branchCommitEnricher.js +9 -12
  142. package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
  143. package/dist/shared-tree-core/defaultResubmitMachine.js +19 -21
  144. package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  145. package/dist/shared-tree-core/editManager.js +37 -53
  146. package/dist/shared-tree-core/editManager.js.map +1 -1
  147. package/dist/shared-tree-core/editManagerSummarizer.js +1 -5
  148. package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
  149. package/dist/shared-tree-core/sharedTreeCore.js +7 -24
  150. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  151. package/dist/shared-tree-core/transactionEnricher.js +1 -3
  152. package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
  153. package/dist/shared-tree-core/transactionStack.js +3 -1
  154. package/dist/shared-tree-core/transactionStack.js.map +1 -1
  155. package/dist/simple-tree/arrayNode.js +34 -26
  156. package/dist/simple-tree/arrayNode.js.map +1 -1
  157. package/dist/simple-tree/leafNodeSchema.js +2 -4
  158. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  159. package/dist/simple-tree/mapNode.js +5 -5
  160. package/dist/simple-tree/mapNode.js.map +1 -1
  161. package/dist/simple-tree/objectNode.js +6 -6
  162. package/dist/simple-tree/objectNode.js.map +1 -1
  163. package/dist/simple-tree/schemaFactory.d.ts +18 -5
  164. package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
  165. package/dist/simple-tree/schemaFactory.js +65 -53
  166. package/dist/simple-tree/schemaFactory.js.map +1 -1
  167. package/dist/simple-tree/schemaTypes.js +3 -12
  168. package/dist/simple-tree/schemaTypes.js.map +1 -1
  169. package/dist/simple-tree/tree.d.ts +1 -22
  170. package/dist/simple-tree/tree.d.ts.map +1 -1
  171. package/dist/simple-tree/tree.js +0 -21
  172. package/dist/simple-tree/tree.js.map +1 -1
  173. package/dist/simple-tree/treeNodeApi.d.ts +13 -4
  174. package/dist/simple-tree/treeNodeApi.d.ts.map +1 -1
  175. package/dist/simple-tree/treeNodeApi.js +8 -3
  176. package/dist/simple-tree/treeNodeApi.js.map +1 -1
  177. package/dist/simple-tree/types.d.ts +26 -6
  178. package/dist/simple-tree/types.d.ts.map +1 -1
  179. package/dist/simple-tree/types.js +79 -54
  180. package/dist/simple-tree/types.js.map +1 -1
  181. package/dist/treeFactory.js +10 -9
  182. package/dist/treeFactory.js.map +1 -1
  183. package/dist/util/brand.js +0 -1
  184. package/dist/util/brand.js.map +1 -1
  185. package/dist/util/nestedMap.js +4 -2
  186. package/dist/util/nestedMap.js.map +1 -1
  187. package/dist/util/offsetList.js +4 -2
  188. package/dist/util/offsetList.js.map +1 -1
  189. package/dist/util/referenceCounting.js +0 -1
  190. package/dist/util/referenceCounting.js.map +1 -1
  191. package/dist/util/stackyIterator.js +2 -3
  192. package/dist/util/stackyIterator.js.map +1 -1
  193. package/lib/beta.d.ts +0 -1
  194. package/lib/codec/codec.js +0 -1
  195. package/lib/codec/codec.js.map +1 -1
  196. package/lib/codec/discriminatedUnions.js +0 -1
  197. package/lib/codec/discriminatedUnions.js.map +1 -1
  198. package/lib/core/change-family/editBuilder.js +0 -2
  199. package/lib/core/change-family/editBuilder.js.map +1 -1
  200. package/lib/core/rebase/revisionTagCodec.js +0 -2
  201. package/lib/core/rebase/revisionTagCodec.js.map +1 -1
  202. package/lib/core/schema-stored/schema.js +0 -4
  203. package/lib/core/schema-stored/schema.js.map +1 -1
  204. package/lib/core/schema-stored/storedSchemaRepository.js +1 -3
  205. package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
  206. package/lib/core/schema-view/view.js +0 -2
  207. package/lib/core/schema-view/view.js.map +1 -1
  208. package/lib/core/tree/anchorSet.js +46 -51
  209. package/lib/core/tree/anchorSet.js.map +1 -1
  210. package/lib/core/tree/detachedFieldIndex.js +2 -8
  211. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  212. package/lib/core/tree/detachedFieldIndexCodec.js +0 -3
  213. package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
  214. package/lib/core/tree/sparseTree.js +11 -15
  215. package/lib/core/tree/sparseTree.js.map +1 -1
  216. package/lib/domains/schemaBuilder.js +70 -70
  217. package/lib/domains/schemaBuilder.js.map +1 -1
  218. package/lib/events/events.js +1 -2
  219. package/lib/events/events.js.map +1 -1
  220. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -14
  221. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  222. package/lib/feature-libraries/chunked-forest/chunkTree.js +6 -13
  223. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  224. package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -9
  225. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  226. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +3 -1
  227. package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
  228. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +13 -3
  229. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  230. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +6 -11
  231. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  232. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +3 -3
  233. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
  234. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +2 -5
  235. package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
  236. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +0 -1
  237. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  238. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -1
  239. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  240. package/lib/feature-libraries/chunked-forest/codec/codecs.js +4 -1
  241. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  242. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +13 -25
  243. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  244. package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
  245. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +5 -8
  246. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  247. package/lib/feature-libraries/chunked-forest/sequenceChunk.js +0 -1
  248. package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
  249. package/lib/feature-libraries/chunked-forest/uniformChunk.js +5 -40
  250. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  251. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +0 -2
  252. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  253. package/lib/feature-libraries/detachedFieldIndexSummarizer.js +1 -2
  254. package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
  255. package/lib/feature-libraries/editableTreeBinder.js +12 -13
  256. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  257. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +11 -12
  258. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
  259. package/lib/feature-libraries/flex-tree/context.js +3 -7
  260. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  261. package/lib/feature-libraries/flex-tree/lazyEntity.js +22 -13
  262. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  263. package/lib/feature-libraries/flex-tree/lazyField.js +0 -6
  264. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  265. package/lib/feature-libraries/flex-tree/lazyNode.js +17 -10
  266. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  267. package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -6
  268. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  269. package/lib/feature-libraries/modular-schema/fieldKind.js +0 -2
  270. package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
  271. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -3
  272. package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
  273. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +2 -0
  274. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  275. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +2 -5
  276. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  277. package/lib/feature-libraries/node-key/mockNodeKeyManager.js +4 -2
  278. package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  279. package/lib/feature-libraries/node-key/nodeKeyIndex.js +0 -3
  280. package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
  281. package/lib/feature-libraries/object-forest/objectForest.js +28 -23
  282. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  283. package/lib/feature-libraries/optional-field/optionalField.js +3 -1
  284. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  285. package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -5
  286. package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
  287. package/lib/feature-libraries/schemaBuilderBase.js +3 -14
  288. package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
  289. package/lib/feature-libraries/sequence-field/compose.js +0 -6
  290. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  291. package/lib/feature-libraries/sequence-field/markListFactory.js +4 -3
  292. package/lib/feature-libraries/sequence-field/markListFactory.js.map +1 -1
  293. package/lib/feature-libraries/sequence-field/markQueue.js +2 -4
  294. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  295. package/lib/feature-libraries/sequence-field/rebase.js +0 -6
  296. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  297. package/lib/feature-libraries/treeCursorUtils.js +9 -13
  298. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  299. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +4 -23
  300. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  301. package/lib/feature-libraries/typed-schema/view.js +0 -7
  302. package/lib/feature-libraries/typed-schema/view.js.map +1 -1
  303. package/lib/index.d.ts +1 -1
  304. package/lib/index.d.ts.map +1 -1
  305. package/lib/index.js +1 -1
  306. package/lib/index.js.map +1 -1
  307. package/lib/packageVersion.d.ts +1 -1
  308. package/lib/packageVersion.js +1 -1
  309. package/lib/packageVersion.js.map +1 -1
  310. package/lib/public.d.ts +0 -1
  311. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  312. package/lib/shared-tree/schematizingTreeView.js +10 -27
  313. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  314. package/lib/shared-tree/sharedTree.d.ts +4 -0
  315. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  316. package/lib/shared-tree/sharedTree.js +13 -10
  317. package/lib/shared-tree/sharedTree.js.map +1 -1
  318. package/lib/shared-tree/sharedTreeChangeEnricher.js +11 -14
  319. package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
  320. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -5
  321. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  322. package/lib/shared-tree/sharedTreeEditBuilder.js +0 -2
  323. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  324. package/lib/shared-tree/treeCheckout.js +11 -22
  325. package/lib/shared-tree/treeCheckout.js.map +1 -1
  326. package/lib/shared-tree/treeView.js +0 -6
  327. package/lib/shared-tree/treeView.js.map +1 -1
  328. package/lib/shared-tree-core/branch.js +25 -31
  329. package/lib/shared-tree-core/branch.js.map +1 -1
  330. package/lib/shared-tree-core/branchCommitEnricher.js +9 -12
  331. package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
  332. package/lib/shared-tree-core/defaultResubmitMachine.js +19 -21
  333. package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
  334. package/lib/shared-tree-core/editManager.js +37 -53
  335. package/lib/shared-tree-core/editManager.js.map +1 -1
  336. package/lib/shared-tree-core/editManagerSummarizer.js +1 -5
  337. package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
  338. package/lib/shared-tree-core/sharedTreeCore.js +7 -24
  339. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  340. package/lib/shared-tree-core/transactionEnricher.js +1 -3
  341. package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
  342. package/lib/shared-tree-core/transactionStack.js +3 -1
  343. package/lib/shared-tree-core/transactionStack.js.map +1 -1
  344. package/lib/simple-tree/arrayNode.js +34 -26
  345. package/lib/simple-tree/arrayNode.js.map +1 -1
  346. package/lib/simple-tree/leafNodeSchema.js +2 -4
  347. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  348. package/lib/simple-tree/mapNode.js +5 -5
  349. package/lib/simple-tree/mapNode.js.map +1 -1
  350. package/lib/simple-tree/objectNode.js +6 -6
  351. package/lib/simple-tree/objectNode.js.map +1 -1
  352. package/lib/simple-tree/schemaFactory.d.ts +18 -5
  353. package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
  354. package/lib/simple-tree/schemaFactory.js +65 -53
  355. package/lib/simple-tree/schemaFactory.js.map +1 -1
  356. package/lib/simple-tree/schemaTypes.js +3 -12
  357. package/lib/simple-tree/schemaTypes.js.map +1 -1
  358. package/lib/simple-tree/tree.d.ts +1 -22
  359. package/lib/simple-tree/tree.d.ts.map +1 -1
  360. package/lib/simple-tree/tree.js +0 -21
  361. package/lib/simple-tree/tree.js.map +1 -1
  362. package/lib/simple-tree/treeNodeApi.d.ts +13 -4
  363. package/lib/simple-tree/treeNodeApi.d.ts.map +1 -1
  364. package/lib/simple-tree/treeNodeApi.js +8 -3
  365. package/lib/simple-tree/treeNodeApi.js.map +1 -1
  366. package/lib/simple-tree/types.d.ts +26 -6
  367. package/lib/simple-tree/types.d.ts.map +1 -1
  368. package/lib/simple-tree/types.js +78 -54
  369. package/lib/simple-tree/types.js.map +1 -1
  370. package/lib/treeFactory.js +10 -9
  371. package/lib/treeFactory.js.map +1 -1
  372. package/lib/util/brand.js +0 -1
  373. package/lib/util/brand.js.map +1 -1
  374. package/lib/util/nestedMap.js +4 -2
  375. package/lib/util/nestedMap.js.map +1 -1
  376. package/lib/util/offsetList.js +4 -2
  377. package/lib/util/offsetList.js.map +1 -1
  378. package/lib/util/referenceCounting.js +0 -1
  379. package/lib/util/referenceCounting.js.map +1 -1
  380. package/lib/util/stackyIterator.js +2 -3
  381. package/lib/util/stackyIterator.js.map +1 -1
  382. package/package.json +20 -20
  383. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +22 -6
  384. package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
  385. package/src/feature-libraries/chunked-forest/codec/codecs.ts +6 -2
  386. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +8 -3
  387. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +2 -0
  388. package/src/index.ts +0 -1
  389. package/src/packageVersion.ts +1 -1
  390. package/src/shared-tree/schematizingTreeView.ts +0 -2
  391. package/src/shared-tree/sharedTree.ts +8 -1
  392. package/src/simple-tree/arrayNode.ts +17 -17
  393. package/src/simple-tree/schemaFactory.ts +18 -5
  394. package/src/simple-tree/tree.ts +1 -26
  395. package/src/simple-tree/treeNodeApi.ts +25 -7
  396. package/src/simple-tree/types.ts +57 -9
@@ -6,7 +6,7 @@
6
6
  import type { ErasedType } from "@fluidframework/core-interfaces";
7
7
  import { assert } from "@fluidframework/core-utils/internal";
8
8
 
9
- import { type TreeNodeSchema, type WithType, type } from "./schemaTypes.js";
9
+ import { NodeKind, type TreeNodeSchema, type WithType, type } from "./schemaTypes.js";
10
10
  import {
11
11
  type FlexTreeNode,
12
12
  type MapTreeNode,
@@ -19,6 +19,7 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
19
19
  import { getFlexSchema } from "./toFlexSchema.js";
20
20
  import { fail } from "../util/index.js";
21
21
  import { setFlexNode } from "./proxyBinding.js";
22
+ import { tryGetSchema } from "./treeNodeApi.js";
22
23
 
23
24
  /**
24
25
  * Type alias to document which values are un-hydrated.
@@ -32,7 +33,7 @@ import { setFlexNode } from "./proxyBinding.js";
32
33
  export type Unhydrated<T> = T;
33
34
 
34
35
  /**
35
- * A non-leaf SharedTree node. Includes objects, arrays, and maps.
36
+ * A non-{@link NodeKind.Leaf|leaf} SharedTree node. Includes objects, arrays, and maps.
36
37
  *
37
38
  * @remarks
38
39
  * Base type which all nodes implement.
@@ -50,11 +51,8 @@ export type Unhydrated<T> = T;
50
51
  *
51
52
  * Not all node implementations include this in their prototype chain (some hide it with a proxy),
52
53
  * and thus cause the default/built in `instanceof` to return false despite our type checking and all other APIs treating them as TreeNodes.
53
- * This results in the runtime and compile time behavior of `instanceof` differing.
54
- * TypeScript 5.3 allows altering the compile time behavior of `instanceof`.
55
- * The runtime behavior can be changed by implementing `Symbol.hasInstance`.
56
- * One of those approaches could be used to resolve this inconsistency,
57
- * but for now the type-only export prevents use of `instanceof` avoiding this problem in the public API.
54
+ * This class provides a custom `Symbol.hasInstance` to fix `instanceof` for this class and all classes extending it.
55
+ * For now the type-only export prevents use of `instanceof` on this class (but allows it in subclasses like schema classes).
58
56
  * @public
59
57
  */
60
58
  export abstract class TreeNode implements WithType {
@@ -80,7 +78,7 @@ export abstract class TreeNode implements WithType {
80
78
  * Another option would be to use a symbol (possibly as a private field).
81
79
  * That approach ran into some strange difficulties causing SchemaFactory to fail to compile, and was not investigated further.
82
80
  *
83
- * The [type] symbol here provides a lot of the value this private brand does, but is not all of it:
81
+ * The [type] symbol provides a lot of the value this private brand does, but is not all of it:
84
82
  * someone could manually (or via Intellisense auto-implement completion, or in response to a type error)
85
83
  * make an object literal with the [type] field and pass it off as a node: this private brand prevents that.
86
84
  */
@@ -93,13 +91,63 @@ export abstract class TreeNode implements WithType {
93
91
  */
94
92
  public abstract get [type](): string;
95
93
 
94
+ /**
95
+ * Provides `instanceof` support for testing if a value is a `TreeNode`.
96
+ * @remarks
97
+ * For more options, like including leaf values or narrowing to collections of schema, use `is` or `schema` from {@link TreeNodeApi}.
98
+ * @privateRemarks
99
+ * Due to type-only export, this functionality is not available outside the package.
100
+ */
101
+ public static [Symbol.hasInstance](value: unknown): value is TreeNode;
102
+
103
+ /**
104
+ * Provides `instanceof` support for all schema classes with public constructors.
105
+ * @remarks
106
+ * For more options, like including leaf values or narrowing to collections of schema, use `is` or `schema` from {@link TreeNodeApi}.
107
+ * @privateRemarks
108
+ * Despite type-only export, this functionality is available outside the package since it is inherited by subclasses.
109
+ */
110
+ public static [Symbol.hasInstance]<TSchema extends abstract new (...args: any[]) => TreeNode>(
111
+ this: TSchema,
112
+ value: unknown,
113
+ ): value is InstanceType<TSchema>;
114
+
115
+ public static [Symbol.hasInstance](this: { prototype: object }, value: unknown): boolean {
116
+ const schema = tryGetSchema(value);
117
+
118
+ if (schema === undefined || schema.kind === NodeKind.Leaf) {
119
+ return false;
120
+ }
121
+
122
+ assert("prototype" in schema, "expected class based schema");
123
+ return inPrototypeChain(schema.prototype, this.prototype);
124
+ }
125
+
96
126
  protected constructor() {
97
- if (!(this instanceof TreeNodeValid)) {
127
+ if (!inPrototypeChain(Reflect.getPrototypeOf(this), TreeNodeValid.prototype)) {
98
128
  throw new UsageError("TreeNodes must extend schema classes created by SchemaFactory");
99
129
  }
100
130
  }
101
131
  }
102
132
 
133
+ /**
134
+ * Check if the prototype derived's prototype chain contains `base`.
135
+ * @param derived - prototype to check
136
+ * @param base - prototype to search for
137
+ * @returns true iff `base` is in the prototype chain starting at `derived`.
138
+ */
139
+ // eslint-disable-next-line @rushstack/no-new-null
140
+ export function inPrototypeChain(derived: object | null, base: object): boolean {
141
+ let checking = derived;
142
+ while (checking !== null) {
143
+ if (base === checking) {
144
+ return true;
145
+ }
146
+ checking = Reflect.getPrototypeOf(checking);
147
+ }
148
+ return false;
149
+ }
150
+
103
151
  /**
104
152
  * Class which all {@link TreeNode}s must extend.
105
153
  * Since this is not exported, it allows robust detection of attempts to create TreeNodes which do not go through SchemaFactory which is the only place which exposes classes that extend this.