@fluidframework/tree 2.93.0 → 2.100.0

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 (103) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/INCREMENTAL_SUMMARY.md +89 -0
  3. package/README.md +6 -0
  4. package/api-report/tree.alpha.api.md +3 -0
  5. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts +25 -1
  6. package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  7. package/dist/feature-libraries/chunked-forest/basicChunk.js +71 -18
  8. package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  9. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +1 -1
  10. package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  11. package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  12. package/dist/feature-libraries/chunked-forest/codec/codecs.js +1 -1
  13. package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  14. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  15. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  16. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
  17. package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  18. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +1 -2
  19. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  20. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js +0 -1
  21. package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  22. package/dist/feature-libraries/chunked-forest/codec/format/index.d.ts +1 -1
  23. package/dist/feature-libraries/chunked-forest/codec/format/index.d.ts.map +1 -1
  24. package/dist/feature-libraries/chunked-forest/codec/format/index.js +2 -1
  25. package/dist/feature-libraries/chunked-forest/codec/format/index.js.map +1 -1
  26. package/dist/feature-libraries/chunked-forest/codec/format/versions.d.ts +10 -2
  27. package/dist/feature-libraries/chunked-forest/codec/format/versions.d.ts.map +1 -1
  28. package/dist/feature-libraries/chunked-forest/codec/format/versions.js +15 -1
  29. package/dist/feature-libraries/chunked-forest/codec/format/versions.js.map +1 -1
  30. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +6 -1
  31. package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  32. package/dist/feature-libraries/chunked-forest/uniformChunk.js +25 -1
  33. package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  34. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +19 -0
  35. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  36. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +76 -22
  37. package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  38. package/dist/packageVersion.d.ts +1 -1
  39. package/dist/packageVersion.d.ts.map +1 -1
  40. package/dist/packageVersion.js +1 -1
  41. package/dist/packageVersion.js.map +1 -1
  42. package/dist/shared-tree/treeCheckout.d.ts +1 -1
  43. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  44. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +17 -1
  45. package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  46. package/dist/simple-tree/api/schemaFactoryAlpha.js +9 -0
  47. package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  48. package/docs/user-facing/isolated-declarations.md +147 -0
  49. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts +25 -1
  50. package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
  51. package/lib/feature-libraries/chunked-forest/basicChunk.js +72 -19
  52. package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
  53. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +2 -2
  54. package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
  55. package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
  56. package/lib/feature-libraries/chunked-forest/codec/codecs.js +2 -2
  57. package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
  58. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
  59. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
  60. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
  61. package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
  62. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts +1 -2
  63. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -1
  64. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.js +0 -1
  65. package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -1
  66. package/lib/feature-libraries/chunked-forest/codec/format/index.d.ts +1 -1
  67. package/lib/feature-libraries/chunked-forest/codec/format/index.d.ts.map +1 -1
  68. package/lib/feature-libraries/chunked-forest/codec/format/index.js +1 -1
  69. package/lib/feature-libraries/chunked-forest/codec/format/index.js.map +1 -1
  70. package/lib/feature-libraries/chunked-forest/codec/format/versions.d.ts +10 -2
  71. package/lib/feature-libraries/chunked-forest/codec/format/versions.d.ts.map +1 -1
  72. package/lib/feature-libraries/chunked-forest/codec/format/versions.js +13 -0
  73. package/lib/feature-libraries/chunked-forest/codec/format/versions.js.map +1 -1
  74. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +6 -1
  75. package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
  76. package/lib/feature-libraries/chunked-forest/uniformChunk.js +26 -2
  77. package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
  78. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +19 -0
  79. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
  80. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +76 -22
  81. package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
  82. package/lib/packageVersion.d.ts +1 -1
  83. package/lib/packageVersion.d.ts.map +1 -1
  84. package/lib/packageVersion.js +1 -1
  85. package/lib/packageVersion.js.map +1 -1
  86. package/lib/shared-tree/treeCheckout.d.ts +1 -1
  87. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  88. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +17 -1
  89. package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
  90. package/lib/simple-tree/api/schemaFactoryAlpha.js +9 -0
  91. package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
  92. package/package.json +24 -24
  93. package/src/feature-libraries/chunked-forest/basicChunk.ts +76 -20
  94. package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +2 -2
  95. package/src/feature-libraries/chunked-forest/codec/codecs.ts +2 -1
  96. package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +3 -2
  97. package/src/feature-libraries/chunked-forest/codec/format/formatGeneric.ts +0 -1
  98. package/src/feature-libraries/chunked-forest/codec/format/index.ts +1 -0
  99. package/src/feature-libraries/chunked-forest/codec/format/versions.ts +15 -0
  100. package/src/feature-libraries/chunked-forest/uniformChunk.ts +32 -2
  101. package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +116 -31
  102. package/src/packageVersion.ts +1 -1
  103. package/src/simple-tree/api/schemaFactoryAlpha.ts +34 -3
