@fluidframework/tree 2.23.0-323641 → 2.23.0-325054

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 (504) hide show
  1. package/.vscode/extensions.json +1 -0
  2. package/.vscode/settings.json +1 -0
  3. package/CHANGELOG.md +47 -0
  4. package/api-report/tree.alpha.api.md +169 -10
  5. package/api-report/tree.beta.api.md +101 -9
  6. package/api-report/tree.legacy.alpha.api.md +101 -9
  7. package/api-report/tree.legacy.public.api.md +101 -9
  8. package/api-report/tree.public.api.md +101 -9
  9. package/dist/alpha.d.ts +20 -0
  10. package/dist/beta.d.ts +15 -0
  11. package/dist/codec/codec.js +3 -3
  12. package/dist/codec/codec.js.map +1 -1
  13. package/dist/codec/discriminatedUnions.d.ts.map +1 -1
  14. package/dist/codec/discriminatedUnions.js +1 -1
  15. package/dist/codec/discriminatedUnions.js.map +1 -1
  16. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  17. package/dist/core/schema-stored/schema.js +3 -3
  18. package/dist/core/schema-stored/schema.js.map +1 -1
  19. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  20. package/dist/core/tree/anchorSet.js +5 -4
  21. package/dist/core/tree/anchorSet.js.map +1 -1
  22. package/dist/core/tree/treeTextFormat.js +1 -1
  23. package/dist/core/tree/treeTextFormat.js.map +1 -1
  24. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  25. package/dist/feature-libraries/chunked-forest/basicChunk.js +11 -8
  26. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  27. package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -2
  28. package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  29. package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  30. package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  31. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  32. package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  33. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  34. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  35. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  36. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  37. package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  38. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  39. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  40. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  41. package/dist/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  42. package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  43. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  44. package/dist/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  45. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  46. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  47. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  48. package/dist/feature-libraries/default-schema/schemaChecker.js +1 -1
  49. package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  51. package/dist/feature-libraries/flex-tree/lazyField.js +4 -3
  52. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  53. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyNode.js +5 -4
  55. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  56. package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  57. package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  58. package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  59. package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  60. package/dist/feature-libraries/modular-schema/comparison.js +6 -4
  61. package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
  62. package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  63. package/dist/feature-libraries/modular-schema/isNeverTree.js +4 -4
  64. package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  65. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  66. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  67. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  68. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +5 -5
  69. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  70. package/dist/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  71. package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  72. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  73. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  74. package/dist/feature-libraries/schema-index/codec.js +1 -1
  75. package/dist/feature-libraries/schema-index/codec.js.map +1 -1
  76. package/dist/feature-libraries/sequence-field/compose.js +1 -1
  77. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  78. package/dist/feature-libraries/sequence-field/invert.js +1 -1
  79. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  80. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  81. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  82. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  83. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  84. package/dist/feature-libraries/sequence-field/utils.js +1 -1
  85. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  86. package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  87. package/dist/feature-libraries/treeCursorUtils.js +6 -4
  88. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  89. package/dist/index.d.ts +4 -2
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +10 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/jsonDomainSchema.d.ts +113 -0
  94. package/dist/jsonDomainSchema.d.ts.map +1 -0
  95. package/dist/jsonDomainSchema.js +101 -0
  96. package/dist/jsonDomainSchema.js.map +1 -0
  97. package/dist/legacy.d.ts +15 -0
  98. package/dist/packageVersion.d.ts +1 -1
  99. package/dist/packageVersion.js +1 -1
  100. package/dist/packageVersion.js.map +1 -1
  101. package/dist/public.d.ts +15 -0
  102. package/dist/serializableDomainSchema.d.ts +108 -0
  103. package/dist/serializableDomainSchema.d.ts.map +1 -0
  104. package/dist/serializableDomainSchema.js +90 -0
  105. package/dist/serializableDomainSchema.js.map +1 -0
  106. package/dist/shared-tree/index.d.ts +1 -1
  107. package/dist/shared-tree/index.d.ts.map +1 -1
  108. package/dist/shared-tree/index.js.map +1 -1
  109. package/dist/shared-tree/schematizeTree.js +1 -1
  110. package/dist/shared-tree/schematizeTree.js.map +1 -1
  111. package/dist/shared-tree/sharedTree.d.ts +35 -19
  112. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  113. package/dist/shared-tree/sharedTree.js +14 -17
  114. package/dist/shared-tree/sharedTree.js.map +1 -1
  115. package/dist/shared-tree/sharedTreeChangeFamily.js +1 -1
  116. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  117. package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
  118. package/dist/shared-tree/treeApiAlpha.js +4 -4
  119. package/dist/shared-tree/treeApiAlpha.js.map +1 -1
  120. package/dist/shared-tree/treeCheckout.js +1 -1
  121. package/dist/shared-tree/treeCheckout.js.map +1 -1
  122. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  123. package/dist/shared-tree-core/editManager.js +8 -7
  124. package/dist/shared-tree-core/editManager.js.map +1 -1
  125. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -2
  126. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  127. package/dist/shared-tree-core/sharedTreeCore.js +2 -2
  128. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  129. package/dist/simple-tree/api/component.d.ts +30 -0
  130. package/dist/simple-tree/api/component.d.ts.map +1 -0
  131. package/dist/simple-tree/api/component.js +26 -0
  132. package/dist/simple-tree/api/component.js.map +1 -0
  133. package/dist/simple-tree/api/customTree.js +3 -3
  134. package/dist/simple-tree/api/customTree.js.map +1 -1
  135. package/dist/simple-tree/api/index.d.ts +2 -1
  136. package/dist/simple-tree/api/index.d.ts.map +1 -1
  137. package/dist/simple-tree/api/index.js +3 -1
  138. package/dist/simple-tree/api/index.js.map +1 -1
  139. package/dist/simple-tree/api/schemaCreationUtilities.js +1 -1
  140. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  141. package/dist/simple-tree/api/schemaFactory.d.ts +0 -8
  142. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  143. package/dist/simple-tree/api/schemaFactory.js +4 -25
  144. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  145. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  146. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  147. package/dist/simple-tree/api/simpleTreeIndex.js +3 -3
  148. package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
  149. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  150. package/dist/simple-tree/api/tree.js +2 -3
  151. package/dist/simple-tree/api/tree.js.map +1 -1
  152. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  153. package/dist/simple-tree/api/treeNodeApi.js +7 -18
  154. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  155. package/dist/simple-tree/api/typesUnsafe.d.ts +127 -19
  156. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  157. package/dist/simple-tree/api/typesUnsafe.js +17 -0
  158. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  159. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  160. package/dist/simple-tree/api/verboseTree.js +5 -4
  161. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  162. package/dist/simple-tree/api/view.js +1 -1
  163. package/dist/simple-tree/api/view.js.map +1 -1
  164. package/dist/simple-tree/arrayNode.d.ts +1 -1
  165. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  166. package/dist/simple-tree/arrayNode.js +2 -2
  167. package/dist/simple-tree/arrayNode.js.map +1 -1
  168. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  169. package/dist/simple-tree/core/getOrCreateNode.js +1 -1
  170. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
  171. package/dist/simple-tree/core/schemaCaching.js +1 -1
  172. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  173. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  174. package/dist/simple-tree/core/treeNodeKernel.js +6 -6
  175. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  176. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  177. package/dist/simple-tree/core/unhydratedFlexTree.js +5 -5
  178. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  179. package/dist/simple-tree/flexList.d.ts +4 -5
  180. package/dist/simple-tree/flexList.d.ts.map +1 -1
  181. package/dist/simple-tree/flexList.js +1 -14
  182. package/dist/simple-tree/flexList.js.map +1 -1
  183. package/dist/simple-tree/index.d.ts +4 -4
  184. package/dist/simple-tree/index.d.ts.map +1 -1
  185. package/dist/simple-tree/index.js +6 -2
  186. package/dist/simple-tree/index.js.map +1 -1
  187. package/dist/simple-tree/objectNode.d.ts +25 -2
  188. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  189. package/dist/simple-tree/objectNode.js +4 -2
  190. package/dist/simple-tree/objectNode.js.map +1 -1
  191. package/dist/simple-tree/proxies.js +1 -1
  192. package/dist/simple-tree/proxies.js.map +1 -1
  193. package/dist/simple-tree/schemaTypes.d.ts +211 -9
  194. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  195. package/dist/simple-tree/schemaTypes.js +83 -2
  196. package/dist/simple-tree/schemaTypes.js.map +1 -1
  197. package/dist/simple-tree/toMapTree.js +3 -3
  198. package/dist/simple-tree/toMapTree.js.map +1 -1
  199. package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
  200. package/dist/simple-tree/toStoredSchema.js +3 -6
  201. package/dist/simple-tree/toStoredSchema.js.map +1 -1
  202. package/dist/simple-tree/treeNodeValid.d.ts +7 -1
  203. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  204. package/dist/simple-tree/treeNodeValid.js +18 -7
  205. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  206. package/dist/util/idAllocator.js +1 -1
  207. package/dist/util/idAllocator.js.map +1 -1
  208. package/dist/util/index.d.ts +2 -2
  209. package/dist/util/index.d.ts.map +1 -1
  210. package/dist/util/index.js +4 -4
  211. package/dist/util/index.js.map +1 -1
  212. package/dist/util/nestedMap.d.ts +2 -10
  213. package/dist/util/nestedMap.d.ts.map +1 -1
  214. package/dist/util/nestedMap.js +9 -28
  215. package/dist/util/nestedMap.js.map +1 -1
  216. package/dist/util/utils.d.ts +7 -6
  217. package/dist/util/utils.d.ts.map +1 -1
  218. package/dist/util/utils.js +18 -13
  219. package/dist/util/utils.js.map +1 -1
  220. package/lib/alpha.d.ts +20 -0
  221. package/lib/beta.d.ts +15 -0
  222. package/lib/codec/codec.js +3 -3
  223. package/lib/codec/codec.js.map +1 -1
  224. package/lib/codec/discriminatedUnions.d.ts.map +1 -1
  225. package/lib/codec/discriminatedUnions.js +1 -1
  226. package/lib/codec/discriminatedUnions.js.map +1 -1
  227. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  228. package/lib/core/schema-stored/schema.js +3 -3
  229. package/lib/core/schema-stored/schema.js.map +1 -1
  230. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  231. package/lib/core/tree/anchorSet.js +5 -4
  232. package/lib/core/tree/anchorSet.js.map +1 -1
  233. package/lib/core/tree/treeTextFormat.js +1 -1
  234. package/lib/core/tree/treeTextFormat.js.map +1 -1
  235. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  236. package/lib/feature-libraries/chunked-forest/basicChunk.js +11 -8
  237. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  238. package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -2
  239. package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
  240. package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -3
  241. package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
  242. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
  243. package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
  244. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  245. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
  246. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  247. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
  248. package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
  249. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
  250. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
  251. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
  252. package/lib/feature-libraries/chunked-forest/emptyChunk.js +14 -14
  253. package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
  254. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  255. package/lib/feature-libraries/chunked-forest/uniformChunk.js +6 -4
  256. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  257. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
  258. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  259. package/lib/feature-libraries/default-schema/schemaChecker.js +1 -1
  260. package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
  261. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  262. package/lib/feature-libraries/flex-tree/lazyField.js +4 -3
  263. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  264. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  265. package/lib/feature-libraries/flex-tree/lazyNode.js +5 -4
  266. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  267. package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
  268. package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
  269. package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
  270. package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
  271. package/lib/feature-libraries/modular-schema/comparison.js +6 -4
  272. package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
  273. package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
  274. package/lib/feature-libraries/modular-schema/isNeverTree.js +4 -4
  275. package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
  276. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
  277. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  278. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  279. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +6 -6
  280. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  281. package/lib/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
  282. package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
  283. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  284. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  285. package/lib/feature-libraries/schema-index/codec.js +1 -1
  286. package/lib/feature-libraries/schema-index/codec.js.map +1 -1
  287. package/lib/feature-libraries/sequence-field/compose.js +1 -1
  288. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  289. package/lib/feature-libraries/sequence-field/invert.js +1 -1
  290. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  291. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
  292. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
  293. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
  294. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  295. package/lib/feature-libraries/sequence-field/utils.js +1 -1
  296. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  297. package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
  298. package/lib/feature-libraries/treeCursorUtils.js +6 -4
  299. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  300. package/lib/index.d.ts +4 -2
  301. package/lib/index.d.ts.map +1 -1
  302. package/lib/index.js +3 -1
  303. package/lib/index.js.map +1 -1
  304. package/lib/jsonDomainSchema.d.ts +113 -0
  305. package/lib/jsonDomainSchema.d.ts.map +1 -0
  306. package/lib/jsonDomainSchema.js +98 -0
  307. package/lib/jsonDomainSchema.js.map +1 -0
  308. package/lib/legacy.d.ts +15 -0
  309. package/lib/packageVersion.d.ts +1 -1
  310. package/lib/packageVersion.js +1 -1
  311. package/lib/packageVersion.js.map +1 -1
  312. package/lib/public.d.ts +15 -0
  313. package/lib/serializableDomainSchema.d.ts +108 -0
  314. package/lib/serializableDomainSchema.d.ts.map +1 -0
  315. package/lib/serializableDomainSchema.js +87 -0
  316. package/lib/serializableDomainSchema.js.map +1 -0
  317. package/lib/shared-tree/index.d.ts +1 -1
  318. package/lib/shared-tree/index.d.ts.map +1 -1
  319. package/lib/shared-tree/index.js.map +1 -1
  320. package/lib/shared-tree/schematizeTree.js +1 -1
  321. package/lib/shared-tree/schematizeTree.js.map +1 -1
  322. package/lib/shared-tree/sharedTree.d.ts +35 -19
  323. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  324. package/lib/shared-tree/sharedTree.js +15 -18
  325. package/lib/shared-tree/sharedTree.js.map +1 -1
  326. package/lib/shared-tree/sharedTreeChangeFamily.js +1 -1
  327. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  328. package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
  329. package/lib/shared-tree/treeApiAlpha.js +4 -4
  330. package/lib/shared-tree/treeApiAlpha.js.map +1 -1
  331. package/lib/shared-tree/treeCheckout.js +1 -1
  332. package/lib/shared-tree/treeCheckout.js.map +1 -1
  333. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  334. package/lib/shared-tree-core/editManager.js +8 -7
  335. package/lib/shared-tree-core/editManager.js.map +1 -1
  336. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -2
  337. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  338. package/lib/shared-tree-core/sharedTreeCore.js +2 -2
  339. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  340. package/lib/simple-tree/api/component.d.ts +30 -0
  341. package/lib/simple-tree/api/component.d.ts.map +1 -0
  342. package/lib/simple-tree/api/component.js +23 -0
  343. package/lib/simple-tree/api/component.js.map +1 -0
  344. package/lib/simple-tree/api/customTree.js +3 -3
  345. package/lib/simple-tree/api/customTree.js.map +1 -1
  346. package/lib/simple-tree/api/index.d.ts +2 -1
  347. package/lib/simple-tree/api/index.d.ts.map +1 -1
  348. package/lib/simple-tree/api/index.js +1 -0
  349. package/lib/simple-tree/api/index.js.map +1 -1
  350. package/lib/simple-tree/api/schemaCreationUtilities.js +1 -1
  351. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  352. package/lib/simple-tree/api/schemaFactory.d.ts +0 -8
  353. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  354. package/lib/simple-tree/api/schemaFactory.js +2 -22
  355. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  356. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  357. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  358. package/lib/simple-tree/api/simpleTreeIndex.js +3 -3
  359. package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
  360. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  361. package/lib/simple-tree/api/tree.js +3 -4
  362. package/lib/simple-tree/api/tree.js.map +1 -1
  363. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  364. package/lib/simple-tree/api/treeNodeApi.js +9 -20
  365. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  366. package/lib/simple-tree/api/typesUnsafe.d.ts +127 -19
  367. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  368. package/lib/simple-tree/api/typesUnsafe.js +15 -1
  369. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  370. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  371. package/lib/simple-tree/api/verboseTree.js +5 -4
  372. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  373. package/lib/simple-tree/api/view.js +1 -1
  374. package/lib/simple-tree/api/view.js.map +1 -1
  375. package/lib/simple-tree/arrayNode.d.ts +1 -1
  376. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  377. package/lib/simple-tree/arrayNode.js +2 -2
  378. package/lib/simple-tree/arrayNode.js.map +1 -1
  379. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
  380. package/lib/simple-tree/core/getOrCreateNode.js +1 -1
  381. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
  382. package/lib/simple-tree/core/schemaCaching.js +1 -1
  383. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  384. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  385. package/lib/simple-tree/core/treeNodeKernel.js +6 -6
  386. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  387. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  388. package/lib/simple-tree/core/unhydratedFlexTree.js +5 -5
  389. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  390. package/lib/simple-tree/flexList.d.ts +4 -5
  391. package/lib/simple-tree/flexList.d.ts.map +1 -1
  392. package/lib/simple-tree/flexList.js +0 -12
  393. package/lib/simple-tree/flexList.js.map +1 -1
  394. package/lib/simple-tree/index.d.ts +4 -4
  395. package/lib/simple-tree/index.d.ts.map +1 -1
  396. package/lib/simple-tree/index.js +2 -2
  397. package/lib/simple-tree/index.js.map +1 -1
  398. package/lib/simple-tree/objectNode.d.ts +25 -2
  399. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  400. package/lib/simple-tree/objectNode.js +4 -2
  401. package/lib/simple-tree/objectNode.js.map +1 -1
  402. package/lib/simple-tree/proxies.js +1 -1
  403. package/lib/simple-tree/proxies.js.map +1 -1
  404. package/lib/simple-tree/schemaTypes.d.ts +211 -9
  405. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  406. package/lib/simple-tree/schemaTypes.js +81 -3
  407. package/lib/simple-tree/schemaTypes.js.map +1 -1
  408. package/lib/simple-tree/toMapTree.js +3 -3
  409. package/lib/simple-tree/toMapTree.js.map +1 -1
  410. package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
  411. package/lib/simple-tree/toStoredSchema.js +5 -8
  412. package/lib/simple-tree/toStoredSchema.js.map +1 -1
  413. package/lib/simple-tree/treeNodeValid.d.ts +7 -1
  414. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  415. package/lib/simple-tree/treeNodeValid.js +18 -7
  416. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  417. package/lib/util/idAllocator.js +1 -1
  418. package/lib/util/idAllocator.js.map +1 -1
  419. package/lib/util/index.d.ts +2 -2
  420. package/lib/util/index.d.ts.map +1 -1
  421. package/lib/util/index.js +2 -2
  422. package/lib/util/index.js.map +1 -1
  423. package/lib/util/nestedMap.d.ts +2 -10
  424. package/lib/util/nestedMap.d.ts.map +1 -1
  425. package/lib/util/nestedMap.js +5 -23
  426. package/lib/util/nestedMap.js.map +1 -1
  427. package/lib/util/utils.d.ts +7 -6
  428. package/lib/util/utils.d.ts.map +1 -1
  429. package/lib/util/utils.js +15 -11
  430. package/lib/util/utils.js.map +1 -1
  431. package/package.json +27 -23
  432. package/src/codec/codec.ts +3 -3
  433. package/src/codec/discriminatedUnions.ts +2 -1
  434. package/src/core/schema-stored/schema.ts +5 -3
  435. package/src/core/tree/anchorSet.ts +5 -4
  436. package/src/core/tree/treeTextFormat.ts +1 -1
  437. package/src/feature-libraries/chunked-forest/basicChunk.ts +11 -8
  438. package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
  439. package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
  440. package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -2
  441. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +4 -3
  442. package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +2 -2
  443. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +4 -3
  444. package/src/feature-libraries/chunked-forest/emptyChunk.ts +14 -14
  445. package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
  446. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -1
  447. package/src/feature-libraries/default-schema/schemaChecker.ts +1 -1
  448. package/src/feature-libraries/flex-tree/lazyField.ts +6 -8
  449. package/src/feature-libraries/flex-tree/lazyNode.ts +6 -4
  450. package/src/feature-libraries/indexing/anchorTreeIndex.ts +2 -1
  451. package/src/feature-libraries/modular-schema/comparison.ts +7 -5
  452. package/src/feature-libraries/modular-schema/isNeverTree.ts +6 -4
  453. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -4
  454. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +7 -6
  455. package/src/feature-libraries/node-key/mockNodeKeyManager.ts +1 -1
  456. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  457. package/src/feature-libraries/schema-index/codec.ts +1 -1
  458. package/src/feature-libraries/sequence-field/compose.ts +1 -1
  459. package/src/feature-libraries/sequence-field/invert.ts +1 -1
  460. package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
  461. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
  462. package/src/feature-libraries/sequence-field/utils.ts +1 -1
  463. package/src/feature-libraries/treeCursorUtils.ts +6 -4
  464. package/src/index.ts +22 -1
  465. package/src/jsonDomainSchema.ts +129 -0
  466. package/src/packageVersion.ts +1 -1
  467. package/src/serializableDomainSchema.ts +121 -0
  468. package/src/shared-tree/index.ts +0 -1
  469. package/src/shared-tree/schematizeTree.ts +1 -1
  470. package/src/shared-tree/sharedTree.ts +26 -41
  471. package/src/shared-tree/sharedTreeChangeFamily.ts +1 -1
  472. package/src/shared-tree/treeApiAlpha.ts +12 -4
  473. package/src/shared-tree/treeCheckout.ts +1 -1
  474. package/src/shared-tree-core/editManager.ts +8 -7
  475. package/src/shared-tree-core/sharedTreeCore.ts +6 -4
  476. package/src/simple-tree/api/component.ts +42 -0
  477. package/src/simple-tree/api/customTree.ts +3 -3
  478. package/src/simple-tree/api/index.ts +7 -0
  479. package/src/simple-tree/api/schemaCreationUtilities.ts +1 -1
  480. package/src/simple-tree/api/schemaFactory.ts +1 -28
  481. package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -1
  482. package/src/simple-tree/api/simpleTreeIndex.ts +3 -3
  483. package/src/simple-tree/api/tree.ts +3 -3
  484. package/src/simple-tree/api/treeNodeApi.ts +10 -18
  485. package/src/simple-tree/api/typesUnsafe.ts +193 -18
  486. package/src/simple-tree/api/verboseTree.ts +8 -4
  487. package/src/simple-tree/api/view.ts +1 -1
  488. package/src/simple-tree/arrayNode.ts +2 -2
  489. package/src/simple-tree/core/getOrCreateNode.ts +2 -1
  490. package/src/simple-tree/core/schemaCaching.ts +1 -1
  491. package/src/simple-tree/core/treeNodeKernel.ts +9 -6
  492. package/src/simple-tree/core/unhydratedFlexTree.ts +7 -5
  493. package/src/simple-tree/flexList.ts +4 -14
  494. package/src/simple-tree/index.ts +25 -1
  495. package/src/simple-tree/objectNode.ts +50 -5
  496. package/src/simple-tree/proxies.ts +1 -1
  497. package/src/simple-tree/schemaTypes.ts +322 -23
  498. package/src/simple-tree/toMapTree.ts +3 -3
  499. package/src/simple-tree/toStoredSchema.ts +5 -7
  500. package/src/simple-tree/treeNodeValid.ts +21 -7
  501. package/src/util/idAllocator.ts +1 -1
  502. package/src/util/index.ts +2 -2
  503. package/src/util/nestedMap.ts +9 -33
  504. package/src/util/utils.ts +20 -12
