fluid-framework 2.71.0 → 2.72.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.72.0
4
+
5
+ ### Minor Changes
6
+
7
+ - `formatVersion` removed from the options passed to `configuredSharedTree` ([#25752](https://github.com/microsoft/FluidFramework/pull/25752)) [df533906e3](https://github.com/microsoft/FluidFramework/commit/df533906e3a8e5d54024009704ca0c0eedb95e95)
8
+
9
+ Note: this change may break users of alpha APIs. See below for details.
10
+
11
+ `SharedTreeOptions` (which is passed to `configuredSharedTree`) no longer includes a `formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion]` field.
12
+ The concept of `SharedTreeFormatVersion` has been removed altogether.
13
+ Instead, users are expected to leverage the already existing `minVersionForCollab` field.
14
+
15
+ For migration purposes, the mapping from `SharedTreeFormatVersion` to `minVersionForCollab` is as follows:
16
+ - `SharedTreeFormatVersion.v1`: no supported equivalent
17
+ - `SharedTreeFormatVersion.v2`: no supported equivalent
18
+ - `SharedTreeFormatVersion.v3`: `minVersionForCollab: FluidClientVersion.v2_0`
19
+ - `SharedTreeFormatVersion.v5`: `minVersionForCollab: FluidClientVersion.v2_43`
20
+ - `SharedTreeFormatVersion.vSharedBranches`: `minVersionForCollab: FluidClientVersion.v2_43` + `SharedTreeOptions.enableSharedBranches`
21
+
22
+ The values for which there is no supported equivalent `minVersionForCollab` were never given official support.
23
+ [Contact](https://github.com/microsoft/FluidFramework/issues) the Fluid Framework team if you need help migrating away from them.
24
+
3
25
  ## 2.71.0
4
26
 
5
27
  ### Minor Changes
@@ -61,7 +83,6 @@
61
83
  - A minimal set of branching APIs has been promoted to beta. ([#25744](https://github.com/microsoft/FluidFramework/pull/25744)) [32cc2c75d8](https://github.com/microsoft/FluidFramework/commit/32cc2c75d82c35403caa91e67e81f71baee5d092)
62
84
 
63
85
  The following APIs have been promoted to beta in `@fluidframework/tree`:
64
-
65
86
  - `TreeBranch.fork()`
66
87
  - `TreeBranch.merge()`
67
88
  - `TreeBranch.rebaseOnto()`
@@ -186,7 +207,6 @@
186
207
  The `@alpha` API `JsonValidator` has been removed: its replacement `FormatValidator` must now be used.
187
208
 
188
209
  As part of this:
189
-
190
210
  - `typeboxValidator` has been replaced with `FormatValidatorBasic`.
191
211
  - `noopValidator` has been replaced with `FormatValidatorNoOp`.
192
212
 
@@ -342,7 +362,6 @@ Dependency updates only.
342
362
  The APIs that operate on batches should be used instead.
343
363
 
344
364
  Specifically:
345
-
346
365
  - `insertColumn`
347
366
  - Use `insertColumns` instead
348
367
  - `insertRow`
@@ -362,7 +381,6 @@ Dependency updates only.
362
381
  - Remove unnecessary and internal APIs in ISequenceIntervalCollection and related interval types ([#25244](https://github.com/microsoft/FluidFramework/pull/25244)) [15d476ea706](https://github.com/microsoft/FluidFramework/commit/15d476ea7069eb4de317a726733aa8fb9e8486e8)
363
382
 
364
383
  The following APIs are now removed:
365
-
366
384
  - `IInterval.clone`
367
385
  - `IInterval.modify`
368
386
  - `IInterval.union`
@@ -508,7 +526,6 @@ Dependency updates only.
508
526
  - Allow edits in arrays to be concurrent to dependent edits of transactions with violated constraints ([#25191](https://github.com/microsoft/FluidFramework/pull/25191)) [ef64bae6ab2](https://github.com/microsoft/FluidFramework/commit/ef64bae6ab2848c67d778d14ad56ae021f54ac7a)
509
527
 
510
528
  Before this release, making concurrent edits to an array could lead to assertion error `0x8a2` being thrown if the following conditions were met:
511
-
512
529
  - Some edit `e1` was a transaction with a constraint that turned out to be violated by edits concurrent to (and sequenced before) `e1`
513
530
  - Some edit `e2` was dependent on `e1` (from before the violation of its constraint)
514
531
  - Some edit `e3` was concurrent to and sequenced after both `e1` and `e2`
@@ -558,7 +575,6 @@ Dependency updates only.
558
575
  (This is the case when nodes are removed before attaching and there is a local branch that forks from a commit that made such a removal or from an earlier commit. This is also the case when retaining `Revertible` objects for those commits).
559
576
 
560
577
  After this release, the behavior depends on the `CodecWriteOptions.oldestCompatibleClient` value:
561
-
562
578
  - For values < `FluidClientVersion.v2_52`, the behavior is the same.
563
579
  - For values >= `FluidClientVersion.v2_52`, the attach will succeed, but use a newer storage format.
564
580
 
@@ -654,7 +670,6 @@ Dependency updates only.
654
670
  We recommend updating your code to be more tolerant of unknown node kinds going forward.
655
671
 
656
672
  Also see alternative options for schema-agnostic tree traversal if needed:
657
-
658
673
  - [Tree.parent](https://fluidframework.com/docs/api/fluid-framework/treenodeapi-interface#parent-methodsignature)
659
674
  - [TreeAlpha.child](https://fluidframework.com/docs/api/fluid-framework/treealpha-interface#child-methodsignature)
660
675
  - [TreeAlpha.children](https://fluidframework.com/docs/api/fluid-framework/treealpha-interface#children-methodsignature)
@@ -1066,7 +1081,6 @@ Dependency updates only.
1066
1081
 
1067
1082
  Table trees created using `TableSchema` offer various APIs to make working with tabular data easy.
1068
1083
  These include:
1069
-
1070
1084
  - Insertion and removal of columns, rows, and cells.
1071
1085
  - Cell access by column/row.
1072
1086
 
@@ -1212,7 +1226,6 @@ Dependency updates only.
1212
1226
  You can retrieve the long identifier with `TreeAlpha.identifier(node)`, where `node` is a `TreeNode`. The long identifier is a stable, compressible UUID generated by the tree.
1213
1227
  In cases where the node does not yet have an identifier assigned, this will return `undefined`.
1214
1228
  These cases include:
1215
-
1216
1229
  - The node does not contain an identifier field.
1217
1230
  - The node is a non-hydrated node with a user provided identifier. Note that if it is a non-hydrated node without an identifier provided, it will throw an error.
1218
1231
 
@@ -1223,7 +1236,6 @@ Dependency updates only.
1223
1236
  to get the original valid long `identifier` back.
1224
1237
  In the cases where it's not possible to shorten the `identifier`, it will return `undefined`.
1225
1238
  These cases include:
1226
-
1227
1239
  - A compressible long identifier, but it is unrecognized by the tree that the node belongs to. This can occur if the identifier is not generated from the tree.
1228
1240
  - An identifier which is not compressible by the tree. This can occur if the node's identifier was a user provided string.
1229
1241
 
@@ -1233,7 +1245,6 @@ Dependency updates only.
1233
1245
  If the method returns a valid long identifier, this identifier can be passed into `TreeAlpha.identifier.shorten` to get the original `identifier` back.
1234
1246
  In the cases where it's not possible to lengthen the `identifier`, this method will throw an error.
1235
1247
  These cases include:
1236
-
1237
1248
  - An unrecognized short identifier. This can occur if the identifier is not generated from the tree.
1238
1249
 
1239
1250
  #### TreeAlpha.identifier.getShort
@@ -1254,7 +1265,6 @@ Dependency updates only.
1254
1265
 
1255
1266
  In cases where the node provided does not contain an identifier that is recognized or compressible by the tree that the node belongs to, this method will return undefined.
1256
1267
  This will occur in the following cases:
1257
-
1258
1268
  - The node is an non-hydrated node with a user provided identifier. Note that if it is an non-hydrated node without an identifier provided, it will throw an error.
1259
1269
  - The node does not contain an identifier field.
1260
1270
  - The node contains a compressible long identifier, but it is unrecognized by the tree that the node belongs to. This can occur if the identifier is not generated from the tree.
@@ -1389,7 +1399,6 @@ Dependency updates only.
1389
1399
 
1390
1400
  [TreeNodes](https://fluidframework.com/docs/api/fluid-framework/treenode-class) which are [deleted](https://fluidframework.com/docs/api/fluid-framework/treestatus-enum#deleted-enummember) were not handled correctly.
1391
1401
  This has been improved in two ways:
1392
-
1393
1402
  1. Accessing fields of deleted nodes now consistently throws a usage error indicating that doing so is invalid.
1394
1403
  Previously, this would throw an assertion error, which was a bug.
1395
1404
  2. When a `TreeNode` is deleted, but that node still exists within the [`ITree`](https://fluidframework.com/docs/api/driver-definitions/itree-interface), then becomes accessible again later, a new `TreeNode` is now allocated instead of trying to reuse the deleted one.
@@ -1399,7 +1408,6 @@ Dependency updates only.
1399
1408
  - Generic types for IntervalCollections have been replaced with non-generic types ([#24411](https://github.com/microsoft/FluidFramework/pull/24411)) [1c743e825ed](https://github.com/microsoft/FluidFramework/commit/1c743e825ed29a81b0e66775ce3553477361d335)
1400
1409
 
1401
1410
  This change deprecates the following generic types and provides non-generic alternatives where necessary:
1402
-
1403
1411
  - `IIntervalCollection` is replaced by `ISequenceIntervalCollection`
1404
1412
  - `IIntervalCollectionEvent` is replaced by `ISequenceIntervalCollectionEvents`
1405
1413
  - `IntervalIndex` is replaced by `SequenceIntervalIndex`
@@ -1467,7 +1475,6 @@ Dependency updates only.
1467
1475
  As a side effect of this work, some schema which violated the documented allowed patterns specified by [SchemaFactory](https://fluidframework.com/docs/api/fluid-framework/schemafactory-class#schemafactory-remarks) but used to work (as long as they were not package exported) no longer compile.
1468
1476
 
1469
1477
  The specific case known to break is when:
1470
-
1471
1478
  1. An Object node schema is co-recursive with an Array node schema.
1472
1479
  2. The Array does not declare a named subclass.
1473
1480
  3. The schema reference from the Object to the Array is not using the [lazy syntax](https://fluidframework.com/docs/api/fluid-framework/lazyitem-typealias).
@@ -1517,7 +1524,6 @@ Dependency updates only.
1517
1524
  trunk commits and 100 peer commits, the performance increases by 97%.
1518
1525
 
1519
1526
  Some example scenarios where the performance will be improved:
1520
-
1521
1527
  - A client makes some local changes and another client simultaneously makes a large number of changes in a single JavaScript turn.
1522
1528
  For example, a client is typing into a canvas while another client pastes a large amount of content into a table.
1523
1529
  - A client makes a local branch with some changes and rebases it into the trunk. For example, an AI agent makes changes
@@ -1538,7 +1544,6 @@ Dependency updates only.
1538
1544
  Additionally an alpha `ObjectNodeSchema` object is added to enable support for `schema instanceof ObjectNodeSchema` to safely narrow `TreeNodeSchema` to this new type.
1539
1545
 
1540
1546
  In support of this work, several typing details were fixed including:
1541
-
1542
1547
  - `info` field of `[typeSchemaSymbol]` type brand on recursive object schema was specified to match non-recursive variants.
1543
1548
  - Type of field metadata was correctly plumbed through `optionalReclusive` and `requiredRecursive`.
1544
1549
  - When fields object provided to [SchemaFactory.object](https://fluidframework.com/docs/api/fluid-framework/schemafactory-class#object-method) is typed as `RestrictiveStringRecord<ImplicitFieldSchema>` the resulting [TreeObjectNode](https://fluidframework.com/docs/api/fluid-framework/treeobjectnode-typealias) no longer gets a `Record<string, TreeNode | TreeLeafValue>` signature which could incorrectly conflict with custom members added to the object. Instead `{}` is used to provide no information about felids on the type when the schema provides no information about them. Additionally this case is explicitly made non-constructable: the constructor takes in `never` instead of a `Record<string,never>` which could be erroneously satisfied with an empty object due to how TypeScript assignability rules consider records to have all allowed fields, but also allow objects missing those fields to be assigned to them.
@@ -1565,7 +1570,6 @@ Dependency updates only.
1565
1570
  The various import and export [`VerboseTree`](https://fluidframework.com/docs/api/fluid-framework/verbosetree-typealias) and [`ConciseTree`](https://fluidframework.com/docs/api/fluid-framework/concisetree-typealias) APIs no longer include `valueConverter` options.
1566
1571
  Instead the resulting tree can be further processed to do any desired replacements.
1567
1572
  The following `@alpha` APIs have been added to assist with this:
1568
-
1569
1573
  1. `cloneWithReplacements`
1570
1574
  2. `replaceHandles`
1571
1575
  3. `replaceConciseTreeHandles`
@@ -1616,7 +1620,6 @@ Dependency updates only.
1616
1620
  For example, with 10 local ops + 10 incoming ops, the performance increases by 70%; with 100 local ops + 100 incoming ops, the performance increases by 94%.
1617
1621
 
1618
1622
  This will help improve performance in the following scenarios:
1619
-
1620
1623
  - A client makes a large number of changes in a single JS turn. For example, copy pasting large data like a table.
1621
1624
  - A client has a large number of local changes. For example, slow clients whose changes are slow to ack or clients with
1622
1625
  a local branch with large number of changes.
@@ -1693,7 +1696,6 @@ Dependency updates only.
1693
1696
  These properties will not be used by the system by default, but can be used to associate common application-specific properties with Node Schema.
1694
1697
 
1695
1698
  #### `SchemaFactoryAlpha` Updates
1696
-
1697
1699
  - `object` and `objectRecursive`, `arrayRecursive`, and `mapRecursive` now support `metadata` in their `options` parameter.
1698
1700
  - (new) `arrayAlpha` - Variant of `array` that accepts an options parameter which supports `metadata`
1699
1701
  - (new) `mapAlpha` - Variant of `map` that accepts an options parameter which supports `metadata`
@@ -1746,7 +1748,6 @@ Dependency updates only.
1746
1748
  One of these checks verifies that the view schema (defined in application's code) aligns with the document schema (determined by the document data at rest).
1747
1749
  This helps to ensure that clients running incompatible versions of the application's code don't collaborate at the same time on some document, which could cause data loss or disrupt application invariants.
1748
1750
  One general solution application authors can perform is to stage the rollout of a feature which changes document schema into multiple phases:
1749
-
1750
1751
  1. Release an application version which understands documents written with the new format but doesn't attempt to upgrade any documents
1751
1752
  2. Wait for this application version to saturate in the app's ecosystem
1752
1753
  3. Release an application version which upgrades documents to start leveraging the new format.
@@ -1863,7 +1864,6 @@ Dependency updates only.
1863
1864
  As part of ongoing improvements, several internal types and related APIs have been removed. These types are unnecessary for any supported scenarios and could lead to errors if used. Since directly using these types would likely result in errors, these changes are not likely to impact any Fluid Framework consumers.
1864
1865
 
1865
1866
  Removed types:
1866
-
1867
1867
  - IMergeTreeTextHelper
1868
1868
  - MergeNode
1869
1869
  - ObliterateInfo
@@ -1875,12 +1875,10 @@ Dependency updates only.
1875
1875
  In addition to removing the above types, they are no longer exposed through the following interfaces and their implementations: `ISegment`, `ReferencePosition`, and `ISerializableInterval`.
1876
1876
 
1877
1877
  Removed functions:
1878
-
1879
1878
  - addProperties
1880
1879
  - ack
1881
1880
 
1882
1881
  Removed properties:
1883
-
1884
1882
  - propertyManager
1885
1883
  - segmentGroups
1886
1884
 
@@ -1963,7 +1961,6 @@ Dependency updates only.
1963
1961
  An adjustment is a modification applied to a property value within a specified range. Adjustments can be used to increment or decrement property values dynamically. They are particularly useful in scenarios where property values need to be updated based on user interactions or other events. For example, in a rich text editor, adjustments can be used for modifying indentation levels or font sizes, where multiple users could apply differing numerical adjustments.
1964
1962
 
1965
1963
  ### Key Features and Use Cases:
1966
-
1967
1964
  - **Adjustments with Constraints**: Adjustments can include optional minimum and maximum constraints to ensure the final value falls within specified bounds. This is particularly useful for maintaining consistent formatting in rich text editors.
1968
1965
  - **Consistent Property Changes**: The feature ensures that property changes are consistent, managing both local and remote changes effectively. This is essential for collaborative rich text editing where multiple users may be making adjustments simultaneously.
1969
1966
  - **Rich Text Formatting**: Adjustments can be used to modify text properties such as font size, indentation, or other formatting attributes dynamically based on user actions.
@@ -1985,7 +1982,6 @@ Dependency updates only.
1985
1982
  The `Client` class in the merge-tree package has been removed. Types that directly or indirectly expose the merge-tree `Client` class have also been removed.
1986
1983
 
1987
1984
  The removed types were not meant to be used directly, and direct usage was not supported:
1988
-
1989
1985
  - AttributionPolicy
1990
1986
  - IClientEvents
1991
1987
  - IMergeTreeAttributionOptions
@@ -1993,7 +1989,6 @@ Dependency updates only.
1993
1989
  - SharedStringClass
1994
1990
 
1995
1991
  Some classes that referenced the `Client` class have been transitioned to interfaces. Direct instantiation of these classes was not supported or necessary for any supported scenario, so the change to an interface should not impact usage. This applies to the following types:
1996
-
1997
1992
  - SequenceInterval
1998
1993
  - SequenceEvent
1999
1994
  - SequenceDeltaEvent
@@ -2018,7 +2013,6 @@ Dependency updates only.
2018
2013
  `independentView` has also been added, which is similar but handles the case of creating a new view without an existing schema or tree.
2019
2014
 
2020
2015
  Together these APIs address several use-cases:
2021
-
2022
2016
  1. Using SharedTree as an in-memory non-collaborative datastore.
2023
2017
  2. Importing and exporting data from a SharedTree to and from other services or storage locations (such as locally saved files).
2024
2018
  3. Testing various scenarios without relying on a service.
@@ -2513,7 +2507,6 @@ Dependency updates only.
2513
2507
 
2514
2508
  The `PropertyManager` class, along with the `propertyManager` properties and `addProperties` functions on segments and intervals, are not intended for external use.
2515
2509
  These elements will be removed in a future release for the following reasons:
2516
-
2517
2510
  - There are no scenarios where they need to be used directly.
2518
2511
  - Using them directly will cause eventual consistency problems.
2519
2512
  - Upcoming features will require modifications to these mechanisms.
@@ -2616,7 +2609,6 @@ Dependency updates only.
2616
2609
  The runtime behavior is unaffected: any code which worked and still compiles is fine and does not need changes.
2617
2610
 
2618
2611
  `Tree.schema` was changed to mitigate two different issues:
2619
-
2620
2612
  1. It tried to give a more specific type based on the type of the passed in value.
2621
2613
  When the type of the input is not known precisely (for example it is a union of node types like `Foo | Bar`, or `TreeNode` or even `TreeNode | TreeLeafValue`), this was fine since schema are covariant over their node type.
2622
2614
  However when the input was more specific that the schema type, for example the type is simply `0`, this would result in unsound typing, since the create function could actually return values that did not conform with that schema (for example `schema.create(1)` for the number schema typed with `0` would return `1` with type `0`).
@@ -2743,7 +2735,6 @@ Dependency updates only.
2743
2735
  ```
2744
2736
 
2745
2737
  Skipping the constructor causes the following problems:
2746
-
2747
2738
  1. `TreeViewConfiguration` does validation in its constructor, so skipping it also skips the validation which leads to much less friendly error messages for invalid schema.
2748
2739
  2. Skipping the constructor also discards any default values for options like `enableSchemaValidation`.
2749
2740
  This means that code written in that style would break if more options were added. Since such changes are planned,
@@ -2778,7 +2769,6 @@ Dependency updates only.
2778
2769
  already the case, but the documentation was not clear.
2779
2770
 
2780
2771
  Updated APIs:
2781
-
2782
2772
  - [IDirectory](https://fluidframework.com/docs/api/v2/fluid-framework/idirectory-interface) sealed
2783
2773
  - [IDirectoryEvents](https://fluidframework.com/docs/api/v2/fluid-framework/idirectoryevents-interface) sealed
2784
2774
  - [IDirectoryValueChanged](https://fluidframework.com/docs/api/v2/fluid-framework/idirectoryvaluechanged-interface) sealed and path property is readonly
@@ -2803,7 +2793,6 @@ Dependency updates only.
2803
2793
 
2804
2794
  Several cases of invalid usage patterns for tree APIs have gained improved error reporting, as well as improved documentation on the APIs detailing what usage is supported.
2805
2795
  These improvements include:
2806
-
2807
2796
  - Unsupported usages of schema classes: using more than one schema class derived from a single SchemaFactory generated base class. This used to hit internal asserts, but now has a descriptive user-facing UsageError. Most of this work was done in [9fb3dcf](https://github.com/microsoft/FluidFramework/commit/9fb3dcf491a7f0d66f4abbdc64ab97ccabef4707).
2808
2797
  - Improved detection of when prior exception may have left SharedTree in an invalid state.
2809
2798
  These cases now report a UsageError including a reference to the prior exception. This was mainly done in [9fb3dcf](https://github.com/microsoft/FluidFramework/commit/9fb3dcf491a7f0d66f4abbdc64ab97ccabef4707) and [b77d530](https://github.com/microsoft/FluidFramework/commit/b77d530b9252201c40a90d1a2a6315f76f1a4a4b).
@@ -2822,7 +2811,6 @@ Dependency updates only.
2822
2811
 
2823
2812
  Access to these now less public types should not be required for users of the `@public` "declarative API" exposed in the `fluid-framework` package, but can still be accessed for those who need them under the `/legacy` import paths.
2824
2813
  The full list of such types is:
2825
-
2826
2814
  - `SharedTree` as exported from `@fluidframwork/tree`: It is still exported as `@public` from `fluid-framework` as `SharedObjectKind`.
2827
2815
  - `ISharedObjectKind`: See new `SharedObjectKind` type for use in `@public` APIs.
2828
2816
  `ISharedObject`
@@ -2840,7 +2828,6 @@ Dependency updates only.
2840
2828
  - `IProvideFluidHandleContext`
2841
2829
 
2842
2830
  Removed APIs:
2843
-
2844
2831
  - `DataObjectClass`: Usages replaced with `SharedObjectKind`.
2845
2832
  - `LoadableObjectClass`: Replaced with `SharedObjectKind`.
2846
2833
  - `LoadableObjectClassRecord`: Replaced with `Record<string, SharedObjectKind>`.
@@ -2864,7 +2851,6 @@ Dependency updates only.
2864
2851
  - fluid-framework: Remove some types from `@public` that are not needed ([#21326](https://github.com/microsoft/FluidFramework/pull/21326)) [b629cb80b0](https://github.com/microsoft/FluidFramework/commit/b629cb80b0e5ecdc750270807f77a0e30fab4559)
2865
2852
 
2866
2853
  Mark the following APIs `@alpha` instead of `@public`:
2867
-
2868
2854
  - IBranchOrigin
2869
2855
  - ISequencedDocumentMessage
2870
2856
  - ISignalMessage
@@ -2879,7 +2865,6 @@ Dependency updates only.
2879
2865
  - fluid-framework: Remove several types from `@public` scope ([#21142](https://github.com/microsoft/FluidFramework/pull/21142)) [983e9f09f7](https://github.com/microsoft/FluidFramework/commit/983e9f09f7b10fef9ffa1e9af86166f0ccda7e14)
2880
2866
 
2881
2867
  The following types have been moved from `@public` to `@alpha`:
2882
-
2883
2868
  - `IFluidSerializer`
2884
2869
  - `ISharedObjectEvents`
2885
2870
  - `IChannelServices`
@@ -2903,7 +2888,6 @@ Dependency updates only.
2903
2888
 
2904
2889
  The stable public API surface for Tree has been reduced.
2905
2890
  Several types have been moved into InternalTypes, indicating that they are not fully stable nor intended to be referenced by users of Tree.
2906
-
2907
2891
  - NodeBuilderData
2908
2892
  - FieldHasDefault
2909
2893
  - TreeNodeSchemaNonClass
@@ -2930,7 +2914,6 @@ Dependency updates only.
2930
2914
  - TreeApi
2931
2915
 
2932
2916
  Additionally a few more types which could not be moved due to technically limitations have been documented that they should be treated similarly.
2933
-
2934
2917
  - TreeNodeApi
2935
2918
  - TreeNodeSchemaCore
2936
2919
  - All \*Unsafe type (use for construction of recursive schema).
@@ -3006,7 +2989,6 @@ Dependency updates only.
3006
2989
  - Make several driver types no longer public [b7ad7d0b55](https://github.com/microsoft/FluidFramework/commit/b7ad7d0b55884dd8954abf7c398e518838b9bda0)
3007
2990
 
3008
2991
  Move the following types from `@public` to `@alpha`:
3009
-
3010
2992
  - ITokenClaims
3011
2993
  - IDocumentMessage
3012
2994
  - IClientConfiguration
@@ -3017,7 +2999,6 @@ Dependency updates only.
3017
2999
  `DriverErrorTypes` is no longer exported from the `fluid-framework` package.
3018
3000
 
3019
3001
  - Rename `AzureMember.userName` to `AzureMember.name` and `IMember.userId` to `IMember.id` [96872186d0](https://github.com/microsoft/FluidFramework/commit/96872186d0d0f245c1fece7d19b3743e501679b6)
3020
-
3021
3002
  1. Renamed `AzureMember.userName` to `AzureMember.name` to establish uniform naming across odsp-client and azure-client.
3022
3003
  2. Renamed `IMember.userId` to `IMember.id` to align with the properties received from AFR.
3023
3004
 
@@ -3041,7 +3022,6 @@ Dependency updates only.
3041
3022
  TypeScript types and implementation code.
3042
3023
 
3043
3024
  This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
3044
-
3045
3025
  - `"moduleResolution": "Node16"` with `"module": "Node16"`
3046
3026
  - `"moduleResolution": "Bundler"` with `"module": "ESNext"`
3047
3027
 
@@ -3105,7 +3085,7 @@ Dependency updates only.
3105
3085
  become build errors. The fix is to use only public APIs from @fluidframework/foo.
3106
3086
 
3107
3087
  **Coming soon:** Build resolutions (`moduleResolution` in tsconfig compilerOptions) will need to be resolved with
3108
- Node16, NodeNext, or a bundler that supports resolution of named import/export paths. Internally, some FF packages will
3088
+ Node16, NodeNext, or a bundler that supports resolution of named import-x/export paths. Internally, some FF packages will
3109
3089
  use `@fluidframework/foo/internal` import paths that allow packages to talk to each other using non-public APIs.
3110
3090
 
3111
3091
  **Final stage:** APIs that are not tagged @public will be removed from @fluidframework/foo imports.
@@ -3148,7 +3128,6 @@ Dependency updates only.
3148
3128
  Several FluidStatic classes were unnecessarily exposed and were deprecated in an earlier release. They have been replaced with creation functions. This helps us
3149
3129
  keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the
3150
3130
  public surface area of downstream packages. The removed classes are as follows:
3151
-
3152
3131
  - `AzureAudience` (use `IAzureAudience` instead)
3153
3132
  - `TinyliciousAudience` (use `ITinyliciousAudience` instead)
3154
3133
  - `DOProviderContainerRuntimeFactory`
@@ -3164,7 +3143,6 @@ Dependency updates only.
3164
3143
  Several FluidStatic classes were unnecessarily exposed. They have been replaced with creation functions. This helps us
3165
3144
  keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the
3166
3145
  public surface area of downstream packages. The deprecated classes are as follows:
3167
-
3168
3146
  - `AzureAudience` (use `IAzureAudience` instead)
3169
3147
  - `TinyliciousAudience` (use `ITinyliciousAudience` instead)
3170
3148
  - `DOProviderContainerRuntimeFactory`
@@ -33,7 +33,7 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
33
33
  // @beta @sealed @system
34
34
  export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
35
35
 
36
- // @alpha @sealed @system
36
+ // @beta @sealed @system
37
37
  export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
38
38
 
39
39
  // @alpha @sealed @system
@@ -52,7 +52,7 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
52
52
  [I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
53
53
  };
54
54
 
55
- // @alpha @sealed @system
55
+ // @beta @sealed @system
56
56
  export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
57
57
  [I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
58
58
  };
@@ -72,11 +72,11 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
72
72
  readonly types: T;
73
73
  }
74
74
 
75
- // @alpha @sealed @system
75
+ // @beta @sealed @system
76
76
  export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
77
77
  }
78
78
 
79
- // @alpha @sealed @system
79
+ // @beta @sealed @system
80
80
  export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
81
81
  }
82
82
 
@@ -240,6 +240,9 @@ export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema,
240
240
  // @alpha
241
241
  export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue, TSchema extends TreeNodeSchema>(view: TreeView<TFieldSchema>, indexer: Map<TreeNodeSchema, string>, getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey, indexableSchema: readonly TSchema[]): SimpleTreeIndex<TKey, TValue>;
242
242
 
243
+ // @alpha
244
+ export function decodeSimpleSchema(encodedSchema: JsonCompatibleReadOnly, validator?: FormatValidator): SimpleTreeSchema;
245
+
243
246
  // @public @sealed @system
244
247
  interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
245
248
  }
@@ -255,6 +258,9 @@ export interface DirtyTreeMap {
255
258
  // @alpha
256
259
  export type DirtyTreeStatus = "new" | "changed" | "moved";
257
260
 
261
+ // @alpha
262
+ export function encodeSimpleSchema(simpleSchema: SimpleTreeSchema): JsonCompatibleReadOnly;
263
+
258
264
  // @beta
259
265
  export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TValue extends unknown ? TreeNode & {
260
266
  readonly value: TValue;
@@ -374,6 +380,7 @@ type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
374
380
  // @alpha
375
381
  export const FluidClientVersion: {
376
382
  readonly v2_0: "2.0.0";
383
+ readonly v2_43: "2.43.0";
377
384
  readonly v2_52: "2.52.0";
378
385
  };
379
386
 
@@ -1307,14 +1314,6 @@ export class SchemaFactoryAlpha<out TScope extends string | undefined = string |
1307
1314
  static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
1308
1315
  readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
1309
1316
  scopedFactoryAlpha<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner>;
1310
- static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1311
- staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1312
- static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1313
- stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1314
- static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1315
- types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1316
- static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1317
- typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1318
1317
  }
1319
1318
 
1320
1319
  // @beta
@@ -1328,6 +1327,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
1328
1327
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
1329
1328
  }, false, T, undefined, TCustomMetadata>;
1330
1329
  scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
1330
+ static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1331
+ staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1332
+ static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1333
+ stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1334
+ static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1335
+ types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1336
+ static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1337
+ typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1331
1338
  }
1332
1339
 
1333
1340
  // @public @sealed @system
@@ -1350,8 +1357,8 @@ export interface SchemaStatics {
1350
1357
  readonly string: LeafSchema<"string", string>;
1351
1358
  }
1352
1359
 
1353
- // @alpha @sealed @system
1354
- export interface SchemaStaticsAlpha {
1360
+ // @beta @sealed @system
1361
+ export interface SchemaStaticsBeta {
1355
1362
  readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1356
1363
  stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1357
1364
  readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
@@ -1377,7 +1384,6 @@ export const SharedTree: SharedObjectKind<ITree>;
1377
1384
 
1378
1385
  // @alpha @input
1379
1386
  export interface SharedTreeFormatOptions {
1380
- formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];
1381
1387
  treeEncodeType: TreeCompressionStrategy;
1382
1388
  }
1383
1389
 
@@ -1394,7 +1400,9 @@ export const SharedTreeFormatVersion: {
1394
1400
  export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
1395
1401
 
1396
1402
  // @alpha @input
1397
- export type SharedTreeOptions = Partial<CodecWriteOptions> & Partial<SharedTreeFormatOptions> & SharedTreeOptionsBeta;
1403
+ export interface SharedTreeOptions extends Partial<CodecWriteOptions>, Partial<SharedTreeFormatOptions>, SharedTreeOptionsBeta {
1404
+ readonly enableSharedBranches?: boolean;
1405
+ }
1398
1406
 
1399
1407
  // @beta @input
1400
1408
  export type SharedTreeOptionsBeta = ForestOptions;
@@ -1448,6 +1456,7 @@ export interface SimpleObjectFieldSchema extends SimpleFieldSchema {
1448
1456
 
1449
1457
  // @alpha @sealed
1450
1458
  export interface SimpleObjectNodeSchema<out TCustomMetadata = unknown> extends SimpleNodeSchemaBaseAlpha<NodeKind.Object, TCustomMetadata> {
1459
+ readonly allowUnknownOptionalFields: boolean | undefined;
1451
1460
  readonly fields: ReadonlyMap<string, SimpleObjectFieldSchema>;
1452
1461
  }
1453
1462
 
@@ -2076,14 +2085,14 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
2076
2085
  [I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
2077
2086
  };
2078
2087
 
2079
- // @alpha @sealed @system
2088
+ // @beta @sealed @system
2080
2089
  export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
2081
2090
  readonly [I in keyof T]: T[I] extends {
2082
2091
  type: infer X;
2083
2092
  } ? X : T[I];
2084
2093
  };
2085
2094
 
2086
- // @alpha @sealed @system
2095
+ // @beta @sealed @system
2087
2096
  export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
2088
2097
 
2089
2098
  // @public
@@ -33,6 +33,9 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
33
33
  // @beta @sealed @system
34
34
  export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
35
35
 
36
+ // @beta @sealed @system
37
+ export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
38
+
36
39
  // @beta @input
37
40
  export interface AllowedTypesMetadata {
38
41
  readonly custom?: unknown;
@@ -43,6 +46,11 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
43
46
  [I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
44
47
  };
45
48
 
49
+ // @beta @sealed @system
50
+ export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
51
+ [I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
52
+ };
53
+
46
54
  // @beta @sealed
47
55
  export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
48
56
  readonly metadata: AllowedTypeMetadata;
@@ -58,6 +66,14 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
58
66
  readonly types: T;
59
67
  }
60
68
 
69
+ // @beta @sealed @system
70
+ export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
71
+ }
72
+
73
+ // @beta @sealed @system
74
+ export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
75
+ }
76
+
61
77
  // @public @system
62
78
  type ApplyKind<T, Kind extends FieldKind> = {
63
79
  [FieldKind.Required]: T;
@@ -863,6 +879,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
863
879
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
864
880
  }, false, T, undefined, TCustomMetadata>;
865
881
  scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
882
+ static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
883
+ staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
884
+ static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
885
+ stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
886
+ static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
887
+ types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
888
+ static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
889
+ typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
866
890
  }
867
891
 
868
892
  // @public @sealed @system
@@ -885,6 +909,14 @@ export interface SchemaStatics {
885
909
  readonly string: LeafSchema<"string", string>;
886
910
  }
887
911
 
912
+ // @beta @sealed @system
913
+ export interface SchemaStaticsBeta {
914
+ readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
915
+ stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
916
+ readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
917
+ readonly typesRecursive: <const T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixedUnsafe<T>;
918
+ }
919
+
888
920
  // @beta @sealed
889
921
  export class SchemaUpgrade {
890
922
  // (undocumented)
@@ -1231,6 +1263,16 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
1231
1263
  [I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
1232
1264
  };
1233
1265
 
1266
+ // @beta @sealed @system
1267
+ export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
1268
+ readonly [I in keyof T]: T[I] extends {
1269
+ type: infer X;
1270
+ } ? X : T[I];
1271
+ };
1272
+
1273
+ // @beta @sealed @system
1274
+ export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
1275
+
1234
1276
  // @public
1235
1277
  export type Unenforced<_DesiredExtendsConstraint> = unknown;
1236
1278
 
@@ -33,6 +33,9 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
33
33
  // @beta @sealed @system
34
34
  export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
35
35
 
36
+ // @beta @sealed @system
37
+ export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
38
+
36
39
  // @beta @input
37
40
  export interface AllowedTypesMetadata {
38
41
  readonly custom?: unknown;
@@ -43,6 +46,11 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
43
46
  [I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
44
47
  };
45
48
 
49
+ // @beta @sealed @system
50
+ export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
51
+ [I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
52
+ };
53
+
46
54
  // @beta @sealed
47
55
  export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
48
56
  readonly metadata: AllowedTypeMetadata;
@@ -58,6 +66,14 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
58
66
  readonly types: T;
59
67
  }
60
68
 
69
+ // @beta @sealed @system
70
+ export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
71
+ }
72
+
73
+ // @beta @sealed @system
74
+ export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
75
+ }
76
+
61
77
  // @public @system
62
78
  type ApplyKind<T, Kind extends FieldKind> = {
63
79
  [FieldKind.Required]: T;
@@ -1141,6 +1157,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
1141
1157
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
1142
1158
  }, false, T, undefined, TCustomMetadata>;
1143
1159
  scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
1160
+ static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1161
+ staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1162
+ static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1163
+ stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1164
+ static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1165
+ types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
1166
+ static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1167
+ typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
1144
1168
  }
1145
1169
 
1146
1170
  // @public @sealed @system
@@ -1163,6 +1187,14 @@ export interface SchemaStatics {
1163
1187
  readonly string: LeafSchema<"string", string>;
1164
1188
  }
1165
1189
 
1190
+ // @beta @sealed @system
1191
+ export interface SchemaStaticsBeta {
1192
+ readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
1193
+ stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
1194
+ readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
1195
+ readonly typesRecursive: <const T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixedUnsafe<T>;
1196
+ }
1197
+
1166
1198
  // @beta @sealed
1167
1199
  export class SchemaUpgrade {
1168
1200
  // (undocumented)
@@ -1589,6 +1621,16 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
1589
1621
  [I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
1590
1622
  };
1591
1623
 
1624
+ // @beta @sealed @system
1625
+ export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
1626
+ readonly [I in keyof T]: T[I] extends {
1627
+ type: infer X;
1628
+ } ? X : T[I];
1629
+ };
1630
+
1631
+ // @beta @sealed @system
1632
+ export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
1633
+
1592
1634
  // @public
1593
1635
  export type Unenforced<_DesiredExtendsConstraint> = unknown;
1594
1636
 
package/dist/alpha.d.ts CHANGED
@@ -141,10 +141,14 @@ export {
141
141
  AllowedTypesFull,
142
142
  AllowedTypesFullEvaluated,
143
143
  AllowedTypesFullFromMixed,
144
+ AllowedTypesFullFromMixedUnsafe,
144
145
  AllowedTypesMetadata,
145
146
  AnnotateAllowedTypesList,
147
+ AnnotateAllowedTypesListUnsafe,
146
148
  AnnotatedAllowedType,
149
+ AnnotatedAllowedTypeUnsafe,
147
150
  AnnotatedAllowedTypes,
151
+ AnnotatedAllowedTypesUnsafe,
148
152
  ConciseTree,
149
153
  ErasedBaseType,
150
154
  FixRecursiveArraySchema,
@@ -162,6 +166,7 @@ export {
162
166
  PopUnion,
163
167
  RecordNodeInsertableData,
164
168
  SchemaFactoryBeta,
169
+ SchemaStaticsBeta,
165
170
  SchemaUpgrade,
166
171
  SharedTreeOptionsBeta,
167
172
  TreeBeta,
@@ -171,7 +176,9 @@ export {
171
176
  TreeRecordNode,
172
177
  TreeRecordNodeUnsafe,
173
178
  TreeViewBeta,
179
+ UnannotateAllowedTypeUnsafe,
174
180
  UnannotateAllowedTypesList,
181
+ UnannotateAllowedTypesListUnsafe,
175
182
  UnionToTuple,
176
183
  adaptEnum,
177
184
  asBeta,
@@ -182,11 +189,7 @@ export {
182
189
  // #endregion
183
190
 
184
191
  // #region @alpha APIs
185
- AllowedTypesFullFromMixedUnsafe,
186
192
  AllowedTypesFullUnsafe,
187
- AnnotateAllowedTypesListUnsafe,
188
- AnnotatedAllowedTypeUnsafe,
189
- AnnotatedAllowedTypesUnsafe,
190
193
  ArrayNodeCustomizableSchema,
191
194
  ArrayNodeCustomizableSchemaUnsafe,
192
195
  ArrayNodePojoEmulationSchema,
@@ -246,7 +249,6 @@ export {
246
249
  RevertibleAlphaFactory,
247
250
  RunTransactionParams,
248
251
  SchemaFactoryAlpha,
249
- SchemaStaticsAlpha,
250
252
  SharedTreeFormatOptions,
251
253
  SharedTreeFormatVersion,
252
254
  SharedTreeOptions,
@@ -283,8 +285,6 @@ export {
283
285
  TreeSchemaEncodingOptions,
284
286
  TreeViewAlpha,
285
287
  TreeViewConfigurationAlpha,
286
- UnannotateAllowedTypeUnsafe,
287
- UnannotateAllowedTypesListUnsafe,
288
288
  UnsafeUnknownSchema,
289
289
  ValueSchema,
290
290
  VerboseTree,
@@ -301,6 +301,8 @@ export {
301
301
  createIdentifierIndex,
302
302
  createIndependentTreeAlpha,
303
303
  createSimpleTreeIndex,
304
+ decodeSimpleSchema,
305
+ encodeSimpleSchema,
304
306
  evaluateLazySchema,
305
307
  extractPersistedSchema,
306
308
  generateSchemaFromSimpleSchema,
package/dist/beta.d.ts CHANGED
@@ -141,10 +141,14 @@ export {
141
141
  AllowedTypesFull,
142
142
  AllowedTypesFullEvaluated,
143
143
  AllowedTypesFullFromMixed,
144
+ AllowedTypesFullFromMixedUnsafe,
144
145
  AllowedTypesMetadata,
145
146
  AnnotateAllowedTypesList,
147
+ AnnotateAllowedTypesListUnsafe,
146
148
  AnnotatedAllowedType,
149
+ AnnotatedAllowedTypeUnsafe,
147
150
  AnnotatedAllowedTypes,
151
+ AnnotatedAllowedTypesUnsafe,
148
152
  ConciseTree,
149
153
  ErasedBaseType,
150
154
  FixRecursiveArraySchema,
@@ -162,6 +166,7 @@ export {
162
166
  PopUnion,
163
167
  RecordNodeInsertableData,
164
168
  SchemaFactoryBeta,
169
+ SchemaStaticsBeta,
165
170
  SchemaUpgrade,
166
171
  SharedTreeOptionsBeta,
167
172
  TreeBeta,
@@ -171,7 +176,9 @@ export {
171
176
  TreeRecordNode,
172
177
  TreeRecordNodeUnsafe,
173
178
  TreeViewBeta,
179
+ UnannotateAllowedTypeUnsafe,
174
180
  UnannotateAllowedTypesList,
181
+ UnannotateAllowedTypesListUnsafe,
175
182
  UnionToTuple,
176
183
  adaptEnum,
177
184
  asBeta,
package/dist/index.js CHANGED
@@ -30,8 +30,8 @@ Object.defineProperty(exports, "onAssertionFailure", { enumerable: true, get: fu
30
30
  // Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.
31
31
  /* eslint-disable-next-line
32
32
  no-restricted-syntax,
33
- import/no-internal-modules,
34
- import/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
33
+ import-x/no-internal-modules,
34
+ import-x/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import-x/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
35
35
  */
36
36
  __exportStar(require("@fluidframework/tree/alpha"), exports);
37
37
  const internal_2 = require("@fluidframework/tree/internal");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAiBH,+EAAoE;AAA3D,oHAAA,WAAW,OAAA;AACpB,qEAAmE;AAA1D,mHAAA,eAAe,OAAA;AA4CxB,4GAA4G;AAC5G,gEAAyE;AAAhE,8GAAA,kBAAkB,OAAA;AAI3B,mDAAmD;AACnD,4FAA4F;AAC5F;;;;MAIG;AACH,6DAA2C;AAU3C,4DAIuC;AAEvC;;;;;;;;;GASG;AACU,QAAA,UAAU,GAA4B,qBAAkB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,oBAAoB,CAAC,OAA0B;IAC9D,OAAO,IAAA,+BAA4B,EAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAFD,oDAEC;AAmBD,yDAA0E;AAAjE,2GAAA,eAAe,OAAA;AAAE,qGAAA,SAAS,OAAA;AA4BnC,8DAAiE;AAAxD,wGAAA,YAAY,OAAA;AAarB,4BAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Bundles a collection of Fluid Framework client libraries for easy use when paired with a corresponding service client\n * package (e.g. `@fluidframework/azure-client`, `@fluidframework/tinylicious-client`, or `@fluidframework/odsp-client (BETA)`).\n *\n * @packageDocumentation\n */\n\n// ===============================================================\n// #region Public, Beta and Alpha (non-legacy) exports\n// #region Basic re-exports\n\nexport type {\n\tConnectionState as ConnectionStateType, // TODO: deduplicate ConnectionState types\n\tICriticalContainerError,\n} from \"@fluidframework/container-definitions\";\nexport { AttachState } from \"@fluidframework/container-definitions\";\nexport { ConnectionState } from \"@fluidframework/container-loader\";\nexport type {\n\tContainerAttachProps,\n\tContainerSchema,\n\tIConnection,\n\tIFluidContainer,\n\tIFluidContainerEvents,\n\tIMember,\n\tInitialObjects,\n\tIServiceAudience,\n\tIServiceAudienceEvents,\n\tMemberChangedListener,\n\tMyself,\n} from \"@fluidframework/fluid-static\";\nexport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nexport type {\n\tIErrorBase,\n\tIEventProvider,\n\tIDisposable,\n\tIEvent,\n\tIEventThisPlaceHolder,\n\tIErrorEvent,\n\tErasedType,\n\tIFluidHandle,\n\tIFluidLoadable,\n\tITelemetryBaseProperties,\n\tIEventTransformer,\n\tIProvideFluidLoadable,\n\tIFluidHandleErased,\n\tTransformedEvent,\n\tTelemetryBaseEventPropertyType,\n\tTagged,\n\tReplaceIEventThisPlaceHolder,\n\tFluidObject, // Linked in doc comment\n\tFluidObjectProviderKeys, // Used by FluidObject\n\t/* eslint-disable import/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */\n\tListeners,\n\tIsListener,\n\tListenable,\n\tOff,\n\t/* eslint-enable import/export */\n} from \"@fluidframework/core-interfaces\";\nexport type { ErasedBaseType } from \"@fluidframework/core-interfaces/internal\";\n\n// This is an alpha API, but this package doesn't have an alpha entry point so its imported from \"internal\".\nexport { onAssertionFailure } from \"@fluidframework/core-utils/internal\";\n\nexport type { isFluidHandle } from \"@fluidframework/runtime-utils\";\n\n// Let the tree package manage its own API surface.\n// Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.\n/* eslint-disable-next-line\n\tno-restricted-syntax,\n\timport/no-internal-modules,\n\timport/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.\n\t*/\nexport * from \"@fluidframework/tree/alpha\";\n\n// End of basic public+beta+alpha exports - nothing above this line should\n// depend on an /internal path.\n// #endregion Basic re-exports\n// ---------------------------------------------------------------\n// #region Custom re-exports\n\nimport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nimport type { ITree } from \"@fluidframework/tree\";\nimport {\n\tSharedTree as OriginalSharedTree,\n\tconfiguredSharedTree as originalConfiguredSharedTree,\n\ttype SharedTreeOptions,\n} from \"@fluidframework/tree/internal\";\n\n/**\n * A hierarchical data structure for collaboratively editing strongly typed JSON-like trees\n * of objects, arrays, and other data types.\n * @privateRemarks\n * Here we reexport SharedTree, but with the `@alpha` types (`ISharedObjectKind`) removed, just keeping the `SharedObjectKind`.\n * Doing this requires creating this new typed export rather than relying on a reexport directly from the tree package.\n * The tree package itself does not do this because it's API needs to be usable from the encapsulated API which requires `ISharedObjectKind`.\n * This package however is not intended for use by users of the encapsulated API, and therefor it can discard that interface.\n * @public\n */\nexport const SharedTree: SharedObjectKind<ITree> = OriginalSharedTree;\n\n/**\n * {@link SharedTree} but allowing a non-default configuration.\n * @remarks\n * This is useful for debugging and testing.\n * For example, it can be used to opt into extra validation or see if opting out of some optimizations fixes an issue.\n *\n * With great care, and knowledge of the support and stability of the options exposed here,\n * this can also be used to opt into some features early or for performance tuning.\n *\n * @example\n * ```typescript\n * import {\n * \tTreeCompressionStrategy,\n * \tconfiguredSharedTree,\n * \tFormatValidatorBasic,\n * \tForestTypeReference,\n * } from \"fluid-framework/alpha\";\n * const SharedTree = configuredSharedTree({\n * \tforest: ForestTypeReference,\n * \tjsonValidator: FormatValidatorBasic,\n * \ttreeEncodeType: TreeCompressionStrategy.Uncompressed,\n * });\n * ```\n * @alpha\n */\nexport function configuredSharedTree(options: SharedTreeOptions): SharedObjectKind<ITree> {\n\treturn originalConfiguredSharedTree(options);\n}\n\n// #endregion Custom re-exports\n// #endregion\n\n// ===============================================================\n// #region Legacy exports\n\nexport type {\n\tIDirectory,\n\tIDirectoryEvents,\n\tIDirectoryValueChanged,\n\tISharedDirectory,\n\tISharedDirectoryEvents,\n\tISharedMap,\n\tISharedMapEvents,\n\tIValueChanged,\n} from \"@fluidframework/map/internal\";\n\nexport { SharedDirectory, SharedMap } from \"@fluidframework/map/internal\";\n\nexport type {\n\tDeserializeCallback,\n\tInteriorSequencePlace,\n\tIInterval,\n\tIntervalStickiness,\n\tISequenceDeltaRange,\n\tISerializedInterval,\n\tISharedSegmentSequenceEvents,\n\tISharedString,\n\tSequencePlace,\n\tSharedStringSegment,\n\tSide,\n\tISharedSegmentSequence,\n\tISequenceIntervalCollection,\n\tISequenceIntervalCollectionEvents,\n\tSequenceIntervalIndex,\n} from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tIntervalType,\n\tSequenceDeltaEvent,\n\tSequenceEvent,\n\tSequenceInterval,\n\tSequenceMaintenanceEvent,\n} from \"@fluidframework/sequence/internal\";\n\nexport { SharedString } from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tISharedObject,\n\tISharedObjectEvents,\n} from \"@fluidframework/shared-object-base/internal\";\n\nexport type {\n\tISequencedDocumentMessage, // Leaked via ISharedObjectEvents\n\tIBranchOrigin, // Required for ISequencedDocumentMessage\n\tITrace, // Required for ISequencedDocumentMessage\n} from \"@fluidframework/driver-definitions/internal\";\n\n// #endregion Legacy exports\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAiBH,+EAAoE;AAA3D,oHAAA,WAAW,OAAA;AACpB,qEAAmE;AAA1D,mHAAA,eAAe,OAAA;AA4CxB,4GAA4G;AAC5G,gEAAyE;AAAhE,8GAAA,kBAAkB,OAAA;AAI3B,mDAAmD;AACnD,4FAA4F;AAC5F;;;;MAIG;AACH,6DAA2C;AAU3C,4DAIuC;AAEvC;;;;;;;;;GASG;AACU,QAAA,UAAU,GAA4B,qBAAkB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,oBAAoB,CAAC,OAA0B;IAC9D,OAAO,IAAA,+BAA4B,EAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAFD,oDAEC;AAmBD,yDAA0E;AAAjE,2GAAA,eAAe,OAAA;AAAE,qGAAA,SAAS,OAAA;AA4BnC,8DAAiE;AAAxD,wGAAA,YAAY,OAAA;AAarB,4BAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Bundles a collection of Fluid Framework client libraries for easy use when paired with a corresponding service client\n * package (e.g. `@fluidframework/azure-client`, `@fluidframework/tinylicious-client`, or `@fluidframework/odsp-client (BETA)`).\n *\n * @packageDocumentation\n */\n\n// ===============================================================\n// #region Public, Beta and Alpha (non-legacy) exports\n// #region Basic re-exports\n\nexport type {\n\tConnectionState as ConnectionStateType, // TODO: deduplicate ConnectionState types\n\tICriticalContainerError,\n} from \"@fluidframework/container-definitions\";\nexport { AttachState } from \"@fluidframework/container-definitions\";\nexport { ConnectionState } from \"@fluidframework/container-loader\";\nexport type {\n\tContainerAttachProps,\n\tContainerSchema,\n\tIConnection,\n\tIFluidContainer,\n\tIFluidContainerEvents,\n\tIMember,\n\tInitialObjects,\n\tIServiceAudience,\n\tIServiceAudienceEvents,\n\tMemberChangedListener,\n\tMyself,\n} from \"@fluidframework/fluid-static\";\nexport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nexport type {\n\tIErrorBase,\n\tIEventProvider,\n\tIDisposable,\n\tIEvent,\n\tIEventThisPlaceHolder,\n\tIErrorEvent,\n\tErasedType,\n\tIFluidHandle,\n\tIFluidLoadable,\n\tITelemetryBaseProperties,\n\tIEventTransformer,\n\tIProvideFluidLoadable,\n\tIFluidHandleErased,\n\tTransformedEvent,\n\tTelemetryBaseEventPropertyType,\n\tTagged,\n\tReplaceIEventThisPlaceHolder,\n\tFluidObject, // Linked in doc comment\n\tFluidObjectProviderKeys, // Used by FluidObject\n\t/* eslint-disable import-x/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */\n\tListeners,\n\tIsListener,\n\tListenable,\n\tOff,\n\t/* eslint-enable import-x/export */\n} from \"@fluidframework/core-interfaces\";\nexport type { ErasedBaseType } from \"@fluidframework/core-interfaces/internal\";\n\n// This is an alpha API, but this package doesn't have an alpha entry point so its imported from \"internal\".\nexport { onAssertionFailure } from \"@fluidframework/core-utils/internal\";\n\nexport type { isFluidHandle } from \"@fluidframework/runtime-utils\";\n\n// Let the tree package manage its own API surface.\n// Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.\n/* eslint-disable-next-line\n\tno-restricted-syntax,\n\timport-x/no-internal-modules,\n\timport-x/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import-x/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.\n\t*/\nexport * from \"@fluidframework/tree/alpha\";\n\n// End of basic public+beta+alpha exports - nothing above this line should\n// depend on an /internal path.\n// #endregion Basic re-exports\n// ---------------------------------------------------------------\n// #region Custom re-exports\n\nimport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nimport type { ITree } from \"@fluidframework/tree\";\nimport {\n\tSharedTree as OriginalSharedTree,\n\tconfiguredSharedTree as originalConfiguredSharedTree,\n\ttype SharedTreeOptions,\n} from \"@fluidframework/tree/internal\";\n\n/**\n * A hierarchical data structure for collaboratively editing strongly typed JSON-like trees\n * of objects, arrays, and other data types.\n * @privateRemarks\n * Here we reexport SharedTree, but with the `@alpha` types (`ISharedObjectKind`) removed, just keeping the `SharedObjectKind`.\n * Doing this requires creating this new typed export rather than relying on a reexport directly from the tree package.\n * The tree package itself does not do this because it's API needs to be usable from the encapsulated API which requires `ISharedObjectKind`.\n * This package however is not intended for use by users of the encapsulated API, and therefor it can discard that interface.\n * @public\n */\nexport const SharedTree: SharedObjectKind<ITree> = OriginalSharedTree;\n\n/**\n * {@link SharedTree} but allowing a non-default configuration.\n * @remarks\n * This is useful for debugging and testing.\n * For example, it can be used to opt into extra validation or see if opting out of some optimizations fixes an issue.\n *\n * With great care, and knowledge of the support and stability of the options exposed here,\n * this can also be used to opt into some features early or for performance tuning.\n *\n * @example\n * ```typescript\n * import {\n * \tTreeCompressionStrategy,\n * \tconfiguredSharedTree,\n * \tFormatValidatorBasic,\n * \tForestTypeReference,\n * } from \"fluid-framework/alpha\";\n * const SharedTree = configuredSharedTree({\n * \tforest: ForestTypeReference,\n * \tjsonValidator: FormatValidatorBasic,\n * \ttreeEncodeType: TreeCompressionStrategy.Uncompressed,\n * });\n * ```\n * @alpha\n */\nexport function configuredSharedTree(options: SharedTreeOptions): SharedObjectKind<ITree> {\n\treturn originalConfiguredSharedTree(options);\n}\n\n// #endregion Custom re-exports\n// #endregion\n\n// ===============================================================\n// #region Legacy exports\n\nexport type {\n\tIDirectory,\n\tIDirectoryEvents,\n\tIDirectoryValueChanged,\n\tISharedDirectory,\n\tISharedDirectoryEvents,\n\tISharedMap,\n\tISharedMapEvents,\n\tIValueChanged,\n} from \"@fluidframework/map/internal\";\n\nexport { SharedDirectory, SharedMap } from \"@fluidframework/map/internal\";\n\nexport type {\n\tDeserializeCallback,\n\tInteriorSequencePlace,\n\tIInterval,\n\tIntervalStickiness,\n\tISequenceDeltaRange,\n\tISerializedInterval,\n\tISharedSegmentSequenceEvents,\n\tISharedString,\n\tSequencePlace,\n\tSharedStringSegment,\n\tSide,\n\tISharedSegmentSequence,\n\tISequenceIntervalCollection,\n\tISequenceIntervalCollectionEvents,\n\tSequenceIntervalIndex,\n} from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tIntervalType,\n\tSequenceDeltaEvent,\n\tSequenceEvent,\n\tSequenceInterval,\n\tSequenceMaintenanceEvent,\n} from \"@fluidframework/sequence/internal\";\n\nexport { SharedString } from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tISharedObject,\n\tISharedObjectEvents,\n} from \"@fluidframework/shared-object-base/internal\";\n\nexport type {\n\tISequencedDocumentMessage, // Leaked via ISharedObjectEvents\n\tIBranchOrigin, // Required for ISequencedDocumentMessage\n\tITrace, // Required for ISequencedDocumentMessage\n} from \"@fluidframework/driver-definitions/internal\";\n\n// #endregion Legacy exports\n"]}
package/dist/legacy.d.ts CHANGED
@@ -148,10 +148,14 @@ export {
148
148
  AllowedTypesFull,
149
149
  AllowedTypesFullEvaluated,
150
150
  AllowedTypesFullFromMixed,
151
+ AllowedTypesFullFromMixedUnsafe,
151
152
  AllowedTypesMetadata,
152
153
  AnnotateAllowedTypesList,
154
+ AnnotateAllowedTypesListUnsafe,
153
155
  AnnotatedAllowedType,
156
+ AnnotatedAllowedTypeUnsafe,
154
157
  AnnotatedAllowedTypes,
158
+ AnnotatedAllowedTypesUnsafe,
155
159
  ConciseTree,
156
160
  ErasedBaseType,
157
161
  FixRecursiveArraySchema,
@@ -169,6 +173,7 @@ export {
169
173
  PopUnion,
170
174
  RecordNodeInsertableData,
171
175
  SchemaFactoryBeta,
176
+ SchemaStaticsBeta,
172
177
  SchemaUpgrade,
173
178
  SharedTreeOptionsBeta,
174
179
  TreeBeta,
@@ -178,7 +183,9 @@ export {
178
183
  TreeRecordNode,
179
184
  TreeRecordNodeUnsafe,
180
185
  TreeViewBeta,
186
+ UnannotateAllowedTypeUnsafe,
181
187
  UnannotateAllowedTypesList,
188
+ UnannotateAllowedTypesListUnsafe,
182
189
  UnionToTuple,
183
190
  adaptEnum,
184
191
  asBeta,
package/lib/alpha.d.ts CHANGED
@@ -141,10 +141,14 @@ export {
141
141
  AllowedTypesFull,
142
142
  AllowedTypesFullEvaluated,
143
143
  AllowedTypesFullFromMixed,
144
+ AllowedTypesFullFromMixedUnsafe,
144
145
  AllowedTypesMetadata,
145
146
  AnnotateAllowedTypesList,
147
+ AnnotateAllowedTypesListUnsafe,
146
148
  AnnotatedAllowedType,
149
+ AnnotatedAllowedTypeUnsafe,
147
150
  AnnotatedAllowedTypes,
151
+ AnnotatedAllowedTypesUnsafe,
148
152
  ConciseTree,
149
153
  ErasedBaseType,
150
154
  FixRecursiveArraySchema,
@@ -162,6 +166,7 @@ export {
162
166
  PopUnion,
163
167
  RecordNodeInsertableData,
164
168
  SchemaFactoryBeta,
169
+ SchemaStaticsBeta,
165
170
  SchemaUpgrade,
166
171
  SharedTreeOptionsBeta,
167
172
  TreeBeta,
@@ -171,7 +176,9 @@ export {
171
176
  TreeRecordNode,
172
177
  TreeRecordNodeUnsafe,
173
178
  TreeViewBeta,
179
+ UnannotateAllowedTypeUnsafe,
174
180
  UnannotateAllowedTypesList,
181
+ UnannotateAllowedTypesListUnsafe,
175
182
  UnionToTuple,
176
183
  adaptEnum,
177
184
  asBeta,
@@ -182,11 +189,7 @@ export {
182
189
  // #endregion
183
190
 
184
191
  // #region @alpha APIs
185
- AllowedTypesFullFromMixedUnsafe,
186
192
  AllowedTypesFullUnsafe,
187
- AnnotateAllowedTypesListUnsafe,
188
- AnnotatedAllowedTypeUnsafe,
189
- AnnotatedAllowedTypesUnsafe,
190
193
  ArrayNodeCustomizableSchema,
191
194
  ArrayNodeCustomizableSchemaUnsafe,
192
195
  ArrayNodePojoEmulationSchema,
@@ -246,7 +249,6 @@ export {
246
249
  RevertibleAlphaFactory,
247
250
  RunTransactionParams,
248
251
  SchemaFactoryAlpha,
249
- SchemaStaticsAlpha,
250
252
  SharedTreeFormatOptions,
251
253
  SharedTreeFormatVersion,
252
254
  SharedTreeOptions,
@@ -283,8 +285,6 @@ export {
283
285
  TreeSchemaEncodingOptions,
284
286
  TreeViewAlpha,
285
287
  TreeViewConfigurationAlpha,
286
- UnannotateAllowedTypeUnsafe,
287
- UnannotateAllowedTypesListUnsafe,
288
288
  UnsafeUnknownSchema,
289
289
  ValueSchema,
290
290
  VerboseTree,
@@ -301,6 +301,8 @@ export {
301
301
  createIdentifierIndex,
302
302
  createIndependentTreeAlpha,
303
303
  createSimpleTreeIndex,
304
+ decodeSimpleSchema,
305
+ encodeSimpleSchema,
304
306
  evaluateLazySchema,
305
307
  extractPersistedSchema,
306
308
  generateSchemaFromSimpleSchema,
package/lib/beta.d.ts CHANGED
@@ -141,10 +141,14 @@ export {
141
141
  AllowedTypesFull,
142
142
  AllowedTypesFullEvaluated,
143
143
  AllowedTypesFullFromMixed,
144
+ AllowedTypesFullFromMixedUnsafe,
144
145
  AllowedTypesMetadata,
145
146
  AnnotateAllowedTypesList,
147
+ AnnotateAllowedTypesListUnsafe,
146
148
  AnnotatedAllowedType,
149
+ AnnotatedAllowedTypeUnsafe,
147
150
  AnnotatedAllowedTypes,
151
+ AnnotatedAllowedTypesUnsafe,
148
152
  ConciseTree,
149
153
  ErasedBaseType,
150
154
  FixRecursiveArraySchema,
@@ -162,6 +166,7 @@ export {
162
166
  PopUnion,
163
167
  RecordNodeInsertableData,
164
168
  SchemaFactoryBeta,
169
+ SchemaStaticsBeta,
165
170
  SchemaUpgrade,
166
171
  SharedTreeOptionsBeta,
167
172
  TreeBeta,
@@ -171,7 +176,9 @@ export {
171
176
  TreeRecordNode,
172
177
  TreeRecordNodeUnsafe,
173
178
  TreeViewBeta,
179
+ UnannotateAllowedTypeUnsafe,
174
180
  UnannotateAllowedTypesList,
181
+ UnannotateAllowedTypesListUnsafe,
175
182
  UnionToTuple,
176
183
  adaptEnum,
177
184
  asBeta,
package/lib/index.js CHANGED
@@ -10,8 +10,8 @@ export { onAssertionFailure } from "@fluidframework/core-utils/internal";
10
10
  // Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.
11
11
  /* eslint-disable-next-line
12
12
  no-restricted-syntax,
13
- import/no-internal-modules,
14
- import/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
13
+ import-x/no-internal-modules,
14
+ import-x/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import-x/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
15
15
  */
16
16
  export * from "@fluidframework/tree/alpha";
17
17
  import { SharedTree as OriginalSharedTree, configuredSharedTree as originalConfiguredSharedTree, } from "@fluidframework/tree/internal";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AA4CnE,4GAA4G;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE,mDAAmD;AACnD,4FAA4F;AAC5F;;;;MAIG;AACH,cAAc,4BAA4B,CAAC;AAU3C,OAAO,EACN,UAAU,IAAI,kBAAkB,EAChC,oBAAoB,IAAI,4BAA4B,GAEpD,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAA4B,kBAAkB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC9D,OAAO,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAmBD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA4B1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAajE,4BAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Bundles a collection of Fluid Framework client libraries for easy use when paired with a corresponding service client\n * package (e.g. `@fluidframework/azure-client`, `@fluidframework/tinylicious-client`, or `@fluidframework/odsp-client (BETA)`).\n *\n * @packageDocumentation\n */\n\n// ===============================================================\n// #region Public, Beta and Alpha (non-legacy) exports\n// #region Basic re-exports\n\nexport type {\n\tConnectionState as ConnectionStateType, // TODO: deduplicate ConnectionState types\n\tICriticalContainerError,\n} from \"@fluidframework/container-definitions\";\nexport { AttachState } from \"@fluidframework/container-definitions\";\nexport { ConnectionState } from \"@fluidframework/container-loader\";\nexport type {\n\tContainerAttachProps,\n\tContainerSchema,\n\tIConnection,\n\tIFluidContainer,\n\tIFluidContainerEvents,\n\tIMember,\n\tInitialObjects,\n\tIServiceAudience,\n\tIServiceAudienceEvents,\n\tMemberChangedListener,\n\tMyself,\n} from \"@fluidframework/fluid-static\";\nexport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nexport type {\n\tIErrorBase,\n\tIEventProvider,\n\tIDisposable,\n\tIEvent,\n\tIEventThisPlaceHolder,\n\tIErrorEvent,\n\tErasedType,\n\tIFluidHandle,\n\tIFluidLoadable,\n\tITelemetryBaseProperties,\n\tIEventTransformer,\n\tIProvideFluidLoadable,\n\tIFluidHandleErased,\n\tTransformedEvent,\n\tTelemetryBaseEventPropertyType,\n\tTagged,\n\tReplaceIEventThisPlaceHolder,\n\tFluidObject, // Linked in doc comment\n\tFluidObjectProviderKeys, // Used by FluidObject\n\t/* eslint-disable import/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */\n\tListeners,\n\tIsListener,\n\tListenable,\n\tOff,\n\t/* eslint-enable import/export */\n} from \"@fluidframework/core-interfaces\";\nexport type { ErasedBaseType } from \"@fluidframework/core-interfaces/internal\";\n\n// This is an alpha API, but this package doesn't have an alpha entry point so its imported from \"internal\".\nexport { onAssertionFailure } from \"@fluidframework/core-utils/internal\";\n\nexport type { isFluidHandle } from \"@fluidframework/runtime-utils\";\n\n// Let the tree package manage its own API surface.\n// Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.\n/* eslint-disable-next-line\n\tno-restricted-syntax,\n\timport/no-internal-modules,\n\timport/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.\n\t*/\nexport * from \"@fluidframework/tree/alpha\";\n\n// End of basic public+beta+alpha exports - nothing above this line should\n// depend on an /internal path.\n// #endregion Basic re-exports\n// ---------------------------------------------------------------\n// #region Custom re-exports\n\nimport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nimport type { ITree } from \"@fluidframework/tree\";\nimport {\n\tSharedTree as OriginalSharedTree,\n\tconfiguredSharedTree as originalConfiguredSharedTree,\n\ttype SharedTreeOptions,\n} from \"@fluidframework/tree/internal\";\n\n/**\n * A hierarchical data structure for collaboratively editing strongly typed JSON-like trees\n * of objects, arrays, and other data types.\n * @privateRemarks\n * Here we reexport SharedTree, but with the `@alpha` types (`ISharedObjectKind`) removed, just keeping the `SharedObjectKind`.\n * Doing this requires creating this new typed export rather than relying on a reexport directly from the tree package.\n * The tree package itself does not do this because it's API needs to be usable from the encapsulated API which requires `ISharedObjectKind`.\n * This package however is not intended for use by users of the encapsulated API, and therefor it can discard that interface.\n * @public\n */\nexport const SharedTree: SharedObjectKind<ITree> = OriginalSharedTree;\n\n/**\n * {@link SharedTree} but allowing a non-default configuration.\n * @remarks\n * This is useful for debugging and testing.\n * For example, it can be used to opt into extra validation or see if opting out of some optimizations fixes an issue.\n *\n * With great care, and knowledge of the support and stability of the options exposed here,\n * this can also be used to opt into some features early or for performance tuning.\n *\n * @example\n * ```typescript\n * import {\n * \tTreeCompressionStrategy,\n * \tconfiguredSharedTree,\n * \tFormatValidatorBasic,\n * \tForestTypeReference,\n * } from \"fluid-framework/alpha\";\n * const SharedTree = configuredSharedTree({\n * \tforest: ForestTypeReference,\n * \tjsonValidator: FormatValidatorBasic,\n * \ttreeEncodeType: TreeCompressionStrategy.Uncompressed,\n * });\n * ```\n * @alpha\n */\nexport function configuredSharedTree(options: SharedTreeOptions): SharedObjectKind<ITree> {\n\treturn originalConfiguredSharedTree(options);\n}\n\n// #endregion Custom re-exports\n// #endregion\n\n// ===============================================================\n// #region Legacy exports\n\nexport type {\n\tIDirectory,\n\tIDirectoryEvents,\n\tIDirectoryValueChanged,\n\tISharedDirectory,\n\tISharedDirectoryEvents,\n\tISharedMap,\n\tISharedMapEvents,\n\tIValueChanged,\n} from \"@fluidframework/map/internal\";\n\nexport { SharedDirectory, SharedMap } from \"@fluidframework/map/internal\";\n\nexport type {\n\tDeserializeCallback,\n\tInteriorSequencePlace,\n\tIInterval,\n\tIntervalStickiness,\n\tISequenceDeltaRange,\n\tISerializedInterval,\n\tISharedSegmentSequenceEvents,\n\tISharedString,\n\tSequencePlace,\n\tSharedStringSegment,\n\tSide,\n\tISharedSegmentSequence,\n\tISequenceIntervalCollection,\n\tISequenceIntervalCollectionEvents,\n\tSequenceIntervalIndex,\n} from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tIntervalType,\n\tSequenceDeltaEvent,\n\tSequenceEvent,\n\tSequenceInterval,\n\tSequenceMaintenanceEvent,\n} from \"@fluidframework/sequence/internal\";\n\nexport { SharedString } from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tISharedObject,\n\tISharedObjectEvents,\n} from \"@fluidframework/shared-object-base/internal\";\n\nexport type {\n\tISequencedDocumentMessage, // Leaked via ISharedObjectEvents\n\tIBranchOrigin, // Required for ISequencedDocumentMessage\n\tITrace, // Required for ISequencedDocumentMessage\n} from \"@fluidframework/driver-definitions/internal\";\n\n// #endregion Legacy exports\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AA4CnE,4GAA4G;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE,mDAAmD;AACnD,4FAA4F;AAC5F;;;;MAIG;AACH,cAAc,4BAA4B,CAAC;AAU3C,OAAO,EACN,UAAU,IAAI,kBAAkB,EAChC,oBAAoB,IAAI,4BAA4B,GAEpD,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAA4B,kBAAkB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC9D,OAAO,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAmBD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA4B1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAajE,4BAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Bundles a collection of Fluid Framework client libraries for easy use when paired with a corresponding service client\n * package (e.g. `@fluidframework/azure-client`, `@fluidframework/tinylicious-client`, or `@fluidframework/odsp-client (BETA)`).\n *\n * @packageDocumentation\n */\n\n// ===============================================================\n// #region Public, Beta and Alpha (non-legacy) exports\n// #region Basic re-exports\n\nexport type {\n\tConnectionState as ConnectionStateType, // TODO: deduplicate ConnectionState types\n\tICriticalContainerError,\n} from \"@fluidframework/container-definitions\";\nexport { AttachState } from \"@fluidframework/container-definitions\";\nexport { ConnectionState } from \"@fluidframework/container-loader\";\nexport type {\n\tContainerAttachProps,\n\tContainerSchema,\n\tIConnection,\n\tIFluidContainer,\n\tIFluidContainerEvents,\n\tIMember,\n\tInitialObjects,\n\tIServiceAudience,\n\tIServiceAudienceEvents,\n\tMemberChangedListener,\n\tMyself,\n} from \"@fluidframework/fluid-static\";\nexport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nexport type {\n\tIErrorBase,\n\tIEventProvider,\n\tIDisposable,\n\tIEvent,\n\tIEventThisPlaceHolder,\n\tIErrorEvent,\n\tErasedType,\n\tIFluidHandle,\n\tIFluidLoadable,\n\tITelemetryBaseProperties,\n\tIEventTransformer,\n\tIProvideFluidLoadable,\n\tIFluidHandleErased,\n\tTransformedEvent,\n\tTelemetryBaseEventPropertyType,\n\tTagged,\n\tReplaceIEventThisPlaceHolder,\n\tFluidObject, // Linked in doc comment\n\tFluidObjectProviderKeys, // Used by FluidObject\n\t/* eslint-disable import-x/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */\n\tListeners,\n\tIsListener,\n\tListenable,\n\tOff,\n\t/* eslint-enable import-x/export */\n} from \"@fluidframework/core-interfaces\";\nexport type { ErasedBaseType } from \"@fluidframework/core-interfaces/internal\";\n\n// This is an alpha API, but this package doesn't have an alpha entry point so its imported from \"internal\".\nexport { onAssertionFailure } from \"@fluidframework/core-utils/internal\";\n\nexport type { isFluidHandle } from \"@fluidframework/runtime-utils\";\n\n// Let the tree package manage its own API surface.\n// Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.\n/* eslint-disable-next-line\n\tno-restricted-syntax,\n\timport-x/no-internal-modules,\n\timport-x/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import-x/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.\n\t*/\nexport * from \"@fluidframework/tree/alpha\";\n\n// End of basic public+beta+alpha exports - nothing above this line should\n// depend on an /internal path.\n// #endregion Basic re-exports\n// ---------------------------------------------------------------\n// #region Custom re-exports\n\nimport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nimport type { ITree } from \"@fluidframework/tree\";\nimport {\n\tSharedTree as OriginalSharedTree,\n\tconfiguredSharedTree as originalConfiguredSharedTree,\n\ttype SharedTreeOptions,\n} from \"@fluidframework/tree/internal\";\n\n/**\n * A hierarchical data structure for collaboratively editing strongly typed JSON-like trees\n * of objects, arrays, and other data types.\n * @privateRemarks\n * Here we reexport SharedTree, but with the `@alpha` types (`ISharedObjectKind`) removed, just keeping the `SharedObjectKind`.\n * Doing this requires creating this new typed export rather than relying on a reexport directly from the tree package.\n * The tree package itself does not do this because it's API needs to be usable from the encapsulated API which requires `ISharedObjectKind`.\n * This package however is not intended for use by users of the encapsulated API, and therefor it can discard that interface.\n * @public\n */\nexport const SharedTree: SharedObjectKind<ITree> = OriginalSharedTree;\n\n/**\n * {@link SharedTree} but allowing a non-default configuration.\n * @remarks\n * This is useful for debugging and testing.\n * For example, it can be used to opt into extra validation or see if opting out of some optimizations fixes an issue.\n *\n * With great care, and knowledge of the support and stability of the options exposed here,\n * this can also be used to opt into some features early or for performance tuning.\n *\n * @example\n * ```typescript\n * import {\n * \tTreeCompressionStrategy,\n * \tconfiguredSharedTree,\n * \tFormatValidatorBasic,\n * \tForestTypeReference,\n * } from \"fluid-framework/alpha\";\n * const SharedTree = configuredSharedTree({\n * \tforest: ForestTypeReference,\n * \tjsonValidator: FormatValidatorBasic,\n * \ttreeEncodeType: TreeCompressionStrategy.Uncompressed,\n * });\n * ```\n * @alpha\n */\nexport function configuredSharedTree(options: SharedTreeOptions): SharedObjectKind<ITree> {\n\treturn originalConfiguredSharedTree(options);\n}\n\n// #endregion Custom re-exports\n// #endregion\n\n// ===============================================================\n// #region Legacy exports\n\nexport type {\n\tIDirectory,\n\tIDirectoryEvents,\n\tIDirectoryValueChanged,\n\tISharedDirectory,\n\tISharedDirectoryEvents,\n\tISharedMap,\n\tISharedMapEvents,\n\tIValueChanged,\n} from \"@fluidframework/map/internal\";\n\nexport { SharedDirectory, SharedMap } from \"@fluidframework/map/internal\";\n\nexport type {\n\tDeserializeCallback,\n\tInteriorSequencePlace,\n\tIInterval,\n\tIntervalStickiness,\n\tISequenceDeltaRange,\n\tISerializedInterval,\n\tISharedSegmentSequenceEvents,\n\tISharedString,\n\tSequencePlace,\n\tSharedStringSegment,\n\tSide,\n\tISharedSegmentSequence,\n\tISequenceIntervalCollection,\n\tISequenceIntervalCollectionEvents,\n\tSequenceIntervalIndex,\n} from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tIntervalType,\n\tSequenceDeltaEvent,\n\tSequenceEvent,\n\tSequenceInterval,\n\tSequenceMaintenanceEvent,\n} from \"@fluidframework/sequence/internal\";\n\nexport { SharedString } from \"@fluidframework/sequence/internal\";\n\nexport type {\n\tISharedObject,\n\tISharedObjectEvents,\n} from \"@fluidframework/shared-object-base/internal\";\n\nexport type {\n\tISequencedDocumentMessage, // Leaked via ISharedObjectEvents\n\tIBranchOrigin, // Required for ISequencedDocumentMessage\n\tITrace, // Required for ISequencedDocumentMessage\n} from \"@fluidframework/driver-definitions/internal\";\n\n// #endregion Legacy exports\n"]}
package/lib/legacy.d.ts CHANGED
@@ -148,10 +148,14 @@ export {
148
148
  AllowedTypesFull,
149
149
  AllowedTypesFullEvaluated,
150
150
  AllowedTypesFullFromMixed,
151
+ AllowedTypesFullFromMixedUnsafe,
151
152
  AllowedTypesMetadata,
152
153
  AnnotateAllowedTypesList,
154
+ AnnotateAllowedTypesListUnsafe,
153
155
  AnnotatedAllowedType,
156
+ AnnotatedAllowedTypeUnsafe,
154
157
  AnnotatedAllowedTypes,
158
+ AnnotatedAllowedTypesUnsafe,
155
159
  ConciseTree,
156
160
  ErasedBaseType,
157
161
  FixRecursiveArraySchema,
@@ -169,6 +173,7 @@ export {
169
173
  PopUnion,
170
174
  RecordNodeInsertableData,
171
175
  SchemaFactoryBeta,
176
+ SchemaStaticsBeta,
172
177
  SchemaUpgrade,
173
178
  SharedTreeOptionsBeta,
174
179
  TreeBeta,
@@ -178,7 +183,9 @@ export {
178
183
  TreeRecordNode,
179
184
  TreeRecordNodeUnsafe,
180
185
  TreeViewBeta,
186
+ UnannotateAllowedTypeUnsafe,
181
187
  UnannotateAllowedTypesList,
188
+ UnannotateAllowedTypesListUnsafe,
182
189
  UnionToTuple,
183
190
  adaptEnum,
184
191
  asBeta,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.71.0",
3
+ "version": "2.72.0",
4
4
  "description": "The main entry point into Fluid Framework public packages",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -57,25 +57,25 @@
57
57
  "main": "lib/index.js",
58
58
  "types": "lib/public.d.ts",
59
59
  "dependencies": {
60
- "@fluidframework/container-definitions": "~2.71.0",
61
- "@fluidframework/container-loader": "~2.71.0",
62
- "@fluidframework/core-interfaces": "~2.71.0",
63
- "@fluidframework/core-utils": "~2.71.0",
64
- "@fluidframework/driver-definitions": "~2.71.0",
65
- "@fluidframework/fluid-static": "~2.71.0",
66
- "@fluidframework/map": "~2.71.0",
67
- "@fluidframework/runtime-utils": "~2.71.0",
68
- "@fluidframework/sequence": "~2.71.0",
69
- "@fluidframework/shared-object-base": "~2.71.0",
70
- "@fluidframework/tree": "~2.71.0"
60
+ "@fluidframework/container-definitions": "~2.72.0",
61
+ "@fluidframework/container-loader": "~2.72.0",
62
+ "@fluidframework/core-interfaces": "~2.72.0",
63
+ "@fluidframework/core-utils": "~2.72.0",
64
+ "@fluidframework/driver-definitions": "~2.72.0",
65
+ "@fluidframework/fluid-static": "~2.72.0",
66
+ "@fluidframework/map": "~2.72.0",
67
+ "@fluidframework/runtime-utils": "~2.72.0",
68
+ "@fluidframework/sequence": "~2.72.0",
69
+ "@fluidframework/shared-object-base": "~2.72.0",
70
+ "@fluidframework/tree": "~2.72.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@arethetypeswrong/cli": "^0.17.1",
74
74
  "@biomejs/biome": "~1.9.3",
75
- "@fluid-tools/build-cli": "^0.58.3",
75
+ "@fluid-tools/build-cli": "^0.60.0",
76
76
  "@fluidframework/build-common": "^2.0.3",
77
- "@fluidframework/build-tools": "^0.58.3",
78
- "@fluidframework/eslint-config-fluid": "^7.0.0",
77
+ "@fluidframework/build-tools": "^0.60.0",
78
+ "@fluidframework/eslint-config-fluid": "~2.72.0",
79
79
  "@microsoft/api-extractor": "7.52.11",
80
80
  "@types/node": "^18.19.0",
81
81
  "concurrently": "^8.2.1",
package/src/index.ts CHANGED
@@ -54,12 +54,12 @@ export type {
54
54
  ReplaceIEventThisPlaceHolder,
55
55
  FluidObject, // Linked in doc comment
56
56
  FluidObjectProviderKeys, // Used by FluidObject
57
- /* eslint-disable import/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */
57
+ /* eslint-disable import-x/export -- The event APIs are known to conflict, and this is intended as the exports via `@fluidframework/core-interfaces` are preferred over the deprecated ones from `@fluidframework/tree`. */
58
58
  Listeners,
59
59
  IsListener,
60
60
  Listenable,
61
61
  Off,
62
- /* eslint-enable import/export */
62
+ /* eslint-enable import-x/export */
63
63
  } from "@fluidframework/core-interfaces";
64
64
  export type { ErasedBaseType } from "@fluidframework/core-interfaces/internal";
65
65
 
@@ -72,8 +72,8 @@ export type { isFluidHandle } from "@fluidframework/runtime-utils";
72
72
  // Note: this only surfaces the `@public, @beta and @alpha` API items from the tree package.
73
73
  /* eslint-disable-next-line
74
74
  no-restricted-syntax,
75
- import/no-internal-modules,
76
- import/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
75
+ import-x/no-internal-modules,
76
+ import-x/export -- This re-exports all non-conflicting APIs from `@fluidframework/tree`. In cases where * exports conflict with named exports, the named exports take precedence per https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-getexportednames. This does trigger the `import-x/export` lint warning (which is intentionally disabled here). This approach ensures that the non-deprecated versions of the event APIs from `@fluidframework/core-interfaces` (provided as named indirect exports) eclipse the deprecated ones from `@fluidframework/tree`. The preferred versions of the event APIs are those exported via `@fluidframework/core-interfaces`.
77
77
  */
78
78
  export * from "@fluidframework/tree/alpha";
79
79