@fluidframework/tree 2.70.0-360374 → 2.70.0-361092

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 (200) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/api-report/tree.alpha.api.md +31 -27
  3. package/api-report/tree.beta.api.md +36 -1
  4. package/api-report/tree.legacy.beta.api.md +36 -1
  5. package/dist/alpha.d.ts +4 -4
  6. package/dist/beta.d.ts +4 -0
  7. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +2 -2
  8. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  9. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +9 -10
  10. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  11. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -4
  12. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  13. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  14. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +0 -1
  15. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  16. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -14
  17. package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  18. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +1 -1
  19. package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  20. package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -2
  21. package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  22. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +9 -7
  23. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  24. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +34 -11
  25. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  26. package/dist/legacy.d.ts +4 -0
  27. package/dist/packageVersion.d.ts +1 -1
  28. package/dist/packageVersion.js +1 -1
  29. package/dist/packageVersion.js.map +1 -1
  30. package/dist/serializableDomainSchema.d.ts +12 -10
  31. package/dist/serializableDomainSchema.d.ts.map +1 -1
  32. package/dist/serializableDomainSchema.js +7 -7
  33. package/dist/serializableDomainSchema.js.map +1 -1
  34. package/dist/shared-tree/sharedTree.d.ts +1 -1
  35. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  36. package/dist/shared-tree/sharedTree.js +2 -2
  37. package/dist/shared-tree/sharedTree.js.map +1 -1
  38. package/dist/simple-tree/api/schemaFactory.d.ts +1 -1
  39. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  40. package/dist/simple-tree/api/schemaFactory.js +17 -13
  41. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  42. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  43. package/dist/simple-tree/api/schemaFactoryAlpha.js +8 -8
  44. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  45. package/dist/simple-tree/api/schemaFactoryBeta.d.ts +2 -1
  46. package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  47. package/dist/simple-tree/api/schemaFactoryBeta.js +8 -7
  48. package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  49. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  50. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  51. package/dist/simple-tree/core/allowedTypes.d.ts +6 -2
  52. package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
  53. package/dist/simple-tree/core/allowedTypes.js +2 -2
  54. package/dist/simple-tree/core/allowedTypes.js.map +1 -1
  55. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
  56. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  57. package/dist/simple-tree/node-kinds/array/arrayNode.js +3 -2
  58. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  59. package/dist/simple-tree/node-kinds/map/mapNode.d.ts +4 -3
  60. package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  61. package/dist/simple-tree/node-kinds/map/mapNode.js +3 -2
  62. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  63. package/dist/simple-tree/node-kinds/object/objectNode.d.ts +4 -3
  64. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  65. package/dist/simple-tree/node-kinds/object/objectNode.js +5 -5
  66. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  67. package/dist/simple-tree/node-kinds/record/recordNode.d.ts +3 -10
  68. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  69. package/dist/simple-tree/node-kinds/record/recordNode.js +3 -2
  70. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  71. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  72. package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  73. package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  74. package/dist/tableSchema.d.ts +37 -24
  75. package/dist/tableSchema.d.ts.map +1 -1
  76. package/dist/tableSchema.js +81 -54
  77. package/dist/tableSchema.js.map +1 -1
  78. package/dist/treeFactory.d.ts.map +1 -1
  79. package/dist/treeFactory.js +1 -1
  80. package/dist/treeFactory.js.map +1 -1
  81. package/dist/util/breakable.js +3 -3
  82. package/dist/util/breakable.js.map +1 -1
  83. package/dist/util/index.d.ts +1 -1
  84. package/dist/util/index.d.ts.map +1 -1
  85. package/dist/util/index.js +2 -2
  86. package/dist/util/index.js.map +1 -1
  87. package/dist/util/utils.d.ts +18 -6
  88. package/dist/util/utils.d.ts.map +1 -1
  89. package/dist/util/utils.js +23 -16
  90. package/dist/util/utils.js.map +1 -1
  91. package/lib/alpha.d.ts +4 -4
  92. package/lib/beta.d.ts +4 -0
  93. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +2 -2
  94. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
  95. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +9 -10
  96. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  97. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -4
  98. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  99. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  100. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +0 -1
  101. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
  102. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +2 -12
  103. package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
  104. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +1 -1
  105. package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
  106. package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -2
  107. package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
  108. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +9 -7
  109. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  110. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +34 -11
  111. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  112. package/lib/legacy.d.ts +4 -0
  113. package/lib/packageVersion.d.ts +1 -1
  114. package/lib/packageVersion.js +1 -1
  115. package/lib/packageVersion.js.map +1 -1
  116. package/lib/serializableDomainSchema.d.ts +12 -10
  117. package/lib/serializableDomainSchema.d.ts.map +1 -1
  118. package/lib/serializableDomainSchema.js +8 -8
  119. package/lib/serializableDomainSchema.js.map +1 -1
  120. package/lib/shared-tree/sharedTree.d.ts +1 -1
  121. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  122. package/lib/shared-tree/sharedTree.js +2 -2
  123. package/lib/shared-tree/sharedTree.js.map +1 -1
  124. package/lib/simple-tree/api/schemaFactory.d.ts +1 -1
  125. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  126. package/lib/simple-tree/api/schemaFactory.js +18 -14
  127. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  128. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  129. package/lib/simple-tree/api/schemaFactoryAlpha.js +8 -8
  130. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  131. package/lib/simple-tree/api/schemaFactoryBeta.d.ts +2 -1
  132. package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
  133. package/lib/simple-tree/api/schemaFactoryBeta.js +8 -7
  134. package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
  135. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
  136. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  137. package/lib/simple-tree/core/allowedTypes.d.ts +6 -2
  138. package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
  139. package/lib/simple-tree/core/allowedTypes.js +2 -2
  140. package/lib/simple-tree/core/allowedTypes.js.map +1 -1
  141. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
  142. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  143. package/lib/simple-tree/node-kinds/array/arrayNode.js +3 -2
  144. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  145. package/lib/simple-tree/node-kinds/map/mapNode.d.ts +4 -3
  146. package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
  147. package/lib/simple-tree/node-kinds/map/mapNode.js +3 -2
  148. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  149. package/lib/simple-tree/node-kinds/object/objectNode.d.ts +4 -3
  150. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  151. package/lib/simple-tree/node-kinds/object/objectNode.js +5 -5
  152. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  153. package/lib/simple-tree/node-kinds/record/recordNode.d.ts +3 -10
  154. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  155. package/lib/simple-tree/node-kinds/record/recordNode.js +3 -2
  156. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  157. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
  158. package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
  159. package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
  160. package/lib/tableSchema.d.ts +37 -24
  161. package/lib/tableSchema.d.ts.map +1 -1
  162. package/lib/tableSchema.js +81 -54
  163. package/lib/tableSchema.js.map +1 -1
  164. package/lib/treeFactory.d.ts.map +1 -1
  165. package/lib/treeFactory.js +1 -1
  166. package/lib/treeFactory.js.map +1 -1
  167. package/lib/util/breakable.js +3 -3
  168. package/lib/util/breakable.js.map +1 -1
  169. package/lib/util/index.d.ts +1 -1
  170. package/lib/util/index.d.ts.map +1 -1
  171. package/lib/util/index.js +1 -1
  172. package/lib/util/index.js.map +1 -1
  173. package/lib/util/utils.d.ts +18 -6
  174. package/lib/util/utils.d.ts.map +1 -1
  175. package/lib/util/utils.js +21 -14
  176. package/lib/util/utils.js.map +1 -1
  177. package/package.json +24 -24
  178. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +16 -14
  179. package/src/feature-libraries/chunked-forest/codec/codecs.ts +8 -4
  180. package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +2 -13
  181. package/src/feature-libraries/forest-summary/forestSummarizer.ts +2 -0
  182. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +65 -13
  183. package/src/packageVersion.ts +1 -1
  184. package/src/serializableDomainSchema.ts +11 -11
  185. package/src/shared-tree/sharedTree.ts +2 -0
  186. package/src/simple-tree/api/schemaFactory.ts +38 -22
  187. package/src/simple-tree/api/schemaFactoryAlpha.ts +8 -17
  188. package/src/simple-tree/api/schemaFactoryBeta.ts +17 -23
  189. package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -1
  190. package/src/simple-tree/core/allowedTypes.ts +5 -17
  191. package/src/simple-tree/node-kinds/array/arrayNode.ts +5 -4
  192. package/src/simple-tree/node-kinds/map/mapNode.ts +5 -3
  193. package/src/simple-tree/node-kinds/object/objectNode.ts +9 -8
  194. package/src/simple-tree/node-kinds/record/recordNode.ts +6 -18
  195. package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +2 -2
  196. package/src/tableSchema.ts +143 -81
  197. package/src/treeFactory.ts +1 -0
  198. package/src/util/breakable.ts +4 -4
  199. package/src/util/index.ts +1 -1
  200. package/src/util/utils.ts +33 -17