@@ -153,7 +153,7 @@ export interface SchemaStaticsAlpha {
153
153
  * The migration path is:
154
154
  *
155
155
  * 1. Start with `sf.required(T)` — all clients require the field.
156
- * 2. Deploy `sf.stagedOptional(T)` — new clients can read documents where the field is present or absent, but the stored schema stays Required (so old clients are unaffected). Writing `undefined` is blocked at runtime.
156
+ * 2. Deploy `sf.stagedOptional(T)` — new clients can read documents where the field is present or absent, but the stored schema stays Required (so old clients are unaffected). Setting the field to `undefined` is rejected because the stored schema still declares the field as required.
157
157
  * 3. Deploy `sf.optional(T)` once all clients support the staged optional field — the stored schema becomes Optional and the field can be cleared.
158
158
  *
159
159
  * Analogous to {@link SchemaStaticsBeta.staged} for allowed types, but for field optionality.
@@ -179,6 +179,28 @@ export interface SchemaStaticsAlpha {
179
179
  TCustomMetadata,
180
180
  FieldPropsAlpha<TCustomMetadata>
181
181
  >;
182
+ /**
183
+ * {@link SchemaStaticsAlpha.stagedOptional} except tweaked to work better for recursive types.
184
+ * Use with {@link ValidateRecursiveSchema} for improved type safety.
185
+ * @remarks
186
+ * This version of {@link SchemaStaticsAlpha.stagedOptional} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.
187
+ * See {@link ValidateRecursiveSchema} for additional information about using recursive schema.
188
+ */
189
+ readonly stagedOptionalRecursive: <
190
+ const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
191
+ const TCustomMetadata = unknown,
192
+ >(
193
+ t: T,
194
+ props?: Omit<
195
+ FieldPropsAlpha<TCustomMetadata>,
196
+ "defaultProvider" | "stagedOptionalUpgrade"
197
+ >,
198
+ ) => FieldSchemaAlphaUnsafe<
199
+ FieldKind.Optional,
200
+ T,
201
+ TCustomMetadata,
202
+ FieldPropsAlpha<TCustomMetadata>
203
+ >;
182
204
 
183
205
  /**
184
206
  * {@link SchemaStaticsAlpha.withDefault} except tweaked to work better for recursive types.
@@ -280,10 +302,9 @@ const stagedOptional = <const T extends ImplicitAllowedTypes, const TCustomMetad
280
302
 
281
303
  const schemaStaticsAlpha: SchemaStaticsAlpha = {
282
304
  withDefault,
283
-
284
305
  withDefaultRecursive: withDefault as SchemaStaticsAlpha["withDefaultRecursive"],
285
-
286
306
  stagedOptional,
307
+ stagedOptionalRecursive: stagedOptional as SchemaStaticsAlpha["stagedOptionalRecursive"],
287
308
  };
288
309
 
289
310
  /**
@@ -512,6 +533,16 @@ export class SchemaFactoryAlpha<
512
533
  */
513
534
  public static readonly stagedOptional = schemaStaticsAlpha.stagedOptional;
514
535
 
536
+ /**
537
+ * {@inheritdoc SchemaStaticsAlpha.stagedOptionalRecursive}
538
+ */
539
+ public readonly stagedOptionalRecursive = schemaStaticsAlpha.stagedOptionalRecursive;
540
+
541
+ /**
542
+ * {@inheritdoc SchemaStaticsAlpha.stagedOptionalRecursive}
543
+ */
544
+ public static readonly stagedOptionalRecursive = schemaStaticsAlpha.stagedOptionalRecursive;
545
+
515
546
  /**
516
547
  * Define a {@link TreeNodeSchema} for a {@link TreeMapNodeAlpha}.
517
548
  *