@fluidframework/fluid-static 2.41.0-338401 → 2.42.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 +8 -0
- package/dist/fluidContainer.d.ts +14 -5
- package/dist/fluidContainer.d.ts.map +1 -1
- package/dist/fluidContainer.js +10 -3
- package/dist/fluidContainer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/rootDataObject.d.ts +16 -2
- package/dist/rootDataObject.d.ts.map +1 -1
- package/dist/rootDataObject.js +37 -25
- package/dist/rootDataObject.js.map +1 -1
- package/dist/serviceAudience.js +0 -2
- package/dist/serviceAudience.js.map +1 -1
- package/dist/types.d.ts +23 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/lib/fluidContainer.d.ts +14 -5
- package/lib/fluidContainer.d.ts.map +1 -1
- package/lib/fluidContainer.js +10 -3
- package/lib/fluidContainer.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/rootDataObject.d.ts +16 -2
- package/lib/rootDataObject.d.ts.map +1 -1
- package/lib/rootDataObject.js +37 -25
- package/lib/rootDataObject.js.map +1 -1
- package/lib/serviceAudience.js +0 -2
- package/lib/serviceAudience.js.map +1 -1
- package/lib/types.d.ts +23 -10
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +21 -20
- package/src/fluidContainer.ts +45 -7
- package/src/index.ts +0 -3
- package/src/rootDataObject.ts +81 -29
- package/src/serviceAudience.ts +0 -2
- package/src/types.ts +30 -11
package/lib/types.d.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import type { DataObjectKind } from "@fluidframework/aqueduct/internal";
|
|
6
|
-
import type {
|
|
6
|
+
import type { ContainerExtensionStore } from "@fluidframework/container-runtime-definitions/internal";
|
|
7
|
+
import type { IEvent, IEventProvider, IFluidHandle, IFluidLoadable } from "@fluidframework/core-interfaces";
|
|
7
8
|
import type { SharedObjectKind } from "@fluidframework/shared-object-base";
|
|
8
9
|
import type { ISharedObjectKind } from "@fluidframework/shared-object-base/internal";
|
|
9
10
|
/**
|
|
@@ -16,7 +17,6 @@ import type { ISharedObjectKind } from "@fluidframework/shared-object-base/inter
|
|
|
16
17
|
export type CompatibilityMode = "1" | "2";
|
|
17
18
|
/**
|
|
18
19
|
* A mapping of string identifiers to instantiated `DataObject`s or `SharedObject`s.
|
|
19
|
-
* @internal
|
|
20
20
|
*/
|
|
21
21
|
export type LoadableObjectRecord = Record<string, IFluidLoadable>;
|
|
22
22
|
/**
|
|
@@ -83,18 +83,11 @@ export interface ContainerSchema {
|
|
|
83
83
|
*/
|
|
84
84
|
readonly dynamicObjectTypes?: readonly SharedObjectKind[];
|
|
85
85
|
}
|
|
86
|
-
/**
|
|
87
|
-
* @internal
|
|
88
|
-
*/
|
|
89
|
-
export interface IProvideRootDataObject {
|
|
90
|
-
readonly IRootDataObject: IRootDataObject;
|
|
91
|
-
}
|
|
92
86
|
/**
|
|
93
87
|
* Holds the collection of objects that the container was initially created with, as well as provides the ability
|
|
94
88
|
* to dynamically create further objects during usage.
|
|
95
|
-
* @internal
|
|
96
89
|
*/
|
|
97
|
-
export interface IRootDataObject
|
|
90
|
+
export interface IRootDataObject {
|
|
98
91
|
/**
|
|
99
92
|
* Provides a record of the initial objects defined on creation.
|
|
100
93
|
*/
|
|
@@ -107,6 +100,25 @@ export interface IRootDataObject extends IProvideRootDataObject {
|
|
|
107
100
|
* @typeParam T - The class of the `DataObject` or `SharedObject`.
|
|
108
101
|
*/
|
|
109
102
|
create<T>(objectClass: SharedObjectKind<T>): Promise<T>;
|
|
103
|
+
/**
|
|
104
|
+
* Upload a blob of data.
|
|
105
|
+
* Although it is marked as internal, there is external usage of this function for experimental purposes.
|
|
106
|
+
* Please contact yunho-microsoft or vladsud if you need to change it.
|
|
107
|
+
* @param blob - blob to be uploaded.
|
|
108
|
+
*
|
|
109
|
+
* @remarks This method is used to expose uploadBlob to the IFluidContainer level. UploadBlob will upload data to server side (as of now, ODSP only). There is no downloadBlob provided as it is not needed(blob lifetime managed by server).
|
|
110
|
+
*/
|
|
111
|
+
uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;
|
|
112
|
+
}
|
|
113
|
+
interface IProvideStaticEntryPoint {
|
|
114
|
+
readonly IStaticEntryPoint: IStaticEntryPoint;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* This is the internal entry point fluid-static creates.
|
|
118
|
+
*/
|
|
119
|
+
export interface IStaticEntryPoint extends IProvideStaticEntryPoint {
|
|
120
|
+
readonly rootDataObject: IRootDataObject;
|
|
121
|
+
readonly extensionStore: ContainerExtensionStore;
|
|
110
122
|
}
|
|
111
123
|
/**
|
|
112
124
|
* Signature for {@link IMember} change events.
|
|
@@ -211,4 +223,5 @@ export interface IMember {
|
|
|
211
223
|
export type Myself<M extends IMember = IMember> = M & {
|
|
212
224
|
readonly currentConnection: string;
|
|
213
225
|
};
|
|
226
|
+
export {};
|
|
214
227
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { DataObjectKind } from \"@fluidframework/aqueduct/internal\";\nimport type {
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { DataObjectKind } from \"@fluidframework/aqueduct/internal\";\nimport type { ContainerExtensionStore } from \"@fluidframework/container-runtime-definitions/internal\";\nimport type {\n\tIEvent,\n\tIEventProvider,\n\tIFluidHandle,\n\tIFluidLoadable,\n} from \"@fluidframework/core-interfaces\";\nimport type { SharedObjectKind } from \"@fluidframework/shared-object-base\";\nimport type { ISharedObjectKind } from \"@fluidframework/shared-object-base/internal\";\n\n/**\n * Determines the set of runtime options that Fluid Framework will use when running.\n * In \"1\" mode we support full interop between 2.x clients and 1.x clients,\n * while in \"2\" mode we only support interop between 2.x clients.\n *\n * @public\n */\nexport type CompatibilityMode = \"1\" | \"2\";\n\n/**\n * A mapping of string identifiers to instantiated `DataObject`s or `SharedObject`s.\n */\nexport type LoadableObjectRecord = Record<string, IFluidLoadable>;\n\n/**\n * A mapping of string identifiers to classes that will later be used to instantiate a corresponding `DataObject`\n * or `SharedObject`.\n */\nexport type LoadableObjectKindRecord = Record<string, SharedObjectKind>;\n\n/**\n * A kind of `DataObject` or `SharedObject`.\n *\n * @typeParam T - The kind of `DataObject` or `SharedObject`.\n *\n * @privateRemarks\n * There are some edge cases in TypeScript where the order of the members in a union matter.\n * Once such edge case is when multiple members of a generic union partially match, and the type parameter is being inferred.\n * In this case, its better to have the desired match and/or the simpler type first.\n * In this case placing ISharedObjectKind fixed one usage and didn't break anything, and generally seems more likely to work than the reverse, so this is the order being used.\n * This is likely (a bug in TypeScript)[https://github.com/microsoft/TypeScript/issues/45809].\n */\nexport type LoadableObjectKind<T extends IFluidLoadable = IFluidLoadable> =\n\t| ISharedObjectKind<T>\n\t| DataObjectKind<T>;\n\n/**\n * Represents properties that can be attached to a container.\n * @public\n */\nexport type ContainerAttachProps<T = unknown> = T;\n\n/**\n * Declares the Fluid objects that will be available in the {@link IFluidContainer | Container}.\n *\n * @remarks\n *\n * It includes both the instances of objects that are initially available upon `Container` creation, as well\n * as the types of objects that may be dynamically created throughout the lifetime of the `Container`.\n * @public\n */\nexport interface ContainerSchema {\n\t/**\n\t * Defines loadable objects that will be created when the {@link IFluidContainer | Container} is first created.\n\t *\n\t * @remarks It uses the key as the id and the value as the loadable object to create.\n\t *\n\t * @example\n\t *\n\t * In the example below two objects will be created when the `Container` is first\n\t * created. One with id \"map1\" that will return a `SharedMap` and the other with\n\t * id \"pair1\" that will return a `KeyValueDataObject`.\n\t *\n\t * ```typescript\n\t * {\n\t * map1: SharedMap,\n\t * pair1: KeyValueDataObject,\n\t * }\n\t * ```\n\t */\n\treadonly initialObjects: Record<string, SharedObjectKind>;\n\n\t/**\n\t * Loadable objects that can be created after the initial {@link IFluidContainer | Container} creation.\n\t *\n\t * @remarks\n\t *\n\t * Types defined in `initialObjects` will always be available and are not required to be provided here.\n\t *\n\t * For best practice it's recommended to define all the dynamic types you create even if they are\n\t * included via initialObjects.\n\t */\n\treadonly dynamicObjectTypes?: readonly SharedObjectKind[];\n}\n\n/**\n * Holds the collection of objects that the container was initially created with, as well as provides the ability\n * to dynamically create further objects during usage.\n */\nexport interface IRootDataObject {\n\t/**\n\t * Provides a record of the initial objects defined on creation.\n\t */\n\treadonly initialObjects: LoadableObjectRecord;\n\n\t/**\n\t * Dynamically creates a new detached collaborative object (DDS/DataObject).\n\t *\n\t * @param objectClass - Type of the collaborative object to be created.\n\t *\n\t * @typeParam T - The class of the `DataObject` or `SharedObject`.\n\t */\n\tcreate<T>(objectClass: SharedObjectKind<T>): Promise<T>;\n\n\t/**\n\t * Upload a blob of data.\n\t * Although it is marked as internal, there is external usage of this function for experimental purposes.\n\t * Please contact yunho-microsoft or vladsud if you need to change it.\n\t * @param blob - blob to be uploaded.\n\t *\n\t * @remarks This method is used to expose uploadBlob to the IFluidContainer level. UploadBlob will upload data to server side (as of now, ODSP only). There is no downloadBlob provided as it is not needed(blob lifetime managed by server).\n\t */\n\tuploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;\n}\n\ninterface IProvideStaticEntryPoint {\n\treadonly IStaticEntryPoint: IStaticEntryPoint;\n}\n\n/**\n * This is the internal entry point fluid-static creates.\n */\nexport interface IStaticEntryPoint extends IProvideStaticEntryPoint {\n\treadonly rootDataObject: IRootDataObject;\n\treadonly extensionStore: ContainerExtensionStore;\n}\n\n/**\n * Signature for {@link IMember} change events.\n *\n * @param clientId - A unique identifier for the client.\n * @param member - The service-specific member object for the client.\n *\n * @see See {@link IServiceAudienceEvents} for usage details.\n * @public\n */\nexport type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;\n\n/**\n * Events that trigger when the roster of members in the Fluid session change.\n *\n * @remarks\n *\n * Only changes that would be reflected in the returned map of {@link IServiceAudience}'s\n * {@link IServiceAudience.getMembers} method will emit events.\n *\n * @typeParam M - A service-specific {@link IMember} implementation.\n * @public\n */\nexport interface IServiceAudienceEvents<M extends IMember> extends IEvent {\n\t/**\n\t * Emitted when a {@link IMember | member}(s) are either added or removed.\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"membersChanged\", listener: () => void): void;\n\n\t/**\n\t * Emitted when a {@link IMember | member} joins the audience.\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"memberAdded\", listener: MemberChangedListener<M>): void;\n\n\t/**\n\t * Emitted when a {@link IMember | member} leaves the audience.\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"memberRemoved\", listener: MemberChangedListener<M>): void;\n}\n\n/**\n * Base interface to be implemented to fetch each service's audience.\n *\n * @remarks\n *\n * The type parameter `M` allows consumers to further extend the client object with service-specific\n * details about the connecting client, such as device information, environment, or a username.\n *\n * @typeParam M - A service-specific {@link IMember} type.\n * @public\n */\nexport interface IServiceAudience<M extends IMember>\n\textends IEventProvider<IServiceAudienceEvents<M>> {\n\t/**\n\t * Returns an map of all users currently in the Fluid session where key is the userId and the value is the\n\t * member object. The implementation may choose to exclude certain connections from the returned map.\n\t * E.g. ServiceAudience excludes non-interactive connections to represent only the roster of live users.\n\t */\n\tgetMembers(): ReadonlyMap<string, M>;\n\n\t/**\n\t * Returns the current active user on this client once they are connected. Otherwise, returns undefined.\n\t */\n\tgetMyself(): Myself<M> | undefined;\n}\n\n/**\n * Base interface for information for each connection made to the Fluid session.\n *\n * @remarks This interface can be extended to provide additional information specific to each service.\n * @public\n */\nexport interface IConnection {\n\t/**\n\t * A unique ID for the connection. A single user may have multiple connections, each with a different ID.\n\t */\n\treadonly id: string;\n\n\t/**\n\t * Whether the connection is in read or read/write mode.\n\t */\n\treadonly mode: \"write\" | \"read\";\n}\n\n/**\n * Base interface to be implemented to fetch each service's member.\n *\n * @remarks This interface can be extended by each service to provide additional service-specific user metadata.\n * @public\n */\nexport interface IMember {\n\t/**\n\t * An ID for the user, unique among each individual user connecting to the session.\n\t */\n\treadonly id: string;\n\n\t/**\n\t * The set of connections the user has made, e.g. from multiple tabs or devices.\n\t */\n\treadonly connections: IConnection[];\n}\n\n/**\n * An extended member object that includes currentConnection\n * @public\n */\nexport type Myself<M extends IMember = IMember> = M & { readonly currentConnection: string };\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/fluid-static",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.42.0",
|
|
4
4
|
"description": "A tool to enable consumption of Fluid Data Objects without requiring custom container code.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -59,32 +59,33 @@
|
|
|
59
59
|
"temp-directory": "nyc/.nyc_output"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@fluid-internal/client-utils": "2.
|
|
63
|
-
"@fluidframework/aqueduct": "2.
|
|
64
|
-
"@fluidframework/container-definitions": "2.
|
|
65
|
-
"@fluidframework/container-loader": "2.
|
|
66
|
-
"@fluidframework/container-runtime": "2.
|
|
67
|
-
"@fluidframework/container-runtime-definitions": "2.
|
|
68
|
-
"@fluidframework/core-interfaces": "2.
|
|
69
|
-
"@fluidframework/
|
|
70
|
-
"@fluidframework/
|
|
71
|
-
"@fluidframework/
|
|
72
|
-
"@fluidframework/
|
|
73
|
-
"@fluidframework/runtime-
|
|
74
|
-
"@fluidframework/
|
|
75
|
-
"@fluidframework/
|
|
62
|
+
"@fluid-internal/client-utils": "~2.42.0",
|
|
63
|
+
"@fluidframework/aqueduct": "~2.42.0",
|
|
64
|
+
"@fluidframework/container-definitions": "~2.42.0",
|
|
65
|
+
"@fluidframework/container-loader": "~2.42.0",
|
|
66
|
+
"@fluidframework/container-runtime": "~2.42.0",
|
|
67
|
+
"@fluidframework/container-runtime-definitions": "~2.42.0",
|
|
68
|
+
"@fluidframework/core-interfaces": "~2.42.0",
|
|
69
|
+
"@fluidframework/core-utils": "~2.42.0",
|
|
70
|
+
"@fluidframework/datastore-definitions": "~2.42.0",
|
|
71
|
+
"@fluidframework/driver-definitions": "~2.42.0",
|
|
72
|
+
"@fluidframework/request-handler": "~2.42.0",
|
|
73
|
+
"@fluidframework/runtime-definitions": "~2.42.0",
|
|
74
|
+
"@fluidframework/runtime-utils": "~2.42.0",
|
|
75
|
+
"@fluidframework/shared-object-base": "~2.42.0",
|
|
76
|
+
"@fluidframework/telemetry-utils": "~2.42.0"
|
|
76
77
|
},
|
|
77
78
|
"devDependencies": {
|
|
78
79
|
"@arethetypeswrong/cli": "^0.17.1",
|
|
79
80
|
"@biomejs/biome": "~1.9.3",
|
|
80
|
-
"@fluid-internal/mocha-test-setup": "2.
|
|
81
|
+
"@fluid-internal/mocha-test-setup": "~2.42.0",
|
|
81
82
|
"@fluid-tools/build-cli": "^0.55.0",
|
|
82
83
|
"@fluidframework/build-common": "^2.0.3",
|
|
83
84
|
"@fluidframework/build-tools": "^0.55.0",
|
|
84
|
-
"@fluidframework/eslint-config-fluid": "^5.7.
|
|
85
|
-
"@fluidframework/fluid-static-previous": "npm:@fluidframework/fluid-static@2.
|
|
86
|
-
"@fluidframework/map": "2.
|
|
87
|
-
"@fluidframework/sequence": "2.
|
|
85
|
+
"@fluidframework/eslint-config-fluid": "^5.7.4",
|
|
86
|
+
"@fluidframework/fluid-static-previous": "npm:@fluidframework/fluid-static@2.41.0",
|
|
87
|
+
"@fluidframework/map": "~2.42.0",
|
|
88
|
+
"@fluidframework/sequence": "~2.42.0",
|
|
88
89
|
"@microsoft/api-extractor": "7.52.8",
|
|
89
90
|
"@types/mocha": "^10.0.10",
|
|
90
91
|
"@types/node": "^18.19.0",
|
package/src/fluidContainer.ts
CHANGED
|
@@ -10,10 +10,23 @@ import {
|
|
|
10
10
|
type ICriticalContainerError,
|
|
11
11
|
} from "@fluidframework/container-definitions";
|
|
12
12
|
import type { IContainer } from "@fluidframework/container-definitions/internal";
|
|
13
|
-
import type {
|
|
13
|
+
import type { ContainerExtensionStore } from "@fluidframework/container-runtime-definitions/internal";
|
|
14
|
+
import type {
|
|
15
|
+
FluidObject,
|
|
16
|
+
IEvent,
|
|
17
|
+
IEventProvider,
|
|
18
|
+
IFluidHandle,
|
|
19
|
+
IFluidLoadable,
|
|
20
|
+
} from "@fluidframework/core-interfaces";
|
|
21
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
14
22
|
import type { SharedObjectKind } from "@fluidframework/shared-object-base";
|
|
15
23
|
|
|
16
|
-
import type {
|
|
24
|
+
import type {
|
|
25
|
+
ContainerAttachProps,
|
|
26
|
+
ContainerSchema,
|
|
27
|
+
IRootDataObject,
|
|
28
|
+
IStaticEntryPoint,
|
|
29
|
+
} from "./types.js";
|
|
17
30
|
|
|
18
31
|
/**
|
|
19
32
|
* Extract the type of 'initialObjects' from the given {@link ContainerSchema} type.
|
|
@@ -235,13 +248,23 @@ export interface IFluidContainer<TContainerSchema extends ContainerSchema = Cont
|
|
|
235
248
|
*
|
|
236
249
|
* @internal
|
|
237
250
|
*/
|
|
238
|
-
export interface IFluidContainerInternal {
|
|
251
|
+
export interface IFluidContainerInternal extends ContainerExtensionStore {
|
|
239
252
|
/**
|
|
240
253
|
* The underlying {@link @fluidframework/container-definitions#IContainer}.
|
|
241
254
|
*
|
|
242
255
|
* @remarks Used to power debug tooling and experimental features.
|
|
243
256
|
*/
|
|
244
257
|
readonly container: IContainer;
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Upload a blob of data.
|
|
261
|
+
* Although it is marked as internal, there is external usage of this function for experimental purposes.
|
|
262
|
+
* Please contact yunho-microsoft or vladsud if you need to change it.
|
|
263
|
+
* @param blob - blob to be uploaded.
|
|
264
|
+
*
|
|
265
|
+
* @remarks This method is used to expose uploadBlob to the IFluidContainer level. UploadBlob will upload data to server side (as of now, ODSP only). There is no downloadBlob provided as it is not needed(blob lifetime managed by server).
|
|
266
|
+
*/
|
|
267
|
+
uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;
|
|
245
268
|
}
|
|
246
269
|
|
|
247
270
|
/**
|
|
@@ -249,13 +272,21 @@ export interface IFluidContainerInternal {
|
|
|
249
272
|
*
|
|
250
273
|
* @internal
|
|
251
274
|
*/
|
|
252
|
-
export function createFluidContainer<
|
|
275
|
+
export async function createFluidContainer<
|
|
253
276
|
TContainerSchema extends ContainerSchema = ContainerSchema,
|
|
254
277
|
>(props: {
|
|
255
278
|
container: IContainer;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
279
|
+
}): Promise<IFluidContainer<TContainerSchema>> {
|
|
280
|
+
const entryPoint: FluidObject<IStaticEntryPoint> = await props.container.getEntryPoint();
|
|
281
|
+
assert(
|
|
282
|
+
entryPoint.IStaticEntryPoint !== undefined,
|
|
283
|
+
0xb9e /* entryPoint must be of type IStaticEntryPoint */,
|
|
284
|
+
);
|
|
285
|
+
return new FluidContainer<TContainerSchema>(
|
|
286
|
+
props.container,
|
|
287
|
+
entryPoint.IStaticEntryPoint.rootDataObject,
|
|
288
|
+
entryPoint.IStaticEntryPoint.extensionStore,
|
|
289
|
+
);
|
|
259
290
|
}
|
|
260
291
|
|
|
261
292
|
/**
|
|
@@ -291,12 +322,15 @@ class FluidContainer<TContainerSchema extends ContainerSchema = ContainerSchema>
|
|
|
291
322
|
this.emit("disposed", error);
|
|
292
323
|
private readonly savedHandler = (): boolean => this.emit("saved");
|
|
293
324
|
private readonly dirtyHandler = (): boolean => this.emit("dirty");
|
|
325
|
+
public readonly acquireExtension: ContainerExtensionStore["acquireExtension"];
|
|
294
326
|
|
|
295
327
|
public constructor(
|
|
296
328
|
public readonly container: IContainer,
|
|
297
329
|
private readonly rootDataObject: IRootDataObject,
|
|
330
|
+
extensionStore: ContainerExtensionStore,
|
|
298
331
|
) {
|
|
299
332
|
super();
|
|
333
|
+
this.acquireExtension = extensionStore.acquireExtension.bind(extensionStore);
|
|
300
334
|
container.on("connected", this.connectedHandler);
|
|
301
335
|
container.on("closed", this.disposedHandler);
|
|
302
336
|
container.on("disconnected", this.disconnectedHandler);
|
|
@@ -363,4 +397,8 @@ class FluidContainer<TContainerSchema extends ContainerSchema = ContainerSchema>
|
|
|
363
397
|
this.container.off("saved", this.savedHandler);
|
|
364
398
|
this.container.off("dirty", this.dirtyHandler);
|
|
365
399
|
}
|
|
400
|
+
|
|
401
|
+
public async uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>> {
|
|
402
|
+
return this.rootDataObject.uploadBlob(blob);
|
|
403
|
+
}
|
|
366
404
|
}
|
package/src/index.ts
CHANGED
package/src/rootDataObject.ts
CHANGED
|
@@ -12,10 +12,20 @@ import {
|
|
|
12
12
|
import type { IRuntimeFactory } from "@fluidframework/container-definitions/internal";
|
|
13
13
|
import {
|
|
14
14
|
FluidDataStoreRegistry,
|
|
15
|
+
type IContainerRuntimeOptions,
|
|
15
16
|
type MinimumVersionForCollab,
|
|
16
17
|
} from "@fluidframework/container-runtime/internal";
|
|
17
|
-
import type {
|
|
18
|
-
|
|
18
|
+
import type {
|
|
19
|
+
IContainerRuntime,
|
|
20
|
+
IContainerRuntimeInternal,
|
|
21
|
+
} from "@fluidframework/container-runtime-definitions/internal";
|
|
22
|
+
import type {
|
|
23
|
+
FluidObject,
|
|
24
|
+
FluidObjectKeys,
|
|
25
|
+
IFluidHandle,
|
|
26
|
+
IFluidLoadable,
|
|
27
|
+
} from "@fluidframework/core-interfaces";
|
|
28
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
19
29
|
import type { IChannelFactory } from "@fluidframework/datastore-definitions/internal";
|
|
20
30
|
import type { IDirectory } from "@fluidframework/map/internal";
|
|
21
31
|
import type { IFluidDataStoreRegistry } from "@fluidframework/runtime-definitions/internal";
|
|
@@ -29,6 +39,7 @@ import type {
|
|
|
29
39
|
CompatibilityMode,
|
|
30
40
|
ContainerSchema,
|
|
31
41
|
IRootDataObject,
|
|
42
|
+
IStaticEntryPoint,
|
|
32
43
|
LoadableObjectKind,
|
|
33
44
|
LoadableObjectKindRecord,
|
|
34
45
|
LoadableObjectRecord,
|
|
@@ -59,18 +70,22 @@ interface RootDataObjectProps {
|
|
|
59
70
|
readonly initialObjects: LoadableObjectKindRecord;
|
|
60
71
|
}
|
|
61
72
|
|
|
73
|
+
interface IProvideRootDataObject {
|
|
74
|
+
readonly RootDataObject: RootDataObject;
|
|
75
|
+
}
|
|
76
|
+
|
|
62
77
|
/**
|
|
63
78
|
* The entry-point/root collaborative object of the {@link IFluidContainer | Fluid Container}.
|
|
64
79
|
* Abstracts the dynamic code required to build a Fluid Container into a static representation for end customers.
|
|
65
80
|
*/
|
|
66
81
|
class RootDataObject
|
|
67
82
|
extends DataObject<{ InitialState: RootDataObjectProps }>
|
|
68
|
-
implements IRootDataObject
|
|
83
|
+
implements IRootDataObject, IProvideRootDataObject
|
|
69
84
|
{
|
|
70
85
|
private readonly initialObjectsDirKey = "initial-objects-key";
|
|
71
86
|
private readonly _initialObjects: LoadableObjectRecord = {};
|
|
72
87
|
|
|
73
|
-
public get
|
|
88
|
+
public get RootDataObject(): RootDataObject {
|
|
74
89
|
return this;
|
|
75
90
|
}
|
|
76
91
|
|
|
@@ -127,9 +142,6 @@ class RootDataObject
|
|
|
127
142
|
await Promise.all(loadInitialObjectsP);
|
|
128
143
|
}
|
|
129
144
|
|
|
130
|
-
/**
|
|
131
|
-
* {@inheritDoc IRootDataObject.initialObjects}
|
|
132
|
-
*/
|
|
133
145
|
public get initialObjects(): LoadableObjectRecord {
|
|
134
146
|
if (Object.keys(this._initialObjects).length === 0) {
|
|
135
147
|
throw new Error("Initial Objects were not correctly initialized");
|
|
@@ -137,9 +149,6 @@ class RootDataObject
|
|
|
137
149
|
return this._initialObjects;
|
|
138
150
|
}
|
|
139
151
|
|
|
140
|
-
/**
|
|
141
|
-
* {@inheritDoc IRootDataObject.create}
|
|
142
|
-
*/
|
|
143
152
|
public async create<T>(objectClass: SharedObjectKind<T>): Promise<T> {
|
|
144
153
|
const internal = objectClass as unknown as LoadableObjectKind<T & IFluidLoadable>;
|
|
145
154
|
if (isDataObjectKind(internal)) {
|
|
@@ -150,6 +159,10 @@ class RootDataObject
|
|
|
150
159
|
throw new Error("Could not create new Fluid object because an unknown object was passed");
|
|
151
160
|
}
|
|
152
161
|
|
|
162
|
+
public async uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>> {
|
|
163
|
+
return this.runtime.uploadBlob(blob);
|
|
164
|
+
}
|
|
165
|
+
|
|
153
166
|
private async createDataObject<T extends IFluidLoadable>(
|
|
154
167
|
dataObjectClass: DataObjectKind<T>,
|
|
155
168
|
): Promise<T> {
|
|
@@ -173,8 +186,9 @@ const rootDataStoreId = "rootDOId";
|
|
|
173
186
|
|
|
174
187
|
/**
|
|
175
188
|
* Creates an {@link @fluidframework/aqueduct#BaseContainerRuntimeFactory} which constructs containers
|
|
176
|
-
* with
|
|
177
|
-
* and initial objects are configured based on the provided
|
|
189
|
+
* with an entry point containing single IRootDataObject (entry point is opaque to caller),
|
|
190
|
+
* where the root data object's registry and initial objects are configured based on the provided
|
|
191
|
+
* schema (and optionally, data store registry).
|
|
178
192
|
*
|
|
179
193
|
* @internal
|
|
180
194
|
*/
|
|
@@ -192,6 +206,18 @@ export function createDOProviderContainerRuntimeFactory(props: {
|
|
|
192
206
|
* If not provided, one will be created based on the schema.
|
|
193
207
|
*/
|
|
194
208
|
rootDataStoreRegistry?: IFluidDataStoreRegistry;
|
|
209
|
+
/**
|
|
210
|
+
* Optional overrides for the container runtime options.
|
|
211
|
+
* If not provided, only the default options for the given compatibilityMode will be used.
|
|
212
|
+
*/
|
|
213
|
+
runtimeOptionOverrides?: Partial<IContainerRuntimeOptions>;
|
|
214
|
+
/**
|
|
215
|
+
* Optional override for minimum version for collab.
|
|
216
|
+
* If not provided, the default for the given compatibilityMode will be used.
|
|
217
|
+
* @remarks
|
|
218
|
+
* This is useful when runtime options are overridden and change the minimum version for collab.
|
|
219
|
+
*/
|
|
220
|
+
minVersionForCollabOverride?: MinimumVersionForCollab;
|
|
195
221
|
}): IRuntimeFactory {
|
|
196
222
|
const [registryEntries, sharedObjects] = parseDataObjectsFromSharedObjects(props.schema);
|
|
197
223
|
const registry = props.rootDataStoreRegistry ?? new FluidDataStoreRegistry(registryEntries);
|
|
@@ -200,12 +226,42 @@ export function createDOProviderContainerRuntimeFactory(props: {
|
|
|
200
226
|
props.schema,
|
|
201
227
|
props.compatibilityMode,
|
|
202
228
|
new RootDataObjectFactory(sharedObjects, registry),
|
|
229
|
+
{
|
|
230
|
+
runtimeOptions: props.runtimeOptionOverrides,
|
|
231
|
+
minVersionForCollab: props.minVersionForCollabOverride,
|
|
232
|
+
},
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function makeFluidObject<T extends object, K extends FluidObjectKeys<T> = FluidObjectKeys<T>>(
|
|
237
|
+
object: Omit<T, K>,
|
|
238
|
+
providerKey: K,
|
|
239
|
+
): T {
|
|
240
|
+
return Object.defineProperty(object, providerKey, { value: object }) as T;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
async function provideEntryPoint(
|
|
244
|
+
containerRuntime: IContainerRuntime,
|
|
245
|
+
): Promise<IStaticEntryPoint> {
|
|
246
|
+
const entryPoint = await containerRuntime.getAliasedDataStoreEntryPoint(rootDataStoreId);
|
|
247
|
+
if (entryPoint === undefined) {
|
|
248
|
+
throw new Error(`default dataStore [${rootDataStoreId}] must exist`);
|
|
249
|
+
}
|
|
250
|
+
const rootDataObject = ((await entryPoint.get()) as FluidObject<RootDataObject>)
|
|
251
|
+
.RootDataObject;
|
|
252
|
+
assert(rootDataObject !== undefined, 0xb9f /* entryPoint must be of type RootDataObject */);
|
|
253
|
+
return makeFluidObject<IStaticEntryPoint>(
|
|
254
|
+
{
|
|
255
|
+
rootDataObject,
|
|
256
|
+
extensionStore: containerRuntime as IContainerRuntimeInternal,
|
|
257
|
+
},
|
|
258
|
+
"IStaticEntryPoint",
|
|
203
259
|
);
|
|
204
260
|
}
|
|
205
261
|
|
|
206
262
|
/**
|
|
207
|
-
* Factory for Container Runtime instances that provide a
|
|
208
|
-
* as their entry point.
|
|
263
|
+
* Factory for Container Runtime instances that provide a {@link IStaticEntryPoint}
|
|
264
|
+
* (containing single {@link IRootDataObject}) as their entry point.
|
|
209
265
|
*/
|
|
210
266
|
class DOProviderContainerRuntimeFactory extends BaseContainerRuntimeFactory {
|
|
211
267
|
private readonly rootDataObjectFactory: DataObjectFactory<
|
|
@@ -238,30 +294,26 @@ class DOProviderContainerRuntimeFactory extends BaseContainerRuntimeFactory {
|
|
|
238
294
|
RootDataObject,
|
|
239
295
|
{ InitialState: RootDataObjectProps }
|
|
240
296
|
>,
|
|
297
|
+
overrides?: Partial<{
|
|
298
|
+
runtimeOptions: Partial<IContainerRuntimeOptions>;
|
|
299
|
+
minVersionForCollab: MinimumVersionForCollab;
|
|
300
|
+
}>,
|
|
241
301
|
) {
|
|
242
|
-
const provideEntryPoint = async (
|
|
243
|
-
containerRuntime: IContainerRuntime,
|
|
244
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
245
|
-
): Promise<FluidObject> => {
|
|
246
|
-
const entryPoint = await containerRuntime.getAliasedDataStoreEntryPoint(rootDataStoreId);
|
|
247
|
-
if (entryPoint === undefined) {
|
|
248
|
-
throw new Error(`default dataStore [${rootDataStoreId}] must exist`);
|
|
249
|
-
}
|
|
250
|
-
return entryPoint.get();
|
|
251
|
-
};
|
|
252
302
|
super({
|
|
253
303
|
registryEntries: [rootDataObjectFactory.registryEntry],
|
|
254
|
-
runtimeOptions:
|
|
304
|
+
runtimeOptions: {
|
|
305
|
+
...compatibilityModeRuntimeOptions[compatibilityMode],
|
|
306
|
+
...overrides?.runtimeOptions,
|
|
307
|
+
},
|
|
255
308
|
provideEntryPoint,
|
|
256
|
-
minVersionForCollab:
|
|
309
|
+
minVersionForCollab:
|
|
310
|
+
overrides?.minVersionForCollab ??
|
|
311
|
+
compatibilityModeToMinVersionForCollab[compatibilityMode],
|
|
257
312
|
});
|
|
258
313
|
this.rootDataObjectFactory = rootDataObjectFactory;
|
|
259
314
|
this.initialObjects = schema.initialObjects;
|
|
260
315
|
}
|
|
261
316
|
|
|
262
|
-
/**
|
|
263
|
-
* {@inheritDoc @fluidframework/aqueduct#BaseContainerRuntimeFactory.containerInitializingFirstTime}
|
|
264
|
-
*/
|
|
265
317
|
protected async containerInitializingFirstTime(runtime: IContainerRuntime): Promise<void> {
|
|
266
318
|
// The first time we create the container we create the RootDataObject
|
|
267
319
|
await this.rootDataObjectFactory.createRootInstance(rootDataStoreId, runtime, {
|
package/src/serviceAudience.ts
CHANGED
|
@@ -36,8 +36,6 @@ export function createServiceAudience<TMember extends IMember = IMember>(props:
|
|
|
36
36
|
* the user and client details returned in {@link IMember}.
|
|
37
37
|
*
|
|
38
38
|
* @typeParam TMember - A service-specific {@link IMember} implementation.
|
|
39
|
-
*
|
|
40
|
-
* @internal
|
|
41
39
|
*/
|
|
42
40
|
class ServiceAudience<TMember extends IMember = IMember>
|
|
43
41
|
extends TypedEventEmitter<IServiceAudienceEvents<TMember>>
|
package/src/types.ts
CHANGED
|
@@ -4,7 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { DataObjectKind } from "@fluidframework/aqueduct/internal";
|
|
7
|
-
import type {
|
|
7
|
+
import type { ContainerExtensionStore } from "@fluidframework/container-runtime-definitions/internal";
|
|
8
|
+
import type {
|
|
9
|
+
IEvent,
|
|
10
|
+
IEventProvider,
|
|
11
|
+
IFluidHandle,
|
|
12
|
+
IFluidLoadable,
|
|
13
|
+
} from "@fluidframework/core-interfaces";
|
|
8
14
|
import type { SharedObjectKind } from "@fluidframework/shared-object-base";
|
|
9
15
|
import type { ISharedObjectKind } from "@fluidframework/shared-object-base/internal";
|
|
10
16
|
|
|
@@ -19,7 +25,6 @@ export type CompatibilityMode = "1" | "2";
|
|
|
19
25
|
|
|
20
26
|
/**
|
|
21
27
|
* A mapping of string identifiers to instantiated `DataObject`s or `SharedObject`s.
|
|
22
|
-
* @internal
|
|
23
28
|
*/
|
|
24
29
|
export type LoadableObjectRecord = Record<string, IFluidLoadable>;
|
|
25
30
|
|
|
@@ -94,19 +99,11 @@ export interface ContainerSchema {
|
|
|
94
99
|
readonly dynamicObjectTypes?: readonly SharedObjectKind[];
|
|
95
100
|
}
|
|
96
101
|
|
|
97
|
-
/**
|
|
98
|
-
* @internal
|
|
99
|
-
*/
|
|
100
|
-
export interface IProvideRootDataObject {
|
|
101
|
-
readonly IRootDataObject: IRootDataObject;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
102
|
/**
|
|
105
103
|
* Holds the collection of objects that the container was initially created with, as well as provides the ability
|
|
106
104
|
* to dynamically create further objects during usage.
|
|
107
|
-
* @internal
|
|
108
105
|
*/
|
|
109
|
-
export interface IRootDataObject
|
|
106
|
+
export interface IRootDataObject {
|
|
110
107
|
/**
|
|
111
108
|
* Provides a record of the initial objects defined on creation.
|
|
112
109
|
*/
|
|
@@ -120,6 +117,28 @@ export interface IRootDataObject extends IProvideRootDataObject {
|
|
|
120
117
|
* @typeParam T - The class of the `DataObject` or `SharedObject`.
|
|
121
118
|
*/
|
|
122
119
|
create<T>(objectClass: SharedObjectKind<T>): Promise<T>;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Upload a blob of data.
|
|
123
|
+
* Although it is marked as internal, there is external usage of this function for experimental purposes.
|
|
124
|
+
* Please contact yunho-microsoft or vladsud if you need to change it.
|
|
125
|
+
* @param blob - blob to be uploaded.
|
|
126
|
+
*
|
|
127
|
+
* @remarks This method is used to expose uploadBlob to the IFluidContainer level. UploadBlob will upload data to server side (as of now, ODSP only). There is no downloadBlob provided as it is not needed(blob lifetime managed by server).
|
|
128
|
+
*/
|
|
129
|
+
uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface IProvideStaticEntryPoint {
|
|
133
|
+
readonly IStaticEntryPoint: IStaticEntryPoint;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* This is the internal entry point fluid-static creates.
|
|
138
|
+
*/
|
|
139
|
+
export interface IStaticEntryPoint extends IProvideStaticEntryPoint {
|
|
140
|
+
readonly rootDataObject: IRootDataObject;
|
|
141
|
+
readonly extensionStore: ContainerExtensionStore;
|
|
123
142
|
}
|
|
124
143
|
|
|
125
144
|
/**
|