Skip to content

Latest commit

 

History

History
444 lines (287 loc) · 23.7 KB

File metadata and controls

444 lines (287 loc) · 23.7 KB

fluid-framework

2.0.0-rc.5.0.0

Minor Changes

  • fluid-framework: Type Erase ISharedObjectKind (#21081) 78f228e370

    A new type, SharedObjectKind is added as a type erased version of ISharedObjectKind and DataObjectClass.

    This type fills the role of both ISharedObjectKind and DataObjectClass in the @public "declarative API" exposed in the fluid-framework package.

    This allows several types referenced by ISharedObjectKind to be made @alpha as they should only need to be used by legacy code and users of the unstable/alpha/legacy "encapsulated API".

    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. The full list of such types is:

    • SharedTree as exported from @fluidframwork/tree: It is still exported as @public from fluid-framework as SharedObjectKind.
    • ISharedObjectKind: See new SharedObjectKind type for use in @public APIs. ISharedObject
    • IChannel
    • IChannelAttributes
    • IChannelFactory
    • IExperimentalIncrementalSummaryContext
    • IGarbageCollectionData
    • ISummaryStats
    • ISummaryTreeWithStats
    • ITelemetryContext
    • IDeltaManagerErased
    • IFluidDataStoreRuntimeEvents
    • IFluidHandleContext
    • IProvideFluidHandleContext

    Removed APIs:

    • DataObjectClass: Usages replaced with SharedObjectKind.
    • LoadableObjectClass: Replaced with SharedObjectKind.
    • LoadableObjectClassRecord: Replaced with Record<string, SharedObjectKind>.
  • tree: Added support for optional schema validation on newly inserted content in SharedTree (#21011) b14e9fa607

    When defining how to view a SharedTree, an application can now specify that new content inserted into the tree should be subject to schema validation at the time it is inserted, so if it's not valid according to the stored schema in the tree an error is thrown immediately.

    This can be accomplished by passing an ITreeConfigurationOptions argument with enableSchemaValidation set to true when creating a TreeConfiguration to use with the SharedTree.

    Since this feature requires additional compute when inserting new content into the tree, it is not enabled by default.

  • Update to TypeScript 5.4 (#21214) 0e6256c722

    Update package implementations to use TypeScript 5.4.5.

  • fluid-framework: Remove some types from @public that are not needed (#21326) b629cb80b0

    Mark the following APIs @alpha instead of @public:

    • IBranchOrigin
    • ISequencedDocumentMessage
    • ISignalMessage
    • ISignalMessageBase
    • ITrace
  • tree: A new tree status has been added for SharedTree nodes. (#21270) 8760e321b0

    TreeStatus.Created indicates that a SharedTree node has been constructed but not yet inserted into the tree. Constraints passed to the runTransaction API are now marked as readonly.

  • fluid-framework: Remove several types from @public scope (#21142) 983e9f09f7

    The following types have been moved from @public to @alpha:

    • IFluidSerializer
    • ISharedObjectEvents
    • IChannelServices
    • IChannelStorageService
    • IDeltaConnection
    • IDeltaHandler

    These should not be needed by users of the declarative API, which is what @public is targeting.

  • sequence: Stop ISharedString extending SharedObject (#21067) 47465f4b12

    ISharedString no longer extends SharedSegmentSequence and instead extends the new ISharedSegmentSequence, which may be missing some APIs.

    Attempt to migrate off the missing APIs, but if that is not practical, request they be added to ISharedSegmentSequence and cast to SharedSegmentSequence as a workaround temporally.

  • Update to ES 2022 (#21292) 68921502f7

    Update tsconfig to target ES 2022.

  • tree: Move several types into InternalTypes (#21482) 64d49dd362

    The stable public API surface for Tree has been reduced. Several types have been moved into InternalTypes, indicating that they are not fully stable nor intended to be referenced by users of Tree.

    • NodeBuilderData
    • FieldHasDefault
    • TreeNodeSchemaNonClass
    • TreeArrayNodeBase
    • ScopedSchemaName
    • DefaultProvider
    • typeNameSymbol
    • InsertableObjectFromSchemaRecord
    • ObjectFromSchemaRecord
    • FieldHasDefaultUnsafe
    • ObjectFromSchemaRecordUnsafe
    • TreeObjectNodeUnsafe
    • TreeFieldFromImplicitFieldUnsafe
    • TreeNodeFromImplicitAllowedTypesUnsafe
    • InsertableTreeNodeFromImplicitAllowedTypesUnsafe
    • TreeArrayNodeUnsafe
    • TreeMapNodeUnsafe
    • InsertableObjectFromSchemaRecordUnsafe
    • InsertableTreeFieldFromImplicitFieldUnsafe
    • InsertableTypedNodeUnsafe
    • NodeBuilderDataUnsafe
    • NodeFromSchemaUnsafe
    • FlexList
    • TreeApi

    Additionally a few more types which could not be moved due to technically limitations have been documented that they should be treated similarly.

    • TreeNodeApi
    • TreeNodeSchemaCore
    • All *Unsafe type (use for construction of recursive schema).
    • WithType
    • AllowedTypes
    • FieldSchemaUnsafe

    Also to reduce confusion type was renamed to typeNameSymbol, and is now only type exported. Tree.is should be used to get type information from TreeNodes instead.

  • tree: object node fields with statically known default values are now optional (#21193) 21eac41660

    Makes object node fields with statically known default values (i.e., optional and identifier fields) optional when creating trees, where they were previously required.

    Example:

    class Foo extends schemaFactory.object("Foo", {
    	name: schemaFactory.string,
    	id: schemaFactory.identifier,
    	nickname: schemaFactory.optional(schemaFactory.string),
    }) {}
    
    // Before
    const foo = new Foo({
    	name: "Bar",
    	id: undefined, // Had to explicitly specify `undefined` to opt into default behavior
    	nickname: undefined, // Had to explicitly specify `undefined` for optional field
    });
    
    // After
    const foo = new Foo({
    	name: "Bar",
    	// Can omit `id` and `nickname` fields, as both have statically known defaults!
    });
  • tree: Breaking change: TreeStatus.Created is now TreeStatus.New (#21278) 5a26346a14

    TreeStatus.Created has been renamed to TreeStatus.New.

  • core-interfaces, tree: Unify IDisposable interfaces (#21184) cfcb827851

    Public APIs in @fluidframework/tree now use IDisposable from @fluidframework/core-interfaces replacing disposeSymbol with "dispose".

    IDisposable in @fluidframework/core-interfaces is now @sealed indicating that third parties should not implement it to reserve the ability for Fluid Framework to extend it to include Symbol.dispose as a future non-breaking change.

  • fluid-framework: Cleanup fluid-framework legacy exports (#21153) efee21c296

    Cleanup fluid-framework legacy exports to remove no longer required types.

2.0.0-rc.4.0.0

Minor Changes

  • SharedString now uses ISharedObjectKind and does not export the factory 96872186d0

    Most users of SharedString should be unaffected as long as they stick to the factory patterns supported by ISharedObjectKind. If the actual class type is needed it can be found as SharedStringClass.

  • Deprecated members of IFluidHandle are split off into new IFluidHandleInternal interface 96872186d0

    Split IFluidHandle into two interfaces, IFluidHandle and IFluidHandleInternal. Code depending on the previously deprecated members of IFluidHandle can access them by using toFluidHandleInternal from @fluidframework/runtime-utils/legacy.

    External implementation of the IFluidHandle interface are not supported: this change makes the typing better convey this using the ErasedType pattern. Any existing and previously working, and now broken, external implementations of IFluidHandle should still work at runtime, but will need some unsafe type casts to compile. Such handle implementation may break in the future and thus should be replaced with use of handles produced by the Fluid Framework client packages.

  • Minor API fixes for "@fluidframework/tree" package. 96872186d0

    Changes constructor for FieldSchema from public to private. Users should call makeFieldSchema to create instance of FieldSchema.

  • Make several driver types no longer public b7ad7d0b55

    Move the following types from @public to @alpha:

    • ITokenClaims
    • IDocumentMessage
    • IClientConfiguration
    • IAnyDriverError
    • IDriverErrorBase
    • DriverErrorTypes

    DriverErrorTypes is no longer exported from the fluid-framework package.

  • Rename AzureMember.userName to AzureMember.name and IMember.userId to IMember.id 96872186d0

    1. Renamed AzureMember.userName to AzureMember.name to establish uniform naming across odsp-client and azure-client.
    2. Renamed IMember.userId to IMember.id to align with the properties received from AFR.

2.0.0-rc.3.0.0

Major Changes

  • fluid-framework: DDS classes are no longer publicly exported 97d68aa06b

    SharedDirectory now only exports its factory and the interface type. The actual concrete classes which leak implementation details are no longer exported. Users of the SharedDirectory type should use ISharedDirectory.

    Most of other internal crufts are also hided within the API surface, such as the encoded format, ILocalValue, ICreateInfo, local op metadata types, etc.

  • Packages now use package.json "exports" and require modern module resolution 97d68aa06b

    Fluid Framework packages have been updated to use the package.json "exports" field to define explicit entry points for both TypeScript types and implementation code.

    This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:

    • "moduleResolution": "Node16" with "module": "Node16"
    • "moduleResolution": "Bundler" with "module": "ESNext"

    We recommend using Node16/Node16 unless absolutely necessary. That will produce transpiled JavaScript that is suitable for use with modern versions of Node.js and Bundlers. See the TypeScript documentation for more information regarding the module and moduleResolution options.

    Node10 moduleResolution is not supported; it does not support Fluid Framework's API structuring pattern that is used to distinguish stable APIs from those that are in development.

Minor Changes

  • tree: Allow root editing and make TreeView parameterized over schema. 97d68aa06b

    TreeView now is parameterized over the field schema instead of the root field type. This was needed to infer the correct input type when reassigning the root. Code providing an explicit type to TreeView, like TreeView<Foo> can usually be updated by replacing that with TreeView<typeof Foo>.

  • fluid-framework: Replace SharedObjectClass with new ISharedObjectKind type. 97d68aa06b

    The static objects used as SharedObjectClass now explicitly implement the new ISharedObjectKind type. SharedObjectClass has been removed as ISharedObjectKind now fills that role. LoadableObjectCtor has been inlined as it only had one use: an external user of it can replace it with (new (...args: any[]) => T).

  • fluid-framework: Moved SharedMap to 'fluid-framework/legacy' 97d68aa06b

    Please use SharedTree for new containers. SharedMap is supported for loading preexisting Fluid Framework 1.x containers only.

    Fluid Framework 1.x users migrating to Fluid Framework 2.x will need to import SharedMap from the './legacy' import path.

    import { SharedMap } from "fluid-framework/legacy";
  • fluid-framework: Make some interface members readonly 97d68aa06b

    Remove unneeded mutability from some interface members.

2.0.0-rc.2.0.0

Minor Changes

  • fluid-framework: EventEmitterWithErrorHandling is no longer publicly exported (#19717) ae1d0be26d

    EventEmitterWithErrorHandling is intended for authoring DDSes, and thus is only intended for use within the Fluid Framework client packages. It is no longer publicly exported: any users should fine their own solution or be upstreamed. EventEmitterWithErrorHandling is available for now as @alpha to make this migration less disrupting for any existing users.

  • fluid-framework: SharedObject classes are no longer exported as public (#19717) ae1d0be26d

    SharedObject and SharedObjectCore are intended for authoring DDSes, and thus are only intended for use within the Fluid Framework client packages. They is no longer publicly exported: any users should fine their own solution or be upstreamed. SharedObject and SharedObjectCore are available for now as @alpha to make this migration less disrupting for any existing users.

  • API tightening (#20012) 049de899dd

    The Fluid Framework API has been clarified with tags applied to package exports. As we are working toward a clear, safe, and stable API surface, some build settings and imports may need to be adjusted.

    Now: Most packages are specifying "exports" - import specifierss like @fluidframework/foo/lib/internals will become build errors. The fix is to use only public APIs from @fluidframework/foo.

    Coming soon: Build resolutions (moduleResolution in tsconfig compilerOptions) will need to be resolved with Node16, NodeNext, or a bundler that supports resolution of named import/export paths. Internally, some FF packages will use @fluidframework/foo/internal import paths that allow packages to talk to each other using non-public APIs.

    Final stage: APIs that are not tagged @public will be removed from @fluidframework/foo imports.

  • Deprecated error-related enums have been removed (#19067) 59793302e5

    Error-related enums ContainerErrorType, DriverErrorType, OdspErrorType and RouterliciousErrorType were previously deprecated and are now removed. There are replacement object-based enumerations of ContainerErrorTypes, DriverErrorTypes, OdspErrorTypes and RouterliciousErrorTypes. Refer to the release notes of Fluid Framework version 2.0.0-internal.7.0.0 for details on the replacements.

  • map, tree: DDS classes are no longer publicly exported (#19717) ae1d0be26d

    SharedMap and SharedTree now only export their factories and the interface types. The actual concrete classes which leak implementation details are no longer exported. Users of the SharedMap type should use ISharedMap. Users of the SharedTree type should use ISharedTree.

  • tree: Minor API fixes for "@fluidframework/tree" package. (#19057) 3e0f218832

    Rename IterableTreeListContent to IterableTreeArrayContent, inline TreeMapNodeBase into TreeMapNode, rename TreeArrayNode.spread to TreeArrayNode.spread and remove create which was not supposed to be public (use TreeArrayNode.spread instead).

  • fluid-framework: ContainerSchema is now readonly (#19717) ae1d0be26d

    The ContainerSchema type is intended for defining input to these packages. This should make the APIs more tolerant and thus be non-breaking, however its possible for some users of ContainerSchema to use it in ways where this could be a breaking change: any such users should remove their mutations and/or use a different type.

2.0.0-rc.1.0.0

Dependency updates only.

2.0.0-internal.8.0.0

Major Changes

  • azure-client: Removed deprecated FluidStatic classes 9a451d4946

    Several FluidStatic classes were unnecessarily exposed and were deprecated in an earlier release. They have been replaced with creation functions. This helps us keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the public surface area of downstream packages. The removed classes are as follows:

    • AzureAudience (use IAzureAudience instead)
    • TinyliciousAudience (use ITinyliciousAudience instead)
    • DOProviderContainerRuntimeFactory
    • FluidContainer
    • ServiceAudience

2.0.0-internal.7.4.0

Minor Changes

  • azure-client: Deprecated FluidStatic Classes (#18402) 589ec39de5

    Several FluidStatic classes were unnecessarily exposed. They have been replaced with creation functions. This helps us keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the public surface area of downstream packages. The deprecated classes are as follows:

    • AzureAudience (use IAzureAudience instead)
    • TinyliciousAudience (use ITinyliciousAudience instead)
    • DOProviderContainerRuntimeFactory
    • FluidContainer
    • ServiceAudience

2.0.0-internal.7.3.0

Dependency updates only.

2.0.0-internal.7.2.0

Dependency updates only.

2.0.0-internal.7.1.0

Dependency updates only.

2.0.0-internal.7.0.0

Major Changes

  • Minimum TypeScript version now 5.1.6 871b3493dd

    The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.

2.0.0-internal.6.4.0

Dependency updates only.

2.0.0-internal.6.3.0

Dependency updates only.

2.0.0-internal.6.2.0

Dependency updates only.

2.0.0-internal.6.1.0

Dependency updates only.

2.0.0-internal.6.0.0

Major Changes

  • IntervalConflictResolver removed 8abce8cdb4

    IntervalConflictResolver has been removed. Any lingering usages in application code can be removed as well. This change also marks APIs deprecated in #14318 as internal.

  • RootDataObject and RootDataObjectProps no longer exported from fluid-static or fluid-framework packages 8abce8cdb4

    RootDataObject and RootDataObjectProps are internal implementations and not intended for direct use. Instead use IRootDataObject to refer to the root data object.

  • Upgraded typescript transpilation target to ES2020 8abce8cdb4

    Upgraded typescript transpilation target to ES2020. This is done in order to decrease the bundle sizes of Fluid Framework packages. This has provided size improvements across the board for ex. Loader, Driver, Runtime etc. Reduced bundle sizes helps to load lesser code in apps and hence also helps to improve the perf.If any app wants to target any older versions of browsers with which this target version is not compatible, then they can use packages like babel to transpile to a older target.

2.0.0-internal.5.4.0

Dependency updates only.

2.0.0-internal.5.3.0

Dependency updates only.

2.0.0-internal.5.2.0

Dependency updates only.

2.0.0-internal.5.1.0

Dependency updates only.

2.0.0-internal.5.0.0

Dependency updates only.

2.0.0-internal.4.4.0

Dependency updates only.

2.0.0-internal.4.1.0

Dependency updates only.