@fluidframework/tree 2.4.0 → 2.5.0-302463

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 (241) hide show
  1. package/.vscode/settings.json +11 -1
  2. package/api-report/tree.alpha.api.md +148 -51
  3. package/api-report/tree.beta.api.md +83 -38
  4. package/api-report/tree.legacy.alpha.api.md +83 -38
  5. package/api-report/tree.legacy.public.api.md +83 -38
  6. package/api-report/tree.public.api.md +83 -38
  7. package/dist/alpha.d.ts +17 -2
  8. package/dist/beta.d.ts +6 -0
  9. package/dist/events/interop.d.ts +1 -7
  10. package/dist/events/interop.d.ts.map +1 -1
  11. package/dist/events/interop.js.map +1 -1
  12. package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
  13. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  14. package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  15. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  16. package/dist/feature-libraries/object-forest/objectForest.js +1 -1
  17. package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
  18. package/dist/feature-libraries/treeCursorUtils.js +2 -2
  19. package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/internalTypes.d.ts +1 -1
  25. package/dist/internalTypes.d.ts.map +1 -1
  26. package/dist/internalTypes.js.map +1 -1
  27. package/dist/legacy.d.ts +6 -0
  28. package/dist/packageVersion.d.ts +1 -1
  29. package/dist/packageVersion.d.ts.map +1 -1
  30. package/dist/packageVersion.js +1 -1
  31. package/dist/packageVersion.js.map +1 -1
  32. package/dist/public.d.ts +6 -0
  33. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  34. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  35. package/dist/shared-tree/sharedTree.d.ts +1 -1
  36. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  37. package/dist/shared-tree/sharedTree.js.map +1 -1
  38. package/dist/shared-tree/treeApi.d.ts +6 -6
  39. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  40. package/dist/shared-tree/treeApi.js.map +1 -1
  41. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  42. package/dist/shared-tree/treeCheckout.js +2 -0
  43. package/dist/shared-tree/treeCheckout.js.map +1 -1
  44. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  45. package/dist/shared-tree-core/editManager.js +12 -7
  46. package/dist/shared-tree-core/editManager.js.map +1 -1
  47. package/dist/simple-tree/api/create.d.ts +3 -3
  48. package/dist/simple-tree/api/create.d.ts.map +1 -1
  49. package/dist/simple-tree/api/create.js.map +1 -1
  50. package/dist/simple-tree/api/customTree.js +2 -2
  51. package/dist/simple-tree/api/customTree.js.map +1 -1
  52. package/dist/simple-tree/api/index.d.ts +3 -3
  53. package/dist/simple-tree/api/index.d.ts.map +1 -1
  54. package/dist/simple-tree/api/index.js +1 -2
  55. package/dist/simple-tree/api/index.js.map +1 -1
  56. package/dist/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  57. package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  58. package/dist/simple-tree/api/schemaCreationUtilities.js +31 -21
  59. package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  60. package/dist/simple-tree/api/schemaFactory.d.ts +5 -1
  61. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  62. package/dist/simple-tree/api/schemaFactory.js +4 -0
  63. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  64. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  65. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  66. package/dist/simple-tree/api/tree.d.ts +13 -4
  67. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  68. package/dist/simple-tree/api/tree.js.map +1 -1
  69. package/dist/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  70. package/dist/simple-tree/api/treeApiBeta.js.map +1 -1
  71. package/dist/simple-tree/api/typesUnsafe.d.ts +69 -17
  72. package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  73. package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
  74. package/dist/simple-tree/arrayNode.d.ts +14 -3
  75. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  76. package/dist/simple-tree/arrayNode.js.map +1 -1
  77. package/dist/simple-tree/core/treeNodeSchema.d.ts +10 -6
  78. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  79. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  80. package/dist/simple-tree/core/withType.d.ts +3 -1
  81. package/dist/simple-tree/core/withType.d.ts.map +1 -1
  82. package/dist/simple-tree/core/withType.js.map +1 -1
  83. package/dist/simple-tree/index.d.ts +4 -4
  84. package/dist/simple-tree/index.d.ts.map +1 -1
  85. package/dist/simple-tree/index.js +1 -2
  86. package/dist/simple-tree/index.js.map +1 -1
  87. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  88. package/dist/simple-tree/mapNode.js +3 -0
  89. package/dist/simple-tree/mapNode.js.map +1 -1
  90. package/dist/simple-tree/objectNode.d.ts +4 -2
  91. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  92. package/dist/simple-tree/objectNode.js.map +1 -1
  93. package/dist/simple-tree/schemaTypes.d.ts +168 -14
  94. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  95. package/dist/simple-tree/schemaTypes.js +6 -1
  96. package/dist/simple-tree/schemaTypes.js.map +1 -1
  97. package/dist/simple-tree/toMapTree.d.ts +4 -2
  98. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  99. package/dist/simple-tree/toMapTree.js.map +1 -1
  100. package/dist/util/index.d.ts +2 -1
  101. package/dist/util/index.d.ts.map +1 -1
  102. package/dist/util/index.js +3 -1
  103. package/dist/util/index.js.map +1 -1
  104. package/dist/util/typeUtils.d.ts +61 -0
  105. package/dist/util/typeUtils.d.ts.map +1 -1
  106. package/dist/util/typeUtils.js +27 -0
  107. package/dist/util/typeUtils.js.map +1 -1
  108. package/lib/alpha.d.ts +17 -2
  109. package/lib/beta.d.ts +6 -0
  110. package/lib/events/interop.d.ts +1 -7
  111. package/lib/events/interop.d.ts.map +1 -1
  112. package/lib/events/interop.js.map +1 -1
  113. package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
  114. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  115. package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
  116. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  117. package/lib/feature-libraries/object-forest/objectForest.js +1 -1
  118. package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
  119. package/lib/feature-libraries/treeCursorUtils.js +2 -2
  120. package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
  121. package/lib/index.d.ts +2 -2
  122. package/lib/index.d.ts.map +1 -1
  123. package/lib/index.js +1 -1
  124. package/lib/index.js.map +1 -1
  125. package/lib/internalTypes.d.ts +1 -1
  126. package/lib/internalTypes.d.ts.map +1 -1
  127. package/lib/internalTypes.js.map +1 -1
  128. package/lib/legacy.d.ts +6 -0
  129. package/lib/packageVersion.d.ts +1 -1
  130. package/lib/packageVersion.d.ts.map +1 -1
  131. package/lib/packageVersion.js +1 -1
  132. package/lib/packageVersion.js.map +1 -1
  133. package/lib/public.d.ts +6 -0
  134. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  135. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  136. package/lib/shared-tree/sharedTree.d.ts +1 -1
  137. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  138. package/lib/shared-tree/sharedTree.js.map +1 -1
  139. package/lib/shared-tree/treeApi.d.ts +6 -6
  140. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  141. package/lib/shared-tree/treeApi.js.map +1 -1
  142. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  143. package/lib/shared-tree/treeCheckout.js +2 -0
  144. package/lib/shared-tree/treeCheckout.js.map +1 -1
  145. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  146. package/lib/shared-tree-core/editManager.js +12 -7
  147. package/lib/shared-tree-core/editManager.js.map +1 -1
  148. package/lib/simple-tree/api/create.d.ts +3 -3
  149. package/lib/simple-tree/api/create.d.ts.map +1 -1
  150. package/lib/simple-tree/api/create.js.map +1 -1
  151. package/lib/simple-tree/api/customTree.js +2 -2
  152. package/lib/simple-tree/api/customTree.js.map +1 -1
  153. package/lib/simple-tree/api/index.d.ts +3 -3
  154. package/lib/simple-tree/api/index.d.ts.map +1 -1
  155. package/lib/simple-tree/api/index.js +1 -1
  156. package/lib/simple-tree/api/index.js.map +1 -1
  157. package/lib/simple-tree/api/schemaCreationUtilities.d.ts +33 -25
  158. package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
  159. package/lib/simple-tree/api/schemaCreationUtilities.js +30 -19
  160. package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
  161. package/lib/simple-tree/api/schemaFactory.d.ts +5 -1
  162. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  163. package/lib/simple-tree/api/schemaFactory.js +4 -0
  164. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  165. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +3 -3
  166. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  167. package/lib/simple-tree/api/tree.d.ts +13 -4
  168. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  169. package/lib/simple-tree/api/tree.js.map +1 -1
  170. package/lib/simple-tree/api/treeApiBeta.d.ts.map +1 -1
  171. package/lib/simple-tree/api/treeApiBeta.js.map +1 -1
  172. package/lib/simple-tree/api/typesUnsafe.d.ts +69 -17
  173. package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
  174. package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
  175. package/lib/simple-tree/arrayNode.d.ts +14 -3
  176. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  177. package/lib/simple-tree/arrayNode.js.map +1 -1
  178. package/lib/simple-tree/core/treeNodeSchema.d.ts +10 -6
  179. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  180. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  181. package/lib/simple-tree/core/withType.d.ts +3 -1
  182. package/lib/simple-tree/core/withType.d.ts.map +1 -1
  183. package/lib/simple-tree/core/withType.js.map +1 -1
  184. package/lib/simple-tree/index.d.ts +4 -4
  185. package/lib/simple-tree/index.d.ts.map +1 -1
  186. package/lib/simple-tree/index.js +2 -2
  187. package/lib/simple-tree/index.js.map +1 -1
  188. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  189. package/lib/simple-tree/mapNode.js +3 -0
  190. package/lib/simple-tree/mapNode.js.map +1 -1
  191. package/lib/simple-tree/objectNode.d.ts +4 -2
  192. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  193. package/lib/simple-tree/objectNode.js.map +1 -1
  194. package/lib/simple-tree/schemaTypes.d.ts +168 -14
  195. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  196. package/lib/simple-tree/schemaTypes.js +6 -1
  197. package/lib/simple-tree/schemaTypes.js.map +1 -1
  198. package/lib/simple-tree/toMapTree.d.ts +4 -2
  199. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  200. package/lib/simple-tree/toMapTree.js.map +1 -1
  201. package/lib/util/index.d.ts +2 -1
  202. package/lib/util/index.d.ts.map +1 -1
  203. package/lib/util/index.js +1 -0
  204. package/lib/util/index.js.map +1 -1
  205. package/lib/util/typeUtils.d.ts +61 -0
  206. package/lib/util/typeUtils.d.ts.map +1 -1
  207. package/lib/util/typeUtils.js +25 -1
  208. package/lib/util/typeUtils.js.map +1 -1
  209. package/package.json +48 -32
  210. package/src/events/interop.ts +1 -12
  211. package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
  212. package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
  213. package/src/feature-libraries/object-forest/objectForest.ts +1 -1
  214. package/src/feature-libraries/treeCursorUtils.ts +2 -2
  215. package/src/index.ts +16 -1
  216. package/src/internalTypes.ts +4 -0
  217. package/src/packageVersion.ts +1 -1
  218. package/src/shared-tree/schematizingTreeView.ts +6 -2
  219. package/src/shared-tree/sharedTree.ts +4 -2
  220. package/src/shared-tree/treeApi.ts +19 -9
  221. package/src/shared-tree/treeCheckout.ts +2 -0
  222. package/src/shared-tree-core/editManager.ts +16 -7
  223. package/src/simple-tree/api/create.ts +12 -7
  224. package/src/simple-tree/api/customTree.ts +2 -2
  225. package/src/simple-tree/api/index.ts +6 -1
  226. package/src/simple-tree/api/schemaCreationUtilities.ts +58 -35
  227. package/src/simple-tree/api/schemaFactory.ts +4 -0
  228. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +3 -3
  229. package/src/simple-tree/api/tree.ts +27 -4
  230. package/src/simple-tree/api/treeApiBeta.ts +6 -2
  231. package/src/simple-tree/api/typesUnsafe.ts +126 -30
  232. package/src/simple-tree/arrayNode.ts +34 -14
  233. package/src/simple-tree/core/treeNodeSchema.ts +11 -6
  234. package/src/simple-tree/core/withType.ts +10 -1
  235. package/src/simple-tree/index.ts +19 -2
  236. package/src/simple-tree/mapNode.ts +6 -3
  237. package/src/simple-tree/objectNode.ts +5 -3
  238. package/src/simple-tree/schemaTypes.ts +215 -23
  239. package/src/simple-tree/toMapTree.ts +4 -1
  240. package/src/util/index.ts +6 -0
  241. package/src/util/typeUtils.ts +87 -0