@@ -58,15 +58,17 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
58
58
  instance: TreeNodeValid<T>,
59
59
  input: T,
60
60
  ): UnhydratedFlexTreeNode {
61
- return fail("Schema must override buildRawNode");
61
+ return fail(0xae4 /* Schema must override buildRawNode */);
62
62
  }
63
63
 
64
64
  /**
65
65
  * Schema classes can override to provide a callback that is called once when the first node is constructed.
66
66
  * This is a good place to perform extra validation and cache schema derived data needed for the implementation of the node.
67
+ * @remarks
68
+ * It is valid to dereference LazyItem schema references in this function (or anything that runs after it).
67
69
  */
68
70
  protected static oneTimeSetup<T>(this: typeof TreeNodeValid<T>): Context {
69
- fail("Missing oneTimeSetup");
71
+ fail(0xae5 /* Missing oneTimeSetup */);
70
72
  }
71
73
 
72
74
  /**
@@ -119,6 +121,9 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
119
121
  return this.constructorCached;
120
122
  }
121
123
 
124
+ // If users trying to diagnose the cause of this error becomes a common issue, more information could be captured.
125
+ // The call stack to when a schema is first marked most derived could be captured in debug builds and stored in the `MostDerivedData` object:
126
+ // This could then be included in the error to aid in debugging this error.
122
127
  throw new UsageError(
123
128
  `Two schema classes were used (${this.name} and ${
124
129
  this.constructorCached.constructor.name
@@ -143,7 +148,7 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
143
148
  }
144
149
 
145
150
  /**
146
- * @see {@link TreeNodeSchemaCore.createFromInsertable}.
151
+ * See {@link TreeNodeSchemaCore.createFromInsertable}.
147
152
  */
148
153
  public static createFromInsertable<TInput, TOut, TThis extends new (args: TInput) => TOut>(
149
154
  this: TThis,
@@ -152,13 +157,22 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
152
157
  return new this(input);
153
158
  }
154
159
 
160
+ /**
161
+ * Idempotent initialization function that pre-caches data and can dereference lazy schema references.
162
+ */
163
+ public static oneTimeInitialize(
164
+ this: typeof TreeNodeValid & TreeNodeSchema,
165
+ ): Required<MostDerivedData> {
166
+ const cache = this.markMostDerived();
167
+ cache.oneTimeInitialized ??= this.oneTimeSetup();
168
+ // Typescript fails to narrow the type of `oneTimeInitialized` to `Context` here, so use a cast:
169
+ return cache as MostDerivedData & { oneTimeInitialized: Context };
170
+ }
171
+
155
172
  public constructor(input: TInput | InternalTreeNode) {
156
173
  super(privateToken);
157
174
  const schema = this.constructor as typeof TreeNodeValid & TreeNodeSchema;
158
- const cache = schema.markMostDerived();
159
- if (cache.oneTimeInitialized === undefined) {
160
- cache.oneTimeInitialized = schema.oneTimeSetup();
161
- }
175
+ const cache = schema.oneTimeInitialize();
162
176
 
163
177
  if (isTreeNode(input)) {
164
178
  // TODO: update this once we have better support for deep-copying and move operations.
@@ -44,6 +44,6 @@ export function idAllocatorFromState(state: IdAllocationState): IdAllocator {
44
44
  }
45
45
 
46
46
  export const fakeIdAllocator: IdAllocator = {
47
- allocate: () => fail("Should not allocate IDs"),
47
+ allocate: () => fail(0xae6 /* Should not allocate IDs */),
48
48
  getMaxId: () => 0,
49
49
  };
package/src/util/index.ts CHANGED
@@ -19,8 +19,6 @@ export {
19
19
  } from "./opaque.js";
20
20
  export {
21
21
  deleteFromNestedMap,
22
- getOrAddInMap,
23
- getOrAddInMapLazy,
24
22
  getOrAddInNestedMap,
25
23
  getOrDefaultInNestedMap,
26
24
  forEachInNestedMap,
@@ -34,6 +32,7 @@ export {
34
32
  mapNestedMap,
35
33
  nestedMapToFlatList,
36
34
  nestedMapFromFlatList,
35
+ getOrCreateInNestedMap,
37
36
  } from "./nestedMap.js";
38
37
  export { addToNestedSet, type NestedSet, nestedSetContains } from "./nestedSet.js";
39
38
  export { type OffsetList, OffsetListFactory } from "./offsetList.js";
@@ -96,6 +95,7 @@ export {
96
95
  hasSingle,
97
96
  defineLazyCachedProperty,
98
97
  copyPropertyIfDefined as copyProperty,
98
+ getOrAddInMap,
99
99
  } from "./utils.js";
100
100
  export { ReferenceCountedBase, type ReferenceCounted } from "./referenceCounting.js";
101
101
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { oob } from "@fluidframework/core-utils/internal";
7
7
 
8
- import type { MapGetSet } from "./utils.js";
8
+ import { getOrAddInMap, getOrCreate } from "./utils.js";
9
9
 
10
10
  /**
11
11
  * A dictionary whose values are keyed off of two objects (key1, key2).
@@ -87,40 +87,16 @@ export function setInNestedMap<Key1, Key2, Value>(
87
87
  }
88
88
 
89
89
  /**
90
- * Sets the value at `key` in map to value if not already present.
91
- * Returns the value at `key` after setting it.
92
- * This is equivalent to a get or default that adds the default to the map.
90
+ * {@link getOrCreate} for {@link NestedMap}.
93
91
  */
94
- export function getOrAddInMap<Key, Value>(
95
- map: MapGetSet<Key, Value>,
96
- key: Key,
97
- value: Value,
98
- ): Value {
99
- const currentValue = map.get(key);
100
- if (currentValue !== undefined) {
101
- return currentValue;
102
- }
103
- map.set(key, value);
104
- return value;
105
- }
106
-
107
- /**
108
- * Sets the value at `key` in `map` to `generateValue()` if not already present.
109
- * Returns the value at `key` after setting it.
110
- */
111
- export function getOrAddInMapLazy<Key, Value>(
112
- map: MapGetSet<Key, Value>,
113
- key: Key,
114
- generateValue: () => Value,
92
+ export function getOrCreateInNestedMap<Key1, Key2, Value>(
93
+ map: NestedMap<Key1, Key2, Value>,
94
+ key1: Key1,
95
+ key2: Key2,
96
+ defaultValue: (key1: Key1, key2: Key2) => Value,
115
97
  ): Value {
116
- const currentValue = map.get(key);
117
- if (currentValue !== undefined) {
118
- return currentValue;
119
- }
120
-
121
- const value = generateValue();
122
- map.set(key, value);
123
- return value;
98
+ const innerMap = getOrAddInMap(map, key1, new Map<Key2, Value>());
99
+ return getOrCreate(innerMap, key2, (): Value => defaultValue(key1, key2));
124
100
  }
125
101
 
126
102
  /**
package/src/util/utils.ts CHANGED
@@ -47,18 +47,8 @@ export function asMutable<T>(readonly: T): Mutable<T> {
47
47
 
48
48
  export const clone = structuredClone;
49
49
 
50
- /**
51
- * Throw an error with a constant message.
52
- * @remarks
53
- * Works like {@link @fluidframework/core-utils/internal#assert}.
54
- */
55
- export function fail(message: string | number): never {
56
- // Declaring this here aliased to a different name avoids the assert tagging objecting to the usages of `assert` below.
57
- // Since users of `fail` do the assert message tagging instead, suppressing tagging errors here makes sense.
58
- const assertNoTag: (condition: boolean, message: string | number) => asserts condition =
59
- assert;
60
- assertNoTag(false, message);
61
- }
50
+ // TODO: update usages of this to use @fluidframework/core-utils/internal directly.
51
+ export { fail } from "@fluidframework/core-utils/internal";
62
52
 
63
53
  /**
64
54
  * Checks whether or not the given object is a `readonly` array.
@@ -177,6 +167,24 @@ export function compareSets<T>({
177
167
  return true;
178
168
  }
179
169
 
170
+ /**
171
+ * Sets the value at `key` in map to value if not already present.
172
+ * Returns the value at `key` after setting it.
173
+ * This is equivalent to a get or default that adds the default to the map.
174
+ */
175
+ export function getOrAddInMap<Key, Value>(
176
+ map: MapGetSet<Key, Value>,
177
+ key: Key,
178
+ value: Value,
179
+ ): Value {
180
+ const currentValue = map.get(key);
181
+ if (currentValue !== undefined) {
182
+ return currentValue;
183
+ }
184
+ map.set(key, value);
185
+ return value;
186
+ }
187
+
180
188
  /**
181
189
  * Retrieve a value from a map with the given key, or create a new entry if the key is not in the map.
182
190
  * @param map - The map to query/update