package/src/util/index.ts CHANGED
@@ -78,7 +78,7 @@ export {
78
78
  assertNonNegativeSafeInteger,
79
79
  objectToMap,
80
80
  invertMap,
81
- oneFromSet,
81
+ oneFromIterable,
82
82
  type Named,
83
83
  compareNamed,
84
84
  disposeSymbol,
package/src/util/utils.ts CHANGED
@@ -105,6 +105,28 @@ export function iterableHasSome<T>(iterable: Iterable<T>): boolean {
105
105
  return iterable[Symbol.iterator]().next().done === false;
106
106
  }
107
107
 
108
+ /**
109
+ * Returns the value from the given iterable if it contains exactly one item, otherwise `undefined`.
110
+ * @remarks
111
+ * Note that if the iterable itself may contain `undefined` values,
112
+ * it is not possible to use this to distinguish between an iterable that contains exactly one `undefined` value and an iterable that contains zero or multiple values.
113
+ */
114
+ export function oneFromIterable<T>(items: Iterable<T>): T | undefined {
115
+ const iterator = items[Symbol.iterator]();
116
+ const first = iterator.next();
117
+ if (first.done === true) {
118
+ // Empty iterable case.
119
+ return undefined;
120
+ }
121
+ const second = iterator.next();
122
+ if (second.done === true) {
123
+ // Single item iterable case.
124
+ return first.value;
125
+ }
126
+ // Multiple item iterable case.
127
+ return undefined;
128
+ }
129
+
108
130
  /**
109
131
  * Returns true if and only if the given array has exactly one element.
110
132
  * @param array - The array to check.
@@ -291,7 +313,11 @@ export function count(iterable: Iterable<unknown>): number {
291
313
  * @remarks
292
314
  * This does not robustly forbid non json comparable data via type checking,
293
315
  * but instead mostly restricts access to it.
294
- * @alpha
316
+ *
317
+ * @privateRemarks
318
+ * TODO (before promoting to public): consider moving this to a more general location - this isn't SharedTree-specific.
319
+ *
320
+ * @beta
295
321
  */
296
322
  export type JsonCompatible<TExtra = never> =
297
323
  | string
@@ -305,10 +331,15 @@ export type JsonCompatible<TExtra = never> =
305
331
 
306
332
  /**
307
333
  * Use for Json object compatible data.
334
+ *
308
335
  * @remarks
309
336
  * This does not robustly forbid non json comparable data via type checking,
310
337
  * but instead mostly restricts access to it.
311
- * @alpha
338
+ *
339
+ * @privateRemarks
340
+ * TODO (before promoting to public): consider moving this to a more general location - this isn't SharedTree-specific.
341
+ *
342
+ * @beta
312
343
  */
313
344
  export type JsonCompatibleObject<TExtra = never> = { [P in string]?: JsonCompatible<TExtra> };
314
345
 
@@ -468,21 +499,6 @@ export function invertMap<Key, Value>(input: Map<Key, Value>): Map<Value, Key> {
468
499
  return result;
469
500
  }
470
501
 
471
- /**
472
- * Returns the value from `set` if it contains exactly one item, otherwise `undefined`.
473
- */
474
- export function oneFromSet<T>(set: ReadonlySet<T> | undefined): T | undefined {
475
- if (set === undefined) {
476
- return undefined;
477
- }
478
- if (set.size !== 1) {
479
- return undefined;
480
- }
481
- for (const item of set) {
482
- return item;
483
- }
484
- }
485
-
486
502
  /**
487
503
  * Type with a name describing what it is.
488
504
  * Typically used with values (like schema) that can be stored in a map, but in some representations have their name/key as a field.