package/src/util/index.ts CHANGED
@@ -99,8 +99,14 @@ export type {
99
99
  RestrictiveStringRecord,
100
100
  _InlineTrick,
101
101
  FlattenKeys,
102
+ IsUnion,
103
+ UnionToIntersection,
104
+ UnionToTuple,
105
+ PopUnion,
102
106
  } from "./typeUtils.js";
103
107
 
108
+ export { unsafeArrayToTuple } from "./typeUtils.js";
109
+
104
110
  export {
105
111
  type BrandedKey,
106
112
  type BrandedKeyContent,
@@ -137,3 +137,90 @@ export type RestrictiveStringRecord<T> = {
137
137
  } & {
138
138
  readonly [P in symbol]?: never;
139
139
  };
140
+
141
+ /**
142
+ * Returns `true` if T is a union and false if it is not.
143
+ * @typeparam T - Type to test if it is a union.
144
+ * @typeparam T2 - Do not specify: default value used as implementation detail.
145
+ * @system @alpha
146
+ */
147
+ export type IsUnion<T, T2 = T> = T extends unknown
148
+ ? [T2] extends [T]
149
+ ? false
150
+ : true
151
+ : "error";
152
+
153
+ /**
154
+ * Convert a union of types to an intersection of those types. Useful for `TransformEvents`.
155
+ * @privateRemarks
156
+ * First an always true extends clause is used (T extends T) to distribute T into to a union of types contravariant over each member of the T union.
157
+ * Then the constraint on the type parameter in this new context is inferred, giving the intersection.
158
+ * @system @public
159
+ */
160
+ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (
161
+ k: infer U,
162
+ ) => unknown
163
+ ? U
164
+ : never;
165
+
166
+ /**
167
+ * Gets the first item of a union type.
168
+ *
169
+ * @typeparam Union - The union to convert.
170
+ * @typeparam AsOverloadedFunction - Implementation detail: do not specify.
171
+ * @system @alpha
172
+ */
173
+ export type PopUnion<
174
+ Union,
175
+ AsOverloadedFunction = UnionToIntersection<
176
+ Union extends unknown ? (f: Union) => void : never
177
+ >,
178
+ > = AsOverloadedFunction extends (a: infer First) => void ? First : never;
179
+
180
+ /**
181
+ * Converts a union type to a tuple type.
182
+ *
183
+ * @typeparam T - The union to convert.
184
+ * @typeparam A - Implementation detail: do not specify.
185
+ * @typeparam First - Implementation detail: do not specify.
186
+ *
187
+ * @privateRemarks
188
+ * `A` is a tuple to prepend members of the union to.
189
+ *
190
+ * https://www.hacklewayne.com/typescript-convert-union-to-tuple-array-yes-but-how and https://catchts.com/union-array both explain the general approach this uses pretty well.
191
+ * This implementation is inspired to those, but slightly different in implementation.
192
+ * @alpha
193
+ */
194
+ export type UnionToTuple<
195
+ Union,
196
+ A extends unknown[] = [],
197
+ First = PopUnion<Union>,
198
+ > = IsUnion<Union> extends true
199
+ ? UnionToTuple<Exclude<Union, First>, [First, ...A]>
200
+ : [Union, ...A];
201
+
202
+ /**
203
+ * This is unsafe, meaning that the returned value might not match its type.
204
+ *
205
+ * For the result to match its type, T must be a union of the types of each item in `items` in the order that they occur.
206
+ * For this to be possible, there must be no duplicate or overlapping types.
207
+ * This is fragile and must be used with care.
208
+ *
209
+ * @remarks
210
+ * The main use-case for this is recovering lost information from {@link AllowedTypes} which is necessary to preserve when using them with {@link Input} APIs.
211
+ * Since {@link AllowedTypes} is actually order independent, it is somewhat safer when used to produce `AllowedTypes`.
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * // Gives imprecise type (typeof A | typeof B)[]
216
+ * const schemaBad = [A, B];
217
+ * // Fixes the type to be [typeof A, typeof B]
218
+ * const schema = unsafeArrayToTuple(schemaBad);
219
+ *
220
+ * const config = new TreeViewConfiguration({ schema });
221
+ * ```
222
+ * @alpha
223
+ */
224
+ export function unsafeArrayToTuple<T>(items: T[]): UnionToTuple<T> {
225
+ return items as UnionToTuple<T>;
226
+ }