@fluidframework/azure-client 2.115.0 → 2.116.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 +61 -0
- package/README.md +5 -3
- package/api-report/azure-client.beta.api.md +3 -3
- package/api-report/azure-client.legacy.beta.api.md +3 -3
- package/api-report/azure-client.legacy.public.api.md +3 -3
- package/api-report/azure-client.public.api.md +3 -3
- package/dist/AzureClient.d.ts +19 -13
- package/dist/AzureClient.d.ts.map +1 -1
- package/dist/AzureClient.js.map +1 -1
- package/dist/interfaces.d.ts +2 -2
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/lib/AzureClient.d.ts +19 -13
- package/lib/AzureClient.d.ts.map +1 -1
- package/lib/AzureClient.js.map +1 -1
- package/lib/interfaces.d.ts +2 -2
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/interfaces.js.map +1 -1
- package/package.json +21 -21
- package/src/AzureClient.ts +24 -18
- package/src/interfaces.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# @fluidframework/azure-client
|
|
2
2
|
|
|
3
|
+
## 2.116.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Rename minVersionForCollab to oldestSupportedClient ([#27806](https://github.com/microsoft/FluidFramework/pull/27806)) [86b912170c](https://github.com/microsoft/FluidFramework/commit/86b912170c0e12ebeb481c5201f923c72bf94498)
|
|
8
|
+
|
|
9
|
+
The cross-client compatibility parameter has new names:
|
|
10
|
+
- The
|
|
11
|
+
[`MinimumVersionForCollab`](https://fluidframework.com/docs/api/runtime-definitions/minimumversionforcollab-typealias)
|
|
12
|
+
type is now
|
|
13
|
+
[`OldestSupportedClientVersion`](https://fluidframework.com/docs/api/runtime-definitions/oldestsupportedclientversion-typealias).
|
|
14
|
+
- [`LoadContainerRuntimeParams.minVersionForCollab`](https://fluidframework.com/docs/api/container-runtime/loadcontainerruntimeparams-interface#minversionforcollab-propertysignature)
|
|
15
|
+
is now
|
|
16
|
+
[`LoadContainerRuntimeParams.oldestSupportedClient`](https://fluidframework.com/docs/api/container-runtime/loadcontainerruntimeparams-interface#oldestsupportedclient-propertysignature).
|
|
17
|
+
- [`BaseContainerRuntimeFactoryProps.minVersionForCollab`](https://fluidframework.com/docs/api/aqueduct/basecontainerruntimefactoryprops-interface#minversionforcollab-propertysignature)
|
|
18
|
+
is now
|
|
19
|
+
[`BaseContainerRuntimeFactoryProps.oldestSupportedClient`](https://fluidframework.com/docs/api/aqueduct/basecontainerruntimefactoryprops-interface#oldestsupportedclient-propertysignature).
|
|
20
|
+
- [`createTreeContainerRuntimeFactory`](https://fluidframework.com/docs/api/fluid-static/#createtreecontainerruntimefactory-function)
|
|
21
|
+
now accepts `oldestSupportedClient`.
|
|
22
|
+
`minVersionForCollaboration` remains available as a deprecated overload.
|
|
23
|
+
- `@fluidframework/driver-definitions` now exports its minor-only version type as
|
|
24
|
+
[`OldestSupportedServiceClientVersion`](https://fluidframework.com/docs/api/driver-definitions/oldestsupportedserviceclientversion-typealias),
|
|
25
|
+
and
|
|
26
|
+
[`ServiceOptions.oldestSupportedClient`](https://fluidframework.com/docs/api/driver-definitions/serviceoptions-interface#oldestsupportedclient-propertysignature)
|
|
27
|
+
is available.
|
|
28
|
+
- [`AzureClient`](https://fluidframework.com/docs/api/azure-client/azureclient-class),
|
|
29
|
+
[`OdspClient`](https://fluidframework.com/docs/api/odsp-client/odspclient-class),
|
|
30
|
+
and
|
|
31
|
+
[`TinyliciousClient`](https://fluidframework.com/docs/api/tinylicious-client/tinyliciousclient-class)
|
|
32
|
+
methods now use `oldestSupportedClient` and
|
|
33
|
+
[`OldestSupportedClientVersion`](https://fluidframework.com/docs/api/runtime-definitions/oldestsupportedclientversion-typealias)
|
|
34
|
+
in their signatures.
|
|
35
|
+
|
|
36
|
+
The previous property and type names in `@fluidframework/runtime-definitions`,
|
|
37
|
+
`@fluidframework/container-runtime`, `@fluidframework/aqueduct`, and
|
|
38
|
+
`@fluidframework/fluid-static` are deprecated and will be removed in future
|
|
39
|
+
releases. Where both old and new property names remain available, specifying both
|
|
40
|
+
is an error. The alpha `MinimumVersionForCollaboration` type and
|
|
41
|
+
`ServiceOptions.minVersionForCollaboration` property are replaced directly rather
|
|
42
|
+
than retained as aliases.
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// Before
|
|
46
|
+
const runtime = await loadContainerRuntime({
|
|
47
|
+
context,
|
|
48
|
+
registryEntries,
|
|
49
|
+
provideEntryPoint,
|
|
50
|
+
minVersionForCollab: "2.40.0",
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// After
|
|
54
|
+
const runtime = await loadContainerRuntime({
|
|
55
|
+
context,
|
|
56
|
+
registryEntries,
|
|
57
|
+
provideEntryPoint,
|
|
58
|
+
oldestSupportedClient: "2.40.0",
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Telemetry property names are unchanged.
|
|
63
|
+
|
|
3
64
|
## 2.115.0
|
|
4
65
|
|
|
5
66
|
Dependency updates only.
|
package/README.md
CHANGED
|
@@ -266,7 +266,7 @@ There are many ways to [contribute](https://github.com/microsoft/FluidFramework/
|
|
|
266
266
|
- Review the [source code changes](https://github.com/microsoft/FluidFramework/pulls).
|
|
267
267
|
- [Contribute bug fixes](https://github.com/microsoft/FluidFramework/blob/main/CONTRIBUTING.md).
|
|
268
268
|
|
|
269
|
-
Detailed instructions for working in the repo can be found in the [Wiki](https://github.com/microsoft/FluidFramework/
|
|
269
|
+
Detailed instructions for working in the repo can be found in the [Wiki](https://github.com/microsoft/FluidFramework/blob/main/docs/content/Home.md).
|
|
270
270
|
|
|
271
271
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
|
272
272
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
|
@@ -277,9 +277,11 @@ Use of Microsoft trademarks or logos in modified versions of this project must n
|
|
|
277
277
|
|
|
278
278
|
## Help
|
|
279
279
|
|
|
280
|
-
Not finding what you're looking for in this README?
|
|
280
|
+
Not finding what you're looking for in this README?
|
|
281
|
+
Check out [fluidframework.com](https://fluidframework.com/docs/).
|
|
281
282
|
|
|
282
|
-
Still not finding what you're looking for?
|
|
283
|
+
Still not finding what you're looking for?
|
|
284
|
+
Please [file an issue](https://github.com/microsoft/FluidFramework/blob/main/docs/content/Contributing/Submitting-Bugs-and-Feature-Requests.md).
|
|
283
285
|
|
|
284
286
|
Thank you!
|
|
285
287
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// @public
|
|
8
8
|
export class AzureClient {
|
|
9
9
|
constructor(properties: AzureClientProps);
|
|
10
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
10
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
11
11
|
container: IFluidContainer<TContainerSchema>;
|
|
12
12
|
services: AzureContainerServices;
|
|
13
13
|
}>;
|
|
@@ -16,7 +16,7 @@ export class AzureClient {
|
|
|
16
16
|
container: IFluidContainer<TContainerSchema>;
|
|
17
17
|
services: AzureContainerServices;
|
|
18
18
|
}>;
|
|
19
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
19
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
20
20
|
container: IFluidContainer<TContainerSchema>;
|
|
21
21
|
services: AzureContainerServices;
|
|
22
22
|
}>;
|
|
@@ -26,7 +26,7 @@ export class AzureClient {
|
|
|
26
26
|
services: AzureContainerServices;
|
|
27
27
|
}>;
|
|
28
28
|
getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise<AzureContainerVersion[]>;
|
|
29
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
29
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
30
30
|
container: IFluidContainer<TContainerSchema>;
|
|
31
31
|
}>;
|
|
32
32
|
// @deprecated
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// @public
|
|
8
8
|
export class AzureClient {
|
|
9
9
|
constructor(properties: AzureClientProps);
|
|
10
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
10
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
11
11
|
container: IFluidContainer<TContainerSchema>;
|
|
12
12
|
services: AzureContainerServices;
|
|
13
13
|
}>;
|
|
@@ -16,7 +16,7 @@ export class AzureClient {
|
|
|
16
16
|
container: IFluidContainer<TContainerSchema>;
|
|
17
17
|
services: AzureContainerServices;
|
|
18
18
|
}>;
|
|
19
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
19
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
20
20
|
container: IFluidContainer<TContainerSchema>;
|
|
21
21
|
services: AzureContainerServices;
|
|
22
22
|
}>;
|
|
@@ -26,7 +26,7 @@ export class AzureClient {
|
|
|
26
26
|
services: AzureContainerServices;
|
|
27
27
|
}>;
|
|
28
28
|
getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise<AzureContainerVersion[]>;
|
|
29
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
29
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
30
30
|
container: IFluidContainer<TContainerSchema>;
|
|
31
31
|
}>;
|
|
32
32
|
// @deprecated
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// @public
|
|
8
8
|
export class AzureClient {
|
|
9
9
|
constructor(properties: AzureClientProps);
|
|
10
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
10
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
11
11
|
container: IFluidContainer<TContainerSchema>;
|
|
12
12
|
services: AzureContainerServices;
|
|
13
13
|
}>;
|
|
@@ -16,7 +16,7 @@ export class AzureClient {
|
|
|
16
16
|
container: IFluidContainer<TContainerSchema>;
|
|
17
17
|
services: AzureContainerServices;
|
|
18
18
|
}>;
|
|
19
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
19
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
20
20
|
container: IFluidContainer<TContainerSchema>;
|
|
21
21
|
services: AzureContainerServices;
|
|
22
22
|
}>;
|
|
@@ -26,7 +26,7 @@ export class AzureClient {
|
|
|
26
26
|
services: AzureContainerServices;
|
|
27
27
|
}>;
|
|
28
28
|
getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise<AzureContainerVersion[]>;
|
|
29
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
29
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
30
30
|
container: IFluidContainer<TContainerSchema>;
|
|
31
31
|
}>;
|
|
32
32
|
// @deprecated
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// @public
|
|
8
8
|
export class AzureClient {
|
|
9
9
|
constructor(properties: AzureClientProps);
|
|
10
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
10
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
11
11
|
container: IFluidContainer<TContainerSchema>;
|
|
12
12
|
services: AzureContainerServices;
|
|
13
13
|
}>;
|
|
@@ -16,7 +16,7 @@ export class AzureClient {
|
|
|
16
16
|
container: IFluidContainer<TContainerSchema>;
|
|
17
17
|
services: AzureContainerServices;
|
|
18
18
|
}>;
|
|
19
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
19
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
20
20
|
container: IFluidContainer<TContainerSchema>;
|
|
21
21
|
services: AzureContainerServices;
|
|
22
22
|
}>;
|
|
@@ -26,7 +26,7 @@ export class AzureClient {
|
|
|
26
26
|
services: AzureContainerServices;
|
|
27
27
|
}>;
|
|
28
28
|
getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise<AzureContainerVersion[]>;
|
|
29
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
29
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
30
30
|
container: IFluidContainer<TContainerSchema>;
|
|
31
31
|
}>;
|
|
32
32
|
// @deprecated
|
package/dist/AzureClient.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import type { ContainerSchema, IFluidContainer, CompatibilityMode } from "@fluidframework/fluid-static";
|
|
6
|
-
import type {
|
|
6
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
7
7
|
import type { AzureClientProps, AzureContainerServices, AzureContainerVersion, AzureGetVersionsOptions } from "./interfaces.js";
|
|
8
8
|
/**
|
|
9
9
|
* AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,
|
|
@@ -27,11 +27,13 @@ export declare class AzureClient {
|
|
|
27
27
|
* @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.
|
|
28
28
|
* (normally not explicitly specified.)
|
|
29
29
|
* @param containerSchema - Container schema for the new container.
|
|
30
|
-
* @param
|
|
31
|
-
*
|
|
30
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
31
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
32
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
33
|
+
* container opts into the latest defaults.
|
|
32
34
|
* @returns New detached container instance along with associated services.
|
|
33
35
|
*/
|
|
34
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
36
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
35
37
|
container: IFluidContainer<TContainerSchema>;
|
|
36
38
|
services: AzureContainerServices;
|
|
37
39
|
}>;
|
|
@@ -42,7 +44,7 @@ export declare class AzureClient {
|
|
|
42
44
|
* @param containerSchema - Container schema for the new container.
|
|
43
45
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
44
46
|
* @returns New detached container instance along with associated services.
|
|
45
|
-
* @deprecated Pass
|
|
47
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
46
48
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
47
49
|
*/
|
|
48
50
|
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{
|
|
@@ -55,11 +57,13 @@ export declare class AzureClient {
|
|
|
55
57
|
* (normally not explicitly specified.)
|
|
56
58
|
* @param id - Unique ID of the container in Azure Fluid Relay.
|
|
57
59
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
58
|
-
* @param
|
|
59
|
-
*
|
|
60
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
61
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
62
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
63
|
+
* container opts into the latest defaults.
|
|
60
64
|
* @returns Existing container instance along with associated services.
|
|
61
65
|
*/
|
|
62
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
66
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
63
67
|
container: IFluidContainer<TContainerSchema>;
|
|
64
68
|
services: AzureContainerServices;
|
|
65
69
|
}>;
|
|
@@ -71,7 +75,7 @@ export declare class AzureClient {
|
|
|
71
75
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
72
76
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
73
77
|
* @returns Existing container instance along with associated services.
|
|
74
|
-
* @deprecated Pass
|
|
78
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
75
79
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
76
80
|
*/
|
|
77
81
|
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{
|
|
@@ -85,11 +89,13 @@ export declare class AzureClient {
|
|
|
85
89
|
* @param id - Unique ID of the source container in Azure Fluid Relay.
|
|
86
90
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
87
91
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
88
|
-
* @param
|
|
89
|
-
*
|
|
92
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
93
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
94
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
95
|
+
* container opts into the latest defaults.
|
|
90
96
|
* @returns Loaded container instance at the specified version.
|
|
91
97
|
*/
|
|
92
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
98
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
93
99
|
container: IFluidContainer<TContainerSchema>;
|
|
94
100
|
}>;
|
|
95
101
|
/**
|
|
@@ -101,7 +107,7 @@ export declare class AzureClient {
|
|
|
101
107
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
102
108
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
103
109
|
* @returns Loaded container instance at the specified version.
|
|
104
|
-
* @deprecated Pass
|
|
110
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
105
111
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
106
112
|
*/
|
|
107
113
|
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureClient.d.ts","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EAEf,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"AzureClient.d.ts","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EAEf,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAKxF,OAAO,KAAK,EACX,gBAAgB,EAGhB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EAGvB,MAAM,iBAAiB,CAAC;AAiCzB;;;;GAIG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA0B;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2D;IAC5F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAE1D,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAMzB;IAEtB;;;OAGG;gBACgB,UAAU,EAAE,gBAAgB;IA0B/C;;;;;;;;;;OAUG;IACU,eAAe,CAAC,KAAK,CAAC,gBAAgB,SAAS,eAAe,EAC1E,eAAe,EAAE,gBAAgB,EACjC,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IACF;;;;;;;;;OASG;IACU,eAAe,CAAC,KAAK,CAAC,gBAAgB,SAAS,eAAe,EAC1E,eAAe,EAAE,gBAAgB,EAEjC,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IA2BF;;;;;;;;;;;OAWG;IACU,YAAY,CAAC,gBAAgB,SAAS,eAAe,EACjE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IACF;;;;;;;;;;OAUG;IACU,YAAY,CAAC,gBAAgB,SAAS,eAAe,EACjE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EAEjC,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IA8BF;;;;;;;;;;;;OAYG;IACU,oBAAoB,CAAC,gBAAgB,SAAS,eAAe,EACzE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,qBAAqB,EAC9B,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;KAC7C,CAAC;IACF;;;;;;;;;;;OAWG;IACU,oBAAoB,CAAC,gBAAgB,SAAS,eAAe,EACzE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,qBAAqB,EAE9B,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;KAC7C,CAAC;IA4BF;;;;;;OAMG;IACU,oBAAoB,CAChC,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA0BnC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,cAAc;YA6CR,oBAAoB;CA6BlC"}
|
package/dist/AzureClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureClient.js","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport {\n\ttype IContainer,\n\ttype IFluidModuleWithDetails,\n\ttype IRuntimeFactory,\n\tLoaderHeader,\n} from \"@fluidframework/container-definitions/internal\";\nimport {\n\tcreateDetachedContainer,\n\tloadContainerPaused,\n\tloadExistingContainer,\n\ttype ILoaderProps,\n} from \"@fluidframework/container-loader/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceFactory,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { applyStorageCompression } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tContainerSchema,\n\tIFluidContainer,\n\t// eslint-disable-next-line import-x/no-deprecated\n\tCompatibilityMode,\n} from \"@fluidframework/fluid-static\";\nimport {\n\tcreateDOProviderContainerRuntimeFactory,\n\tcreateFluidContainer,\n\tcreateServiceAudience,\n\tresolveCompatibilityModeToMinVersionForCollab,\n} from \"@fluidframework/fluid-static/internal\";\nimport { RouterliciousDocumentServiceFactory } from \"@fluidframework/routerlicious-driver/internal\";\nimport type { MinimumVersionForCollab } from \"@fluidframework/runtime-definitions\";\nimport { wrapConfigProviderWithDefaults } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { createAzureAudienceMember } from \"./AzureAudience.js\";\nimport { AzureUrlResolver, createAzureCreateNewRequest } from \"./AzureUrlResolver.js\";\nimport type {\n\tAzureClientProps,\n\tAzureClientPropsInternal,\n\tAzureConnectionConfig,\n\tAzureContainerServices,\n\tAzureContainerVersion,\n\tAzureGetVersionsOptions,\n\tAzureLocalConnectionConfig,\n\tAzureRemoteConnectionConfig,\n} from \"./interfaces.js\";\nimport { isAzureRemoteConnectionConfig } from \"./utils.js\";\n\n/**\n * Strongly typed id for connecting to a local Azure Fluid Relay.\n */\nconst LOCAL_MODE_TENANT_ID = \"local\";\nconst getTenantId = (connectionProperties: AzureConnectionConfig): string => {\n\treturn isAzureRemoteConnectionConfig(connectionProperties)\n\t\t? connectionProperties.tenantId\n\t\t: LOCAL_MODE_TENANT_ID;\n};\n\nconst MAX_VERSION_COUNT = 5;\n\n/**\n * Default feature gates.\n * These values will only be used if the feature gate is not already set by the supplied config provider.\n */\nconst azureClientFeatureGates = {\n\t// Azure client requires a write connection by default\n\t\"Fluid.Container.ForceWriteConnection\": true,\n};\n\n/**\n * Wrap the config provider to fall back on the appropriate defaults for Azure Client.\n * @param baseConfigProvider - The base config provider to wrap\n * @returns A new config provider with the appropriate defaults applied underneath the given provider\n */\nfunction wrapConfigProvider(baseConfigProvider?: IConfigProviderBase): IConfigProviderBase {\n\treturn wrapConfigProviderWithDefaults(baseConfigProvider, azureClientFeatureGates);\n}\n\n/**\n * AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,\n * when running with local tenantId, have it be backed by a local Azure Fluid Relay instance.\n * @public\n */\nexport class AzureClient {\n\tprivate readonly documentServiceFactory: IDocumentServiceFactory;\n\tprivate readonly urlResolver: IUrlResolver;\n\tprivate readonly configProvider: IConfigProviderBase | undefined;\n\tprivate readonly connectionConfig: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\tprivate readonly logger: ITelemetryBaseLogger | undefined;\n\n\tprivate readonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: MinimumVersionForCollab;\n\t}) => IRuntimeFactory;\n\n\t/**\n\t * Creates a new client instance using configuration parameters.\n\t * @param properties - Properties for initializing a new AzureClient instance\n\t */\n\tpublic constructor(properties: AzureClientProps) {\n\t\tthis.connectionConfig = properties.connection;\n\t\tthis.logger = properties.logger;\n\t\t// remove trailing slash from URL if any\n\t\tthis.connectionConfig.endpoint = this.connectionConfig.endpoint.replace(/\\/$/, \"\");\n\t\tthis.urlResolver = new AzureUrlResolver();\n\t\t// The local service implementation differs from the Azure Fluid Relay in blob\n\t\t// storage format. Azure Fluid Relay supports whole summary upload. Local currently does not.\n\t\tconst isRemoteConnection = isAzureRemoteConnectionConfig(this.connectionConfig);\n\t\tconst origDocumentServiceFactory: IDocumentServiceFactory =\n\t\t\tnew RouterliciousDocumentServiceFactory(this.connectionConfig.tokenProvider, {\n\t\t\t\tenableWholeSummaryUpload: isRemoteConnection,\n\t\t\t\tenableDiscovery: isRemoteConnection,\n\t\t\t});\n\n\t\tthis.documentServiceFactory = applyStorageCompression(\n\t\t\torigDocumentServiceFactory,\n\t\t\tproperties.summaryCompression,\n\t\t);\n\t\tthis.configProvider = wrapConfigProvider(properties.configProvider);\n\n\t\tthis.createContainerRuntimeFactory = (\n\t\t\tproperties as Partial<AzureClientPropsInternal>\n\t\t).createContainerRuntimeFactory;\n\t}\n\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param containerSchema - Container schema for the new container.\n\t * @param minVersionForCollab - Minimum Fluid Framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns New detached container instance along with associated services.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * This does not normally need to be specified explicitly.\n\t * @param containerSchema - Container schema for the new container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns New detached container instance along with associated services.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\n\t\tconst container = await createDetachedContainer({\n\t\t\t...loaderProps,\n\t\t\tcodeDetails: {\n\t\t\t\tpackage: \"no-dynamic-package\",\n\t\t\t\tconfig: {},\n\t\t\t},\n\t\t});\n\n\t\tconst fluidContainer = await this.createFluidContainer<TContainerSchema>(\n\t\t\tcontainer,\n\t\t\tthis.connectionConfig,\n\t\t);\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param minVersionForCollab - Minimum framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns Existing container instance along with associated services.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Existing container instance along with associated services.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst container = await loadExistingContainer({\n\t\t\t...loaderProps,\n\t\t\trequest: { url: url.href },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param minVersionForCollab - Minimum framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns Loaded container instance at the specified version.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Loaded container instance at the specified version.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\t\tconst container = await loadContainerPaused(loaderProps, {\n\t\t\turl: url.href,\n\t\t\theaders: { [LoaderHeader.version]: version.id },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\treturn { container: fluidContainer };\n\t}\n\n\t/**\n\t * Get the list of versions for specific container.\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param options - \"Get\" options. If options are not provided, API\n\t * will assume maxCount of versions to retrieve to be 5.\n\t * @returns Array of available container versions.\n\t */\n\tpublic async getContainerVersions(\n\t\tid: string,\n\t\toptions?: AzureGetVersionsOptions,\n\t): Promise<AzureContainerVersion[]> {\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst resolvedUrl = await this.urlResolver.resolve({ url: url.href });\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\"Unable to resolved URL\");\n\t\t}\n\t\tconst documentService =\n\t\t\tawait this.documentServiceFactory.createDocumentService(resolvedUrl);\n\t\tconst storage = await documentService.connectToStorage();\n\n\t\t// External API uses null\n\t\t// eslint-disable-next-line unicorn/no-null\n\t\tconst versions = await storage.getVersions(null, options?.maxCount ?? MAX_VERSION_COUNT);\n\n\t\treturn versions.map((item) => {\n\t\t\treturn { id: item.id, date: item.date };\n\t\t});\n\t}\n\n\tprivate getContainerServices(container: IContainer): AzureContainerServices {\n\t\treturn {\n\t\t\taudience: createServiceAudience({\n\t\t\t\tcontainer,\n\t\t\t\tcreateServiceMember: createAzureAudienceMember,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate getLoaderProps(\n\t\tschema: ContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): ILoaderProps {\n\t\tconst minVersionForCollaboration =\n\t\t\tresolveCompatibilityModeToMinVersionForCollab(compatibilityMode);\n\t\tconst runtimeFactory = this.createContainerRuntimeFactory\n\t\t\t? this.createContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t})\n\t\t\t: createDOProviderContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t});\n\n\t\tconst load = async (): Promise<IFluidModuleWithDetails> => {\n\t\t\treturn {\n\t\t\t\tmodule: { fluidExport: runtimeFactory },\n\t\t\t\tdetails: { package: \"no-dynamic-package\", config: {} },\n\t\t\t};\n\t\t};\n\n\t\tconst codeLoader = { load };\n\t\tconst client: IClient = {\n\t\t\tdetails: {\n\t\t\t\tcapabilities: { interactive: true },\n\t\t\t},\n\t\t\tpermission: [],\n\t\t\tscopes: [],\n\t\t\tuser: { id: \"\" },\n\t\t\tmode: \"write\",\n\t\t};\n\n\t\treturn {\n\t\t\turlResolver: this.urlResolver,\n\t\t\tdocumentServiceFactory: this.documentServiceFactory,\n\t\t\tcodeLoader,\n\t\t\tlogger: this.logger,\n\t\t\toptions: { client },\n\t\t\tconfigProvider: this.configProvider,\n\t\t};\n\t}\n\n\tprivate async createFluidContainer<TContainerSchema extends ContainerSchema>(\n\t\tcontainer: IContainer,\n\t\tconnection: AzureConnectionConfig,\n\t): Promise<IFluidContainer<TContainerSchema>> {\n\t\tconst createNewRequest = createAzureCreateNewRequest(\n\t\t\tconnection.endpoint,\n\t\t\tgetTenantId(connection),\n\t\t);\n\n\t\t/**\n\t\t * See {@link FluidContainer.attach}\n\t\t */\n\t\tconst attach = async (): Promise<string> => {\n\t\t\tif (container.attachState !== AttachState.Detached) {\n\t\t\t\tthrow new Error(\"Cannot attach container. Container is not in detached state\");\n\t\t\t}\n\t\t\tawait container.attach(createNewRequest);\n\t\t\tif (container.resolvedUrl === undefined) {\n\t\t\t\tthrow new Error(\"Resolved Url not available on attached container\");\n\t\t\t}\n\t\t\treturn container.resolvedUrl.id;\n\t\t};\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tfluidContainer.attach = attach;\n\t\treturn fluidContainer;\n\t}\n\t// #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AzureClient.js","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport {\n\ttype IContainer,\n\ttype IFluidModuleWithDetails,\n\ttype IRuntimeFactory,\n\tLoaderHeader,\n} from \"@fluidframework/container-definitions/internal\";\nimport {\n\tcreateDetachedContainer,\n\tloadContainerPaused,\n\tloadExistingContainer,\n\ttype ILoaderProps,\n} from \"@fluidframework/container-loader/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceFactory,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { applyStorageCompression } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tContainerSchema,\n\tIFluidContainer,\n\t// eslint-disable-next-line import-x/no-deprecated\n\tCompatibilityMode,\n} from \"@fluidframework/fluid-static\";\nimport {\n\tcreateDOProviderContainerRuntimeFactory,\n\tcreateFluidContainer,\n\tcreateServiceAudience,\n\tresolveCompatibilityModeToMinVersionForCollab,\n} from \"@fluidframework/fluid-static/internal\";\nimport { RouterliciousDocumentServiceFactory } from \"@fluidframework/routerlicious-driver/internal\";\nimport type { OldestSupportedClientVersion } from \"@fluidframework/runtime-definitions\";\nimport { wrapConfigProviderWithDefaults } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { createAzureAudienceMember } from \"./AzureAudience.js\";\nimport { AzureUrlResolver, createAzureCreateNewRequest } from \"./AzureUrlResolver.js\";\nimport type {\n\tAzureClientProps,\n\tAzureClientPropsInternal,\n\tAzureConnectionConfig,\n\tAzureContainerServices,\n\tAzureContainerVersion,\n\tAzureGetVersionsOptions,\n\tAzureLocalConnectionConfig,\n\tAzureRemoteConnectionConfig,\n} from \"./interfaces.js\";\nimport { isAzureRemoteConnectionConfig } from \"./utils.js\";\n\n/**\n * Strongly typed id for connecting to a local Azure Fluid Relay.\n */\nconst LOCAL_MODE_TENANT_ID = \"local\";\nconst getTenantId = (connectionProperties: AzureConnectionConfig): string => {\n\treturn isAzureRemoteConnectionConfig(connectionProperties)\n\t\t? connectionProperties.tenantId\n\t\t: LOCAL_MODE_TENANT_ID;\n};\n\nconst MAX_VERSION_COUNT = 5;\n\n/**\n * Default feature gates.\n * These values will only be used if the feature gate is not already set by the supplied config provider.\n */\nconst azureClientFeatureGates = {\n\t// Azure client requires a write connection by default\n\t\"Fluid.Container.ForceWriteConnection\": true,\n};\n\n/**\n * Wrap the config provider to fall back on the appropriate defaults for Azure Client.\n * @param baseConfigProvider - The base config provider to wrap\n * @returns A new config provider with the appropriate defaults applied underneath the given provider\n */\nfunction wrapConfigProvider(baseConfigProvider?: IConfigProviderBase): IConfigProviderBase {\n\treturn wrapConfigProviderWithDefaults(baseConfigProvider, azureClientFeatureGates);\n}\n\n/**\n * AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,\n * when running with local tenantId, have it be backed by a local Azure Fluid Relay instance.\n * @public\n */\nexport class AzureClient {\n\tprivate readonly documentServiceFactory: IDocumentServiceFactory;\n\tprivate readonly urlResolver: IUrlResolver;\n\tprivate readonly configProvider: IConfigProviderBase | undefined;\n\tprivate readonly connectionConfig: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\tprivate readonly logger: ITelemetryBaseLogger | undefined;\n\n\tprivate readonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: OldestSupportedClientVersion;\n\t}) => IRuntimeFactory;\n\n\t/**\n\t * Creates a new client instance using configuration parameters.\n\t * @param properties - Properties for initializing a new AzureClient instance\n\t */\n\tpublic constructor(properties: AzureClientProps) {\n\t\tthis.connectionConfig = properties.connection;\n\t\tthis.logger = properties.logger;\n\t\t// remove trailing slash from URL if any\n\t\tthis.connectionConfig.endpoint = this.connectionConfig.endpoint.replace(/\\/$/, \"\");\n\t\tthis.urlResolver = new AzureUrlResolver();\n\t\t// The local service implementation differs from the Azure Fluid Relay in blob\n\t\t// storage format. Azure Fluid Relay supports whole summary upload. Local currently does not.\n\t\tconst isRemoteConnection = isAzureRemoteConnectionConfig(this.connectionConfig);\n\t\tconst origDocumentServiceFactory: IDocumentServiceFactory =\n\t\t\tnew RouterliciousDocumentServiceFactory(this.connectionConfig.tokenProvider, {\n\t\t\t\tenableWholeSummaryUpload: isRemoteConnection,\n\t\t\t\tenableDiscovery: isRemoteConnection,\n\t\t\t});\n\n\t\tthis.documentServiceFactory = applyStorageCompression(\n\t\t\torigDocumentServiceFactory,\n\t\t\tproperties.summaryCompression,\n\t\t);\n\t\tthis.configProvider = wrapConfigProvider(properties.configProvider);\n\n\t\tthis.createContainerRuntimeFactory = (\n\t\t\tproperties as Partial<AzureClientPropsInternal>\n\t\t).createContainerRuntimeFactory;\n\t}\n\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param containerSchema - Container schema for the new container.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns New detached container instance along with associated services.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * This does not normally need to be specified explicitly.\n\t * @param containerSchema - Container schema for the new container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns New detached container instance along with associated services.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\n\t\tconst container = await createDetachedContainer({\n\t\t\t...loaderProps,\n\t\t\tcodeDetails: {\n\t\t\t\tpackage: \"no-dynamic-package\",\n\t\t\t\tconfig: {},\n\t\t\t},\n\t\t});\n\n\t\tconst fluidContainer = await this.createFluidContainer<TContainerSchema>(\n\t\t\tcontainer,\n\t\t\tthis.connectionConfig,\n\t\t);\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns Existing container instance along with associated services.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Existing container instance along with associated services.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst container = await loadExistingContainer({\n\t\t\t...loaderProps,\n\t\t\trequest: { url: url.href },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns Loaded container instance at the specified version.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Loaded container instance at the specified version.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\t\tconst container = await loadContainerPaused(loaderProps, {\n\t\t\turl: url.href,\n\t\t\theaders: { [LoaderHeader.version]: version.id },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\treturn { container: fluidContainer };\n\t}\n\n\t/**\n\t * Get the list of versions for specific container.\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param options - \"Get\" options. If options are not provided, API\n\t * will assume maxCount of versions to retrieve to be 5.\n\t * @returns Array of available container versions.\n\t */\n\tpublic async getContainerVersions(\n\t\tid: string,\n\t\toptions?: AzureGetVersionsOptions,\n\t): Promise<AzureContainerVersion[]> {\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst resolvedUrl = await this.urlResolver.resolve({ url: url.href });\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\"Unable to resolved URL\");\n\t\t}\n\t\tconst documentService =\n\t\t\tawait this.documentServiceFactory.createDocumentService(resolvedUrl);\n\t\tconst storage = await documentService.connectToStorage();\n\n\t\t// External API uses null\n\t\t// eslint-disable-next-line unicorn/no-null\n\t\tconst versions = await storage.getVersions(null, options?.maxCount ?? MAX_VERSION_COUNT);\n\n\t\treturn versions.map((item) => {\n\t\t\treturn { id: item.id, date: item.date };\n\t\t});\n\t}\n\n\tprivate getContainerServices(container: IContainer): AzureContainerServices {\n\t\treturn {\n\t\t\taudience: createServiceAudience({\n\t\t\t\tcontainer,\n\t\t\t\tcreateServiceMember: createAzureAudienceMember,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate getLoaderProps(\n\t\tschema: ContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): ILoaderProps {\n\t\tconst minVersionForCollaboration =\n\t\t\tresolveCompatibilityModeToMinVersionForCollab(compatibilityMode);\n\t\tconst runtimeFactory = this.createContainerRuntimeFactory\n\t\t\t? this.createContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t})\n\t\t\t: createDOProviderContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t});\n\n\t\tconst load = async (): Promise<IFluidModuleWithDetails> => {\n\t\t\treturn {\n\t\t\t\tmodule: { fluidExport: runtimeFactory },\n\t\t\t\tdetails: { package: \"no-dynamic-package\", config: {} },\n\t\t\t};\n\t\t};\n\n\t\tconst codeLoader = { load };\n\t\tconst client: IClient = {\n\t\t\tdetails: {\n\t\t\t\tcapabilities: { interactive: true },\n\t\t\t},\n\t\t\tpermission: [],\n\t\t\tscopes: [],\n\t\t\tuser: { id: \"\" },\n\t\t\tmode: \"write\",\n\t\t};\n\n\t\treturn {\n\t\t\turlResolver: this.urlResolver,\n\t\t\tdocumentServiceFactory: this.documentServiceFactory,\n\t\t\tcodeLoader,\n\t\t\tlogger: this.logger,\n\t\t\toptions: { client },\n\t\t\tconfigProvider: this.configProvider,\n\t\t};\n\t}\n\n\tprivate async createFluidContainer<TContainerSchema extends ContainerSchema>(\n\t\tcontainer: IContainer,\n\t\tconnection: AzureConnectionConfig,\n\t): Promise<IFluidContainer<TContainerSchema>> {\n\t\tconst createNewRequest = createAzureCreateNewRequest(\n\t\t\tconnection.endpoint,\n\t\t\tgetTenantId(connection),\n\t\t);\n\n\t\t/**\n\t\t * See {@link FluidContainer.attach}\n\t\t */\n\t\tconst attach = async (): Promise<string> => {\n\t\t\tif (container.attachState !== AttachState.Detached) {\n\t\t\t\tthrow new Error(\"Cannot attach container. Container is not in detached state\");\n\t\t\t}\n\t\t\tawait container.attach(createNewRequest);\n\t\t\tif (container.resolvedUrl === undefined) {\n\t\t\t\tthrow new Error(\"Resolved Url not available on attached container\");\n\t\t\t}\n\t\t\treturn container.resolvedUrl.id;\n\t\t};\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tfluidContainer.attach = attach;\n\t\treturn fluidContainer;\n\t}\n\t// #endregion\n}\n"]}
|
package/dist/interfaces.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { IUser } from "@fluidframework/driver-definitions";
|
|
|
8
8
|
import type { ICompressionStorageConfig } from "@fluidframework/driver-utils";
|
|
9
9
|
import type { ContainerSchema, IMember, IServiceAudience } from "@fluidframework/fluid-static";
|
|
10
10
|
import type { ITokenProvider } from "@fluidframework/routerlicious-driver";
|
|
11
|
-
import type {
|
|
11
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
12
12
|
/**
|
|
13
13
|
* Props for initializing a new AzureClient instance
|
|
14
14
|
* @public
|
|
@@ -38,7 +38,7 @@ export interface AzureClientPropsInternal extends AzureClientProps {
|
|
|
38
38
|
*/
|
|
39
39
|
readonly createContainerRuntimeFactory?: ({ schema, minVersionForCollaboration, }: {
|
|
40
40
|
schema: ContainerSchema;
|
|
41
|
-
minVersionForCollaboration:
|
|
41
|
+
minVersionForCollaboration: OldestSupportedClientVersion;
|
|
42
42
|
}) => IRuntimeFactory;
|
|
43
43
|
}
|
|
44
44
|
/**
|
package/dist/interfaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,2BAA2B,GAAG,0BAA0B,CAAC;IAC9E;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAE9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;CAClE;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE;;OAEG;IACH,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC,EACzC,MAAM,EACN,0BAA0B,GAC1B,EAAE;QACF,MAAM,EAAE,eAAe,CAAC;QACxB,0BAA0B,EAAE,4BAA4B,CAAC;KACzD,KAAK,eAAe,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,IAAI,EAAE,yBAAyB,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,aAAa,EAAE,cAAc,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACzE;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACxE;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACtC;;;OAGG;IACH,QAAQ,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;GAQG;AAGH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,KAAK;IAChD;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC;CACtB;AAED;;;;;;;;;GASG;AAGH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,OAAO;IACpD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC"}
|
package/dist/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.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 { IRuntimeFactory } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IUser } from \"@fluidframework/driver-definitions\";\nimport type { ICompressionStorageConfig } from \"@fluidframework/driver-utils\";\nimport type { ContainerSchema, IMember, IServiceAudience } from \"@fluidframework/fluid-static\";\nimport type { ITokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport type {
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.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 { IRuntimeFactory } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IUser } from \"@fluidframework/driver-definitions\";\nimport type { ICompressionStorageConfig } from \"@fluidframework/driver-utils\";\nimport type { ContainerSchema, IMember, IServiceAudience } from \"@fluidframework/fluid-static\";\nimport type { ITokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport type { OldestSupportedClientVersion } from \"@fluidframework/runtime-definitions\";\n\n/**\n * Props for initializing a new AzureClient instance\n * @public\n */\nexport interface AzureClientProps {\n\t/**\n\t * Configuration for establishing a connection with the Azure Fluid Relay.\n\t */\n\treadonly connection: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\t/**\n\t * Optional. A logger instance to receive diagnostic messages.\n\t */\n\treadonly logger?: ITelemetryBaseLogger;\n\n\t/**\n\t * Base interface for providing configurations to control experimental features. If unsure, leave this undefined.\n\t */\n\treadonly configProvider?: IConfigProviderBase;\n\n\treadonly summaryCompression?: boolean | ICompressionStorageConfig;\n}\n\n/**\n * Internal only {@link AzureClientProps}.\n * @internal\n */\nexport interface AzureClientPropsInternal extends AzureClientProps {\n\t/**\n\t * Optional override for the container runtime factory used by the client.\n\t */\n\treadonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: OldestSupportedClientVersion;\n\t}) => IRuntimeFactory;\n}\n\n/**\n * Container version metadata.\n * @public\n */\nexport interface AzureContainerVersion {\n\t/**\n\t * Version ID\n\t */\n\tid: string;\n\n\t/**\n\t * Time when version was generated.\n\t * ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ\n\t */\n\tdate?: string;\n}\n\n/**\n * Options for \"Get Container Versions\" API.\n * @public\n */\nexport interface AzureGetVersionsOptions {\n\t/**\n\t * Max number of versions\n\t */\n\tmaxCount: number;\n}\n\n/**\n * The type of connection.\n *\n * - \"local\" for local connections to a Fluid relay instance running on the localhost\n *\n * - \"remote\" for client connections to the Azure Fluid Relay service\n * @public\n */\nexport type AzureConnectionConfigType = \"local\" | \"remote\";\n\n/**\n * Parameters for establishing a connection with the Azure Fluid Relay.\n * @public\n */\nexport interface AzureConnectionConfig {\n\t/**\n\t * The type of connection. Whether we're connecting to a remote Fluid relay server or a local instance.\n\t */\n\ttype: AzureConnectionConfigType;\n\t/**\n\t * URI to the Azure Fluid Relay service discovery endpoint.\n\t */\n\tendpoint: string;\n\t/**\n\t * Instance that provides Azure Fluid Relay endpoint tokens.\n\t */\n\ttokenProvider: ITokenProvider;\n}\n\n/**\n * Parameters for establishing a remote connection with the Azure Fluid Relay.\n * @public\n */\nexport interface AzureRemoteConnectionConfig extends AzureConnectionConfig {\n\t/**\n\t * The type of connection. Set to a remote connection.\n\t */\n\ttype: \"remote\";\n\t/**\n\t * Unique tenant identifier.\n\t */\n\ttenantId: string;\n}\n\n/**\n * Parameters for establishing a local connection with a local instance of the Azure Fluid Relay.\n * @public\n */\nexport interface AzureLocalConnectionConfig extends AzureConnectionConfig {\n\t/**\n\t * The type of connection. Set to a remote connection.\n\t */\n\ttype: \"local\";\n}\n\n/**\n * Holds the functionality specifically tied to the Azure Fluid Relay, and how the data stored in\n * the FluidContainer is persisted in the backend and consumed by users.\n *\n * @remarks\n *\n * Returned by the {@link AzureClient} alongside a {@link @fluidframework/fluid-static#FluidContainer}.\n *\n * Any functionality regarding how the data is handled within the FluidContainer itself, i.e. which data objects\n * or DDSes to use, will not be included here but rather on the FluidContainer class itself.\n * @public\n */\nexport interface AzureContainerServices {\n\t/**\n\t * Provides an object that can be used to get the users that are present in this Fluid session and\n\t * listeners for when the roster has any changes from users joining/leaving the session\n\t */\n\taudience: IAzureAudience;\n}\n\n/**\n * Since Azure provides user names for all of its members, we extend the\n * {@link @fluidframework/protocol-definitions#IUser} interface to include this service-specific value.\n *\n * @typeParam T - See {@link AzureUser.additionalDetails}.\n * Note: must be JSON-serializable.\n * Passing a non-serializable object (e.g. a `class`) will result in undefined behavior.\n * @internal\n */\n// TODO: this should be updated to use something other than `any` (unknown)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AzureUser<T = any> extends IUser {\n\t/**\n\t * {@inheritDoc AzureMember.name}\n\t *\n\t */\n\tname: string;\n\n\t/**\n\t * {@inheritDoc AzureMember.additionalDetails}\n\t */\n\tadditionalDetails?: T;\n}\n\n/**\n * Since Azure provides user names for all of its members, we extend the\n * {@link @fluidframework/fluid-static#IMember} interface to include this service-specific value.\n * It will be returned for all audience members connected to Azure.\n *\n * @typeParam T - See {@link AzureMember.additionalDetails}.\n * Note: must be JSON-serializable.\n * Passing a non-serializable object (e.g. a `class`) will result in undefined behavior.\n * @public\n */\n// TODO: this should be updated to use something other than `any` (unknown)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AzureMember<T = any> extends IMember {\n\t/**\n\t * The user's name\n\t */\n\tname: string;\n\n\t/**\n\t * Custom, app-specific user information\n\t */\n\tadditionalDetails?: T;\n}\n\n/**\n * Audience object for Azure Fluid Relay containers\n * @public\n */\nexport type IAzureAudience = IServiceAudience<AzureMember>;\n"]}
|
package/lib/AzureClient.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import type { ContainerSchema, IFluidContainer, CompatibilityMode } from "@fluidframework/fluid-static";
|
|
6
|
-
import type {
|
|
6
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
7
7
|
import type { AzureClientProps, AzureContainerServices, AzureContainerVersion, AzureGetVersionsOptions } from "./interfaces.js";
|
|
8
8
|
/**
|
|
9
9
|
* AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,
|
|
@@ -27,11 +27,13 @@ export declare class AzureClient {
|
|
|
27
27
|
* @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.
|
|
28
28
|
* (normally not explicitly specified.)
|
|
29
29
|
* @param containerSchema - Container schema for the new container.
|
|
30
|
-
* @param
|
|
31
|
-
*
|
|
30
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
31
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
32
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
33
|
+
* container opts into the latest defaults.
|
|
32
34
|
* @returns New detached container instance along with associated services.
|
|
33
35
|
*/
|
|
34
|
-
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema,
|
|
36
|
+
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
35
37
|
container: IFluidContainer<TContainerSchema>;
|
|
36
38
|
services: AzureContainerServices;
|
|
37
39
|
}>;
|
|
@@ -42,7 +44,7 @@ export declare class AzureClient {
|
|
|
42
44
|
* @param containerSchema - Container schema for the new container.
|
|
43
45
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
44
46
|
* @returns New detached container instance along with associated services.
|
|
45
|
-
* @deprecated Pass
|
|
47
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
46
48
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
47
49
|
*/
|
|
48
50
|
createContainer<const TContainerSchema extends ContainerSchema>(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{
|
|
@@ -55,11 +57,13 @@ export declare class AzureClient {
|
|
|
55
57
|
* (normally not explicitly specified.)
|
|
56
58
|
* @param id - Unique ID of the container in Azure Fluid Relay.
|
|
57
59
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
58
|
-
* @param
|
|
59
|
-
*
|
|
60
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
61
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
62
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
63
|
+
* container opts into the latest defaults.
|
|
60
64
|
* @returns Existing container instance along with associated services.
|
|
61
65
|
*/
|
|
62
|
-
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema,
|
|
66
|
+
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
63
67
|
container: IFluidContainer<TContainerSchema>;
|
|
64
68
|
services: AzureContainerServices;
|
|
65
69
|
}>;
|
|
@@ -71,7 +75,7 @@ export declare class AzureClient {
|
|
|
71
75
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
72
76
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
73
77
|
* @returns Existing container instance along with associated services.
|
|
74
|
-
* @deprecated Pass
|
|
78
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
75
79
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
76
80
|
*/
|
|
77
81
|
getContainer<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{
|
|
@@ -85,11 +89,13 @@ export declare class AzureClient {
|
|
|
85
89
|
* @param id - Unique ID of the source container in Azure Fluid Relay.
|
|
86
90
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
87
91
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
88
|
-
* @param
|
|
89
|
-
*
|
|
92
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
93
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
94
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
95
|
+
* container opts into the latest defaults.
|
|
90
96
|
* @returns Loaded container instance at the specified version.
|
|
91
97
|
*/
|
|
92
|
-
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion,
|
|
98
|
+
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, oldestSupportedClient: OldestSupportedClientVersion): Promise<{
|
|
93
99
|
container: IFluidContainer<TContainerSchema>;
|
|
94
100
|
}>;
|
|
95
101
|
/**
|
|
@@ -101,7 +107,7 @@ export declare class AzureClient {
|
|
|
101
107
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
102
108
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
103
109
|
* @returns Loaded container instance at the specified version.
|
|
104
|
-
* @deprecated Pass
|
|
110
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
105
111
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
106
112
|
*/
|
|
107
113
|
viewContainerVersion<TContainerSchema extends ContainerSchema>(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{
|
package/lib/AzureClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureClient.d.ts","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EAEf,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"AzureClient.d.ts","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EAEf,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAKxF,OAAO,KAAK,EACX,gBAAgB,EAGhB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EAGvB,MAAM,iBAAiB,CAAC;AAiCzB;;;;GAIG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA0B;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2D;IAC5F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAE1D,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAMzB;IAEtB;;;OAGG;gBACgB,UAAU,EAAE,gBAAgB;IA0B/C;;;;;;;;;;OAUG;IACU,eAAe,CAAC,KAAK,CAAC,gBAAgB,SAAS,eAAe,EAC1E,eAAe,EAAE,gBAAgB,EACjC,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IACF;;;;;;;;;OASG;IACU,eAAe,CAAC,KAAK,CAAC,gBAAgB,SAAS,eAAe,EAC1E,eAAe,EAAE,gBAAgB,EAEjC,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IA2BF;;;;;;;;;;;OAWG;IACU,YAAY,CAAC,gBAAgB,SAAS,eAAe,EACjE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IACF;;;;;;;;;;OAUG;IACU,YAAY,CAAC,gBAAgB,SAAS,eAAe,EACjE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EAEjC,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC7C,QAAQ,EAAE,sBAAsB,CAAC;KACjC,CAAC;IA8BF;;;;;;;;;;;;OAYG;IACU,oBAAoB,CAAC,gBAAgB,SAAS,eAAe,EACzE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,qBAAqB,EAC9B,qBAAqB,EAAE,4BAA4B,GACjD,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;KAC7C,CAAC;IACF;;;;;;;;;;;OAWG;IACU,oBAAoB,CAAC,gBAAgB,SAAS,eAAe,EACzE,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,qBAAqB,EAE9B,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC;QACV,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;KAC7C,CAAC;IA4BF;;;;;;OAMG;IACU,oBAAoB,CAChC,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA0BnC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,cAAc;YA6CR,oBAAoB;CA6BlC"}
|
package/lib/AzureClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureClient.js","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport {\n\ttype IContainer,\n\ttype IFluidModuleWithDetails,\n\ttype IRuntimeFactory,\n\tLoaderHeader,\n} from \"@fluidframework/container-definitions/internal\";\nimport {\n\tcreateDetachedContainer,\n\tloadContainerPaused,\n\tloadExistingContainer,\n\ttype ILoaderProps,\n} from \"@fluidframework/container-loader/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceFactory,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { applyStorageCompression } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tContainerSchema,\n\tIFluidContainer,\n\t// eslint-disable-next-line import-x/no-deprecated\n\tCompatibilityMode,\n} from \"@fluidframework/fluid-static\";\nimport {\n\tcreateDOProviderContainerRuntimeFactory,\n\tcreateFluidContainer,\n\tcreateServiceAudience,\n\tresolveCompatibilityModeToMinVersionForCollab,\n} from \"@fluidframework/fluid-static/internal\";\nimport { RouterliciousDocumentServiceFactory } from \"@fluidframework/routerlicious-driver/internal\";\nimport type { MinimumVersionForCollab } from \"@fluidframework/runtime-definitions\";\nimport { wrapConfigProviderWithDefaults } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { createAzureAudienceMember } from \"./AzureAudience.js\";\nimport { AzureUrlResolver, createAzureCreateNewRequest } from \"./AzureUrlResolver.js\";\nimport type {\n\tAzureClientProps,\n\tAzureClientPropsInternal,\n\tAzureConnectionConfig,\n\tAzureContainerServices,\n\tAzureContainerVersion,\n\tAzureGetVersionsOptions,\n\tAzureLocalConnectionConfig,\n\tAzureRemoteConnectionConfig,\n} from \"./interfaces.js\";\nimport { isAzureRemoteConnectionConfig } from \"./utils.js\";\n\n/**\n * Strongly typed id for connecting to a local Azure Fluid Relay.\n */\nconst LOCAL_MODE_TENANT_ID = \"local\";\nconst getTenantId = (connectionProperties: AzureConnectionConfig): string => {\n\treturn isAzureRemoteConnectionConfig(connectionProperties)\n\t\t? connectionProperties.tenantId\n\t\t: LOCAL_MODE_TENANT_ID;\n};\n\nconst MAX_VERSION_COUNT = 5;\n\n/**\n * Default feature gates.\n * These values will only be used if the feature gate is not already set by the supplied config provider.\n */\nconst azureClientFeatureGates = {\n\t// Azure client requires a write connection by default\n\t\"Fluid.Container.ForceWriteConnection\": true,\n};\n\n/**\n * Wrap the config provider to fall back on the appropriate defaults for Azure Client.\n * @param baseConfigProvider - The base config provider to wrap\n * @returns A new config provider with the appropriate defaults applied underneath the given provider\n */\nfunction wrapConfigProvider(baseConfigProvider?: IConfigProviderBase): IConfigProviderBase {\n\treturn wrapConfigProviderWithDefaults(baseConfigProvider, azureClientFeatureGates);\n}\n\n/**\n * AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,\n * when running with local tenantId, have it be backed by a local Azure Fluid Relay instance.\n * @public\n */\nexport class AzureClient {\n\tprivate readonly documentServiceFactory: IDocumentServiceFactory;\n\tprivate readonly urlResolver: IUrlResolver;\n\tprivate readonly configProvider: IConfigProviderBase | undefined;\n\tprivate readonly connectionConfig: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\tprivate readonly logger: ITelemetryBaseLogger | undefined;\n\n\tprivate readonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: MinimumVersionForCollab;\n\t}) => IRuntimeFactory;\n\n\t/**\n\t * Creates a new client instance using configuration parameters.\n\t * @param properties - Properties for initializing a new AzureClient instance\n\t */\n\tpublic constructor(properties: AzureClientProps) {\n\t\tthis.connectionConfig = properties.connection;\n\t\tthis.logger = properties.logger;\n\t\t// remove trailing slash from URL if any\n\t\tthis.connectionConfig.endpoint = this.connectionConfig.endpoint.replace(/\\/$/, \"\");\n\t\tthis.urlResolver = new AzureUrlResolver();\n\t\t// The local service implementation differs from the Azure Fluid Relay in blob\n\t\t// storage format. Azure Fluid Relay supports whole summary upload. Local currently does not.\n\t\tconst isRemoteConnection = isAzureRemoteConnectionConfig(this.connectionConfig);\n\t\tconst origDocumentServiceFactory: IDocumentServiceFactory =\n\t\t\tnew RouterliciousDocumentServiceFactory(this.connectionConfig.tokenProvider, {\n\t\t\t\tenableWholeSummaryUpload: isRemoteConnection,\n\t\t\t\tenableDiscovery: isRemoteConnection,\n\t\t\t});\n\n\t\tthis.documentServiceFactory = applyStorageCompression(\n\t\t\torigDocumentServiceFactory,\n\t\t\tproperties.summaryCompression,\n\t\t);\n\t\tthis.configProvider = wrapConfigProvider(properties.configProvider);\n\n\t\tthis.createContainerRuntimeFactory = (\n\t\t\tproperties as Partial<AzureClientPropsInternal>\n\t\t).createContainerRuntimeFactory;\n\t}\n\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param containerSchema - Container schema for the new container.\n\t * @param minVersionForCollab - Minimum Fluid Framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns New detached container instance along with associated services.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * This does not normally need to be specified explicitly.\n\t * @param containerSchema - Container schema for the new container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns New detached container instance along with associated services.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\n\t\tconst container = await createDetachedContainer({\n\t\t\t...loaderProps,\n\t\t\tcodeDetails: {\n\t\t\t\tpackage: \"no-dynamic-package\",\n\t\t\t\tconfig: {},\n\t\t\t},\n\t\t});\n\n\t\tconst fluidContainer = await this.createFluidContainer<TContainerSchema>(\n\t\t\tcontainer,\n\t\t\tthis.connectionConfig,\n\t\t);\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param minVersionForCollab - Minimum framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns Existing container instance along with associated services.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Existing container instance along with associated services.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst container = await loadExistingContainer({\n\t\t\t...loaderProps,\n\t\t\trequest: { url: url.href },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param minVersionForCollab - Minimum framework version required for collaboration, as a\n\t * SemVer string (e.g. `\"1.0.0\"`, `\"2.100.0\"`). Prefer the current Fluid Framework version so the container opts into the latest defaults.\n\t * @returns Loaded container instance at the specified version.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\tminVersionForCollab: MinimumVersionForCollab,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Loaded container instance at the specified version.\n\t * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\t\tconst container = await loadContainerPaused(loaderProps, {\n\t\t\turl: url.href,\n\t\t\theaders: { [LoaderHeader.version]: version.id },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\treturn { container: fluidContainer };\n\t}\n\n\t/**\n\t * Get the list of versions for specific container.\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param options - \"Get\" options. If options are not provided, API\n\t * will assume maxCount of versions to retrieve to be 5.\n\t * @returns Array of available container versions.\n\t */\n\tpublic async getContainerVersions(\n\t\tid: string,\n\t\toptions?: AzureGetVersionsOptions,\n\t): Promise<AzureContainerVersion[]> {\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst resolvedUrl = await this.urlResolver.resolve({ url: url.href });\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\"Unable to resolved URL\");\n\t\t}\n\t\tconst documentService =\n\t\t\tawait this.documentServiceFactory.createDocumentService(resolvedUrl);\n\t\tconst storage = await documentService.connectToStorage();\n\n\t\t// External API uses null\n\t\t// eslint-disable-next-line unicorn/no-null\n\t\tconst versions = await storage.getVersions(null, options?.maxCount ?? MAX_VERSION_COUNT);\n\n\t\treturn versions.map((item) => {\n\t\t\treturn { id: item.id, date: item.date };\n\t\t});\n\t}\n\n\tprivate getContainerServices(container: IContainer): AzureContainerServices {\n\t\treturn {\n\t\t\taudience: createServiceAudience({\n\t\t\t\tcontainer,\n\t\t\t\tcreateServiceMember: createAzureAudienceMember,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate getLoaderProps(\n\t\tschema: ContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: MinimumVersionForCollab | CompatibilityMode,\n\t): ILoaderProps {\n\t\tconst minVersionForCollaboration =\n\t\t\tresolveCompatibilityModeToMinVersionForCollab(compatibilityMode);\n\t\tconst runtimeFactory = this.createContainerRuntimeFactory\n\t\t\t? this.createContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t})\n\t\t\t: createDOProviderContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t});\n\n\t\tconst load = async (): Promise<IFluidModuleWithDetails> => {\n\t\t\treturn {\n\t\t\t\tmodule: { fluidExport: runtimeFactory },\n\t\t\t\tdetails: { package: \"no-dynamic-package\", config: {} },\n\t\t\t};\n\t\t};\n\n\t\tconst codeLoader = { load };\n\t\tconst client: IClient = {\n\t\t\tdetails: {\n\t\t\t\tcapabilities: { interactive: true },\n\t\t\t},\n\t\t\tpermission: [],\n\t\t\tscopes: [],\n\t\t\tuser: { id: \"\" },\n\t\t\tmode: \"write\",\n\t\t};\n\n\t\treturn {\n\t\t\turlResolver: this.urlResolver,\n\t\t\tdocumentServiceFactory: this.documentServiceFactory,\n\t\t\tcodeLoader,\n\t\t\tlogger: this.logger,\n\t\t\toptions: { client },\n\t\t\tconfigProvider: this.configProvider,\n\t\t};\n\t}\n\n\tprivate async createFluidContainer<TContainerSchema extends ContainerSchema>(\n\t\tcontainer: IContainer,\n\t\tconnection: AzureConnectionConfig,\n\t): Promise<IFluidContainer<TContainerSchema>> {\n\t\tconst createNewRequest = createAzureCreateNewRequest(\n\t\t\tconnection.endpoint,\n\t\t\tgetTenantId(connection),\n\t\t);\n\n\t\t/**\n\t\t * See {@link FluidContainer.attach}\n\t\t */\n\t\tconst attach = async (): Promise<string> => {\n\t\t\tif (container.attachState !== AttachState.Detached) {\n\t\t\t\tthrow new Error(\"Cannot attach container. Container is not in detached state\");\n\t\t\t}\n\t\t\tawait container.attach(createNewRequest);\n\t\t\tif (container.resolvedUrl === undefined) {\n\t\t\t\tthrow new Error(\"Resolved Url not available on attached container\");\n\t\t\t}\n\t\t\treturn container.resolvedUrl.id;\n\t\t};\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tfluidContainer.attach = attach;\n\t\treturn fluidContainer;\n\t}\n\t// #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AzureClient.js","sourceRoot":"","sources":["../src/AzureClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport {\n\ttype IContainer,\n\ttype IFluidModuleWithDetails,\n\ttype IRuntimeFactory,\n\tLoaderHeader,\n} from \"@fluidframework/container-definitions/internal\";\nimport {\n\tcreateDetachedContainer,\n\tloadContainerPaused,\n\tloadExistingContainer,\n\ttype ILoaderProps,\n} from \"@fluidframework/container-loader/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceFactory,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { applyStorageCompression } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tContainerSchema,\n\tIFluidContainer,\n\t// eslint-disable-next-line import-x/no-deprecated\n\tCompatibilityMode,\n} from \"@fluidframework/fluid-static\";\nimport {\n\tcreateDOProviderContainerRuntimeFactory,\n\tcreateFluidContainer,\n\tcreateServiceAudience,\n\tresolveCompatibilityModeToMinVersionForCollab,\n} from \"@fluidframework/fluid-static/internal\";\nimport { RouterliciousDocumentServiceFactory } from \"@fluidframework/routerlicious-driver/internal\";\nimport type { OldestSupportedClientVersion } from \"@fluidframework/runtime-definitions\";\nimport { wrapConfigProviderWithDefaults } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { createAzureAudienceMember } from \"./AzureAudience.js\";\nimport { AzureUrlResolver, createAzureCreateNewRequest } from \"./AzureUrlResolver.js\";\nimport type {\n\tAzureClientProps,\n\tAzureClientPropsInternal,\n\tAzureConnectionConfig,\n\tAzureContainerServices,\n\tAzureContainerVersion,\n\tAzureGetVersionsOptions,\n\tAzureLocalConnectionConfig,\n\tAzureRemoteConnectionConfig,\n} from \"./interfaces.js\";\nimport { isAzureRemoteConnectionConfig } from \"./utils.js\";\n\n/**\n * Strongly typed id for connecting to a local Azure Fluid Relay.\n */\nconst LOCAL_MODE_TENANT_ID = \"local\";\nconst getTenantId = (connectionProperties: AzureConnectionConfig): string => {\n\treturn isAzureRemoteConnectionConfig(connectionProperties)\n\t\t? connectionProperties.tenantId\n\t\t: LOCAL_MODE_TENANT_ID;\n};\n\nconst MAX_VERSION_COUNT = 5;\n\n/**\n * Default feature gates.\n * These values will only be used if the feature gate is not already set by the supplied config provider.\n */\nconst azureClientFeatureGates = {\n\t// Azure client requires a write connection by default\n\t\"Fluid.Container.ForceWriteConnection\": true,\n};\n\n/**\n * Wrap the config provider to fall back on the appropriate defaults for Azure Client.\n * @param baseConfigProvider - The base config provider to wrap\n * @returns A new config provider with the appropriate defaults applied underneath the given provider\n */\nfunction wrapConfigProvider(baseConfigProvider?: IConfigProviderBase): IConfigProviderBase {\n\treturn wrapConfigProviderWithDefaults(baseConfigProvider, azureClientFeatureGates);\n}\n\n/**\n * AzureClient provides the ability to have a Fluid object backed by the Azure Fluid Relay or,\n * when running with local tenantId, have it be backed by a local Azure Fluid Relay instance.\n * @public\n */\nexport class AzureClient {\n\tprivate readonly documentServiceFactory: IDocumentServiceFactory;\n\tprivate readonly urlResolver: IUrlResolver;\n\tprivate readonly configProvider: IConfigProviderBase | undefined;\n\tprivate readonly connectionConfig: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\tprivate readonly logger: ITelemetryBaseLogger | undefined;\n\n\tprivate readonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: OldestSupportedClientVersion;\n\t}) => IRuntimeFactory;\n\n\t/**\n\t * Creates a new client instance using configuration parameters.\n\t * @param properties - Properties for initializing a new AzureClient instance\n\t */\n\tpublic constructor(properties: AzureClientProps) {\n\t\tthis.connectionConfig = properties.connection;\n\t\tthis.logger = properties.logger;\n\t\t// remove trailing slash from URL if any\n\t\tthis.connectionConfig.endpoint = this.connectionConfig.endpoint.replace(/\\/$/, \"\");\n\t\tthis.urlResolver = new AzureUrlResolver();\n\t\t// The local service implementation differs from the Azure Fluid Relay in blob\n\t\t// storage format. Azure Fluid Relay supports whole summary upload. Local currently does not.\n\t\tconst isRemoteConnection = isAzureRemoteConnectionConfig(this.connectionConfig);\n\t\tconst origDocumentServiceFactory: IDocumentServiceFactory =\n\t\t\tnew RouterliciousDocumentServiceFactory(this.connectionConfig.tokenProvider, {\n\t\t\t\tenableWholeSummaryUpload: isRemoteConnection,\n\t\t\t\tenableDiscovery: isRemoteConnection,\n\t\t\t});\n\n\t\tthis.documentServiceFactory = applyStorageCompression(\n\t\t\torigDocumentServiceFactory,\n\t\t\tproperties.summaryCompression,\n\t\t);\n\t\tthis.configProvider = wrapConfigProvider(properties.configProvider);\n\n\t\tthis.createContainerRuntimeFactory = (\n\t\t\tproperties as Partial<AzureClientPropsInternal>\n\t\t).createContainerRuntimeFactory;\n\t}\n\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param containerSchema - Container schema for the new container.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns New detached container instance along with associated services.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Creates a new detached container instance in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * This does not normally need to be specified explicitly.\n\t * @param containerSchema - Container schema for the new container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns New detached container instance along with associated services.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async createContainer<const TContainerSchema extends ContainerSchema>(\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\n\t\tconst container = await createDetachedContainer({\n\t\t\t...loaderProps,\n\t\t\tcodeDetails: {\n\t\t\t\tpackage: \"no-dynamic-package\",\n\t\t\t\tconfig: {},\n\t\t\t},\n\t\t});\n\n\t\tconst fluidContainer = await this.createFluidContainer<TContainerSchema>(\n\t\t\tcontainer,\n\t\t\tthis.connectionConfig,\n\t\t);\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns Existing container instance along with associated services.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\t/**\n\t * Accesses the existing container given its unique ID in the Azure Fluid Relay.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Existing container instance along with associated services.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}>;\n\tpublic async getContainer<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t\tservices: AzureContainerServices;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst container = await loadExistingContainer({\n\t\t\t...loaderProps,\n\t\t\trequest: { url: url.href },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tconst services = this.getContainerServices(container);\n\t\treturn { container: fluidContainer, services };\n\t}\n\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to\n\t * open and process documents written by this client. Choosing an older version may limit\n\t * available features and write formats. Prefer the current Fluid Framework version so the\n\t * container opts into the latest defaults.\n\t * @returns Loaded container instance at the specified version.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\toldestSupportedClient: OldestSupportedClientVersion,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\t/**\n\t * Load a specific version of a container for viewing only.\n\t * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.\n\t * (normally not explicitly specified.)\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param containerSchema - Container schema used to access data objects in the container.\n\t * @param version - Unique version of the source container in Azure Fluid Relay.\n\t * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.\n\t * @returns Loaded container instance at the specified version.\n\t * @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `\"2.0.0\"`) instead. The legacy\n\t * values `\"1\"` and `\"2\"` correspond to `\"1.0.0\"` and `\"2.0.0\"` respectively.\n\t */\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}>;\n\tpublic async viewContainerVersion<TContainerSchema extends ContainerSchema>(\n\t\tid: string,\n\t\tcontainerSchema: TContainerSchema,\n\t\tversion: AzureContainerVersion,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): Promise<{\n\t\tcontainer: IFluidContainer<TContainerSchema>;\n\t}> {\n\t\tconst loaderProps = this.getLoaderProps(containerSchema, compatibilityMode);\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\t\tconst container = await loadContainerPaused(loaderProps, {\n\t\t\turl: url.href,\n\t\t\theaders: { [LoaderHeader.version]: version.id },\n\t\t});\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\treturn { container: fluidContainer };\n\t}\n\n\t/**\n\t * Get the list of versions for specific container.\n\t * @param id - Unique ID of the source container in Azure Fluid Relay.\n\t * @param options - \"Get\" options. If options are not provided, API\n\t * will assume maxCount of versions to retrieve to be 5.\n\t * @returns Array of available container versions.\n\t */\n\tpublic async getContainerVersions(\n\t\tid: string,\n\t\toptions?: AzureGetVersionsOptions,\n\t): Promise<AzureContainerVersion[]> {\n\t\tconst url = new URL(this.connectionConfig.endpoint);\n\t\turl.searchParams.append(\"storage\", encodeURIComponent(this.connectionConfig.endpoint));\n\t\turl.searchParams.append(\n\t\t\t\"tenantId\",\n\t\t\tencodeURIComponent(getTenantId(this.connectionConfig)),\n\t\t);\n\t\turl.searchParams.append(\"containerId\", encodeURIComponent(id));\n\n\t\tconst resolvedUrl = await this.urlResolver.resolve({ url: url.href });\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\"Unable to resolved URL\");\n\t\t}\n\t\tconst documentService =\n\t\t\tawait this.documentServiceFactory.createDocumentService(resolvedUrl);\n\t\tconst storage = await documentService.connectToStorage();\n\n\t\t// External API uses null\n\t\t// eslint-disable-next-line unicorn/no-null\n\t\tconst versions = await storage.getVersions(null, options?.maxCount ?? MAX_VERSION_COUNT);\n\n\t\treturn versions.map((item) => {\n\t\t\treturn { id: item.id, date: item.date };\n\t\t});\n\t}\n\n\tprivate getContainerServices(container: IContainer): AzureContainerServices {\n\t\treturn {\n\t\t\taudience: createServiceAudience({\n\t\t\t\tcontainer,\n\t\t\t\tcreateServiceMember: createAzureAudienceMember,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate getLoaderProps(\n\t\tschema: ContainerSchema,\n\t\t// eslint-disable-next-line import-x/no-deprecated\n\t\tcompatibilityMode: OldestSupportedClientVersion | CompatibilityMode,\n\t): ILoaderProps {\n\t\tconst minVersionForCollaboration =\n\t\t\tresolveCompatibilityModeToMinVersionForCollab(compatibilityMode);\n\t\tconst runtimeFactory = this.createContainerRuntimeFactory\n\t\t\t? this.createContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t})\n\t\t\t: createDOProviderContainerRuntimeFactory({\n\t\t\t\t\tschema,\n\t\t\t\t\tminVersionForCollaboration,\n\t\t\t\t});\n\n\t\tconst load = async (): Promise<IFluidModuleWithDetails> => {\n\t\t\treturn {\n\t\t\t\tmodule: { fluidExport: runtimeFactory },\n\t\t\t\tdetails: { package: \"no-dynamic-package\", config: {} },\n\t\t\t};\n\t\t};\n\n\t\tconst codeLoader = { load };\n\t\tconst client: IClient = {\n\t\t\tdetails: {\n\t\t\t\tcapabilities: { interactive: true },\n\t\t\t},\n\t\t\tpermission: [],\n\t\t\tscopes: [],\n\t\t\tuser: { id: \"\" },\n\t\t\tmode: \"write\",\n\t\t};\n\n\t\treturn {\n\t\t\turlResolver: this.urlResolver,\n\t\t\tdocumentServiceFactory: this.documentServiceFactory,\n\t\t\tcodeLoader,\n\t\t\tlogger: this.logger,\n\t\t\toptions: { client },\n\t\t\tconfigProvider: this.configProvider,\n\t\t};\n\t}\n\n\tprivate async createFluidContainer<TContainerSchema extends ContainerSchema>(\n\t\tcontainer: IContainer,\n\t\tconnection: AzureConnectionConfig,\n\t): Promise<IFluidContainer<TContainerSchema>> {\n\t\tconst createNewRequest = createAzureCreateNewRequest(\n\t\t\tconnection.endpoint,\n\t\t\tgetTenantId(connection),\n\t\t);\n\n\t\t/**\n\t\t * See {@link FluidContainer.attach}\n\t\t */\n\t\tconst attach = async (): Promise<string> => {\n\t\t\tif (container.attachState !== AttachState.Detached) {\n\t\t\t\tthrow new Error(\"Cannot attach container. Container is not in detached state\");\n\t\t\t}\n\t\t\tawait container.attach(createNewRequest);\n\t\t\tif (container.resolvedUrl === undefined) {\n\t\t\t\tthrow new Error(\"Resolved Url not available on attached container\");\n\t\t\t}\n\t\t\treturn container.resolvedUrl.id;\n\t\t};\n\t\tconst fluidContainer = await createFluidContainer<TContainerSchema>({\n\t\t\tcontainer,\n\t\t});\n\t\tfluidContainer.attach = attach;\n\t\treturn fluidContainer;\n\t}\n\t// #endregion\n}\n"]}
|
package/lib/interfaces.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { IUser } from "@fluidframework/driver-definitions";
|
|
|
8
8
|
import type { ICompressionStorageConfig } from "@fluidframework/driver-utils";
|
|
9
9
|
import type { ContainerSchema, IMember, IServiceAudience } from "@fluidframework/fluid-static";
|
|
10
10
|
import type { ITokenProvider } from "@fluidframework/routerlicious-driver";
|
|
11
|
-
import type {
|
|
11
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
12
12
|
/**
|
|
13
13
|
* Props for initializing a new AzureClient instance
|
|
14
14
|
* @public
|
|
@@ -38,7 +38,7 @@ export interface AzureClientPropsInternal extends AzureClientProps {
|
|
|
38
38
|
*/
|
|
39
39
|
readonly createContainerRuntimeFactory?: ({ schema, minVersionForCollaboration, }: {
|
|
40
40
|
schema: ContainerSchema;
|
|
41
|
-
minVersionForCollaboration:
|
|
41
|
+
minVersionForCollaboration: OldestSupportedClientVersion;
|
|
42
42
|
}) => IRuntimeFactory;
|
|
43
43
|
}
|
|
44
44
|
/**
|
package/lib/interfaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,2BAA2B,GAAG,0BAA0B,CAAC;IAC9E;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAE9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;CAClE;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE;;OAEG;IACH,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC,EACzC,MAAM,EACN,0BAA0B,GAC1B,EAAE;QACF,MAAM,EAAE,eAAe,CAAC;QACxB,0BAA0B,EAAE,4BAA4B,CAAC;KACzD,KAAK,eAAe,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,IAAI,EAAE,yBAAyB,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,aAAa,EAAE,cAAc,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACzE;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACxE;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACtC;;;OAGG;IACH,QAAQ,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;GAQG;AAGH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,KAAK;IAChD;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC;CACtB;AAED;;;;;;;;;GASG;AAGH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,OAAO;IACpD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC"}
|
package/lib/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.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 { IRuntimeFactory } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IUser } from \"@fluidframework/driver-definitions\";\nimport type { ICompressionStorageConfig } from \"@fluidframework/driver-utils\";\nimport type { ContainerSchema, IMember, IServiceAudience } from \"@fluidframework/fluid-static\";\nimport type { ITokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport type {
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.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 { IRuntimeFactory } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tIConfigProviderBase,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type { IUser } from \"@fluidframework/driver-definitions\";\nimport type { ICompressionStorageConfig } from \"@fluidframework/driver-utils\";\nimport type { ContainerSchema, IMember, IServiceAudience } from \"@fluidframework/fluid-static\";\nimport type { ITokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport type { OldestSupportedClientVersion } from \"@fluidframework/runtime-definitions\";\n\n/**\n * Props for initializing a new AzureClient instance\n * @public\n */\nexport interface AzureClientProps {\n\t/**\n\t * Configuration for establishing a connection with the Azure Fluid Relay.\n\t */\n\treadonly connection: AzureRemoteConnectionConfig | AzureLocalConnectionConfig;\n\t/**\n\t * Optional. A logger instance to receive diagnostic messages.\n\t */\n\treadonly logger?: ITelemetryBaseLogger;\n\n\t/**\n\t * Base interface for providing configurations to control experimental features. If unsure, leave this undefined.\n\t */\n\treadonly configProvider?: IConfigProviderBase;\n\n\treadonly summaryCompression?: boolean | ICompressionStorageConfig;\n}\n\n/**\n * Internal only {@link AzureClientProps}.\n * @internal\n */\nexport interface AzureClientPropsInternal extends AzureClientProps {\n\t/**\n\t * Optional override for the container runtime factory used by the client.\n\t */\n\treadonly createContainerRuntimeFactory?: ({\n\t\tschema,\n\t\tminVersionForCollaboration,\n\t}: {\n\t\tschema: ContainerSchema;\n\t\tminVersionForCollaboration: OldestSupportedClientVersion;\n\t}) => IRuntimeFactory;\n}\n\n/**\n * Container version metadata.\n * @public\n */\nexport interface AzureContainerVersion {\n\t/**\n\t * Version ID\n\t */\n\tid: string;\n\n\t/**\n\t * Time when version was generated.\n\t * ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ\n\t */\n\tdate?: string;\n}\n\n/**\n * Options for \"Get Container Versions\" API.\n * @public\n */\nexport interface AzureGetVersionsOptions {\n\t/**\n\t * Max number of versions\n\t */\n\tmaxCount: number;\n}\n\n/**\n * The type of connection.\n *\n * - \"local\" for local connections to a Fluid relay instance running on the localhost\n *\n * - \"remote\" for client connections to the Azure Fluid Relay service\n * @public\n */\nexport type AzureConnectionConfigType = \"local\" | \"remote\";\n\n/**\n * Parameters for establishing a connection with the Azure Fluid Relay.\n * @public\n */\nexport interface AzureConnectionConfig {\n\t/**\n\t * The type of connection. Whether we're connecting to a remote Fluid relay server or a local instance.\n\t */\n\ttype: AzureConnectionConfigType;\n\t/**\n\t * URI to the Azure Fluid Relay service discovery endpoint.\n\t */\n\tendpoint: string;\n\t/**\n\t * Instance that provides Azure Fluid Relay endpoint tokens.\n\t */\n\ttokenProvider: ITokenProvider;\n}\n\n/**\n * Parameters for establishing a remote connection with the Azure Fluid Relay.\n * @public\n */\nexport interface AzureRemoteConnectionConfig extends AzureConnectionConfig {\n\t/**\n\t * The type of connection. Set to a remote connection.\n\t */\n\ttype: \"remote\";\n\t/**\n\t * Unique tenant identifier.\n\t */\n\ttenantId: string;\n}\n\n/**\n * Parameters for establishing a local connection with a local instance of the Azure Fluid Relay.\n * @public\n */\nexport interface AzureLocalConnectionConfig extends AzureConnectionConfig {\n\t/**\n\t * The type of connection. Set to a remote connection.\n\t */\n\ttype: \"local\";\n}\n\n/**\n * Holds the functionality specifically tied to the Azure Fluid Relay, and how the data stored in\n * the FluidContainer is persisted in the backend and consumed by users.\n *\n * @remarks\n *\n * Returned by the {@link AzureClient} alongside a {@link @fluidframework/fluid-static#FluidContainer}.\n *\n * Any functionality regarding how the data is handled within the FluidContainer itself, i.e. which data objects\n * or DDSes to use, will not be included here but rather on the FluidContainer class itself.\n * @public\n */\nexport interface AzureContainerServices {\n\t/**\n\t * Provides an object that can be used to get the users that are present in this Fluid session and\n\t * listeners for when the roster has any changes from users joining/leaving the session\n\t */\n\taudience: IAzureAudience;\n}\n\n/**\n * Since Azure provides user names for all of its members, we extend the\n * {@link @fluidframework/protocol-definitions#IUser} interface to include this service-specific value.\n *\n * @typeParam T - See {@link AzureUser.additionalDetails}.\n * Note: must be JSON-serializable.\n * Passing a non-serializable object (e.g. a `class`) will result in undefined behavior.\n * @internal\n */\n// TODO: this should be updated to use something other than `any` (unknown)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AzureUser<T = any> extends IUser {\n\t/**\n\t * {@inheritDoc AzureMember.name}\n\t *\n\t */\n\tname: string;\n\n\t/**\n\t * {@inheritDoc AzureMember.additionalDetails}\n\t */\n\tadditionalDetails?: T;\n}\n\n/**\n * Since Azure provides user names for all of its members, we extend the\n * {@link @fluidframework/fluid-static#IMember} interface to include this service-specific value.\n * It will be returned for all audience members connected to Azure.\n *\n * @typeParam T - See {@link AzureMember.additionalDetails}.\n * Note: must be JSON-serializable.\n * Passing a non-serializable object (e.g. a `class`) will result in undefined behavior.\n * @public\n */\n// TODO: this should be updated to use something other than `any` (unknown)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AzureMember<T = any> extends IMember {\n\t/**\n\t * The user's name\n\t */\n\tname: string;\n\n\t/**\n\t * Custom, app-specific user information\n\t */\n\tadditionalDetails?: T;\n}\n\n/**\n * Audience object for Azure Fluid Relay containers\n * @public\n */\nexport type IAzureAudience = IServiceAudience<AzureMember>;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/azure-client",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.116.0",
|
|
4
4
|
"description": "A tool to enable creation and loading of Fluid containers using the Azure Fluid Relay service",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -47,29 +47,29 @@
|
|
|
47
47
|
"main": "lib/index.js",
|
|
48
48
|
"types": "lib/public.d.ts",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@fluidframework/container-definitions": "~2.
|
|
51
|
-
"@fluidframework/container-loader": "~2.
|
|
52
|
-
"@fluidframework/core-interfaces": "~2.
|
|
53
|
-
"@fluidframework/driver-definitions": "~2.
|
|
54
|
-
"@fluidframework/driver-utils": "~2.
|
|
55
|
-
"@fluidframework/fluid-static": "~2.
|
|
56
|
-
"@fluidframework/routerlicious-driver": "~2.
|
|
57
|
-
"@fluidframework/runtime-definitions": "~2.
|
|
58
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
50
|
+
"@fluidframework/container-definitions": "~2.116.0",
|
|
51
|
+
"@fluidframework/container-loader": "~2.116.0",
|
|
52
|
+
"@fluidframework/core-interfaces": "~2.116.0",
|
|
53
|
+
"@fluidframework/driver-definitions": "~2.116.0",
|
|
54
|
+
"@fluidframework/driver-utils": "~2.116.0",
|
|
55
|
+
"@fluidframework/fluid-static": "~2.116.0",
|
|
56
|
+
"@fluidframework/routerlicious-driver": "~2.116.0",
|
|
57
|
+
"@fluidframework/runtime-definitions": "~2.116.0",
|
|
58
|
+
"@fluidframework/telemetry-utils": "~2.116.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@arethetypeswrong/cli": "^0.18.
|
|
61
|
+
"@arethetypeswrong/cli": "^0.18.5",
|
|
62
62
|
"@biomejs/biome": "~2.4.5",
|
|
63
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
64
|
-
"@fluid-tools/build-cli": "^0.
|
|
65
|
-
"@fluidframework/azure-client-previous": "npm:@fluidframework/azure-client@2.
|
|
66
|
-
"@fluidframework/azure-local-service": "~2.
|
|
63
|
+
"@fluid-internal/mocha-test-setup": "~2.116.0",
|
|
64
|
+
"@fluid-tools/build-cli": "^0.67.0",
|
|
65
|
+
"@fluidframework/azure-client-previous": "npm:@fluidframework/azure-client@2.114.0",
|
|
66
|
+
"@fluidframework/azure-local-service": "~2.116.0",
|
|
67
67
|
"@fluidframework/build-common": "^2.0.3",
|
|
68
|
-
"@fluidframework/build-tools": "^0.
|
|
69
|
-
"@fluidframework/container-runtime": "~2.
|
|
70
|
-
"@fluidframework/eslint-config-fluid": "^
|
|
71
|
-
"@fluidframework/test-runtime-utils": "~2.
|
|
72
|
-
"@fluidframework/test-utils": "~2.
|
|
68
|
+
"@fluidframework/build-tools": "^0.67.0",
|
|
69
|
+
"@fluidframework/container-runtime": "~2.116.0",
|
|
70
|
+
"@fluidframework/eslint-config-fluid": "^14.0.0",
|
|
71
|
+
"@fluidframework/test-runtime-utils": "~2.116.0",
|
|
72
|
+
"@fluidframework/test-utils": "~2.116.0",
|
|
73
73
|
"@microsoft/api-extractor": "7.58.1",
|
|
74
74
|
"@types/mocha": "^10.0.10",
|
|
75
75
|
"@types/node": "~22.19.17",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"cross-env": "^10.1.0",
|
|
79
79
|
"eslint": "~9.39.1",
|
|
80
80
|
"eslint-config-prettier": "~10.1.8",
|
|
81
|
-
"fluid-framework": "~2.
|
|
81
|
+
"fluid-framework": "~2.116.0",
|
|
82
82
|
"jiti": "^2.6.1",
|
|
83
83
|
"mocha": "^11.7.5",
|
|
84
84
|
"rimraf": "^6.1.3",
|
package/src/AzureClient.ts
CHANGED
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
resolveCompatibilityModeToMinVersionForCollab,
|
|
40
40
|
} from "@fluidframework/fluid-static/internal";
|
|
41
41
|
import { RouterliciousDocumentServiceFactory } from "@fluidframework/routerlicious-driver/internal";
|
|
42
|
-
import type {
|
|
42
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
43
43
|
import { wrapConfigProviderWithDefaults } from "@fluidframework/telemetry-utils/internal";
|
|
44
44
|
|
|
45
45
|
import { createAzureAudienceMember } from "./AzureAudience.js";
|
|
@@ -103,7 +103,7 @@ export class AzureClient {
|
|
|
103
103
|
minVersionForCollaboration,
|
|
104
104
|
}: {
|
|
105
105
|
schema: ContainerSchema;
|
|
106
|
-
minVersionForCollaboration:
|
|
106
|
+
minVersionForCollaboration: OldestSupportedClientVersion;
|
|
107
107
|
}) => IRuntimeFactory;
|
|
108
108
|
|
|
109
109
|
/**
|
|
@@ -141,13 +141,15 @@ export class AzureClient {
|
|
|
141
141
|
* @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container.
|
|
142
142
|
* (normally not explicitly specified.)
|
|
143
143
|
* @param containerSchema - Container schema for the new container.
|
|
144
|
-
* @param
|
|
145
|
-
*
|
|
144
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
145
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
146
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
147
|
+
* container opts into the latest defaults.
|
|
146
148
|
* @returns New detached container instance along with associated services.
|
|
147
149
|
*/
|
|
148
150
|
public async createContainer<const TContainerSchema extends ContainerSchema>(
|
|
149
151
|
containerSchema: TContainerSchema,
|
|
150
|
-
|
|
152
|
+
oldestSupportedClient: OldestSupportedClientVersion,
|
|
151
153
|
): Promise<{
|
|
152
154
|
container: IFluidContainer<TContainerSchema>;
|
|
153
155
|
services: AzureContainerServices;
|
|
@@ -159,7 +161,7 @@ export class AzureClient {
|
|
|
159
161
|
* @param containerSchema - Container schema for the new container.
|
|
160
162
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
161
163
|
* @returns New detached container instance along with associated services.
|
|
162
|
-
* @deprecated Pass
|
|
164
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
163
165
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
164
166
|
*/
|
|
165
167
|
public async createContainer<const TContainerSchema extends ContainerSchema>(
|
|
@@ -173,7 +175,7 @@ export class AzureClient {
|
|
|
173
175
|
public async createContainer<const TContainerSchema extends ContainerSchema>(
|
|
174
176
|
containerSchema: TContainerSchema,
|
|
175
177
|
// eslint-disable-next-line import-x/no-deprecated
|
|
176
|
-
compatibilityMode:
|
|
178
|
+
compatibilityMode: OldestSupportedClientVersion | CompatibilityMode,
|
|
177
179
|
): Promise<{
|
|
178
180
|
container: IFluidContainer<TContainerSchema>;
|
|
179
181
|
services: AzureContainerServices;
|
|
@@ -202,14 +204,16 @@ export class AzureClient {
|
|
|
202
204
|
* (normally not explicitly specified.)
|
|
203
205
|
* @param id - Unique ID of the container in Azure Fluid Relay.
|
|
204
206
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
205
|
-
* @param
|
|
206
|
-
*
|
|
207
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
208
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
209
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
210
|
+
* container opts into the latest defaults.
|
|
207
211
|
* @returns Existing container instance along with associated services.
|
|
208
212
|
*/
|
|
209
213
|
public async getContainer<TContainerSchema extends ContainerSchema>(
|
|
210
214
|
id: string,
|
|
211
215
|
containerSchema: TContainerSchema,
|
|
212
|
-
|
|
216
|
+
oldestSupportedClient: OldestSupportedClientVersion,
|
|
213
217
|
): Promise<{
|
|
214
218
|
container: IFluidContainer<TContainerSchema>;
|
|
215
219
|
services: AzureContainerServices;
|
|
@@ -222,7 +226,7 @@ export class AzureClient {
|
|
|
222
226
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
223
227
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
224
228
|
* @returns Existing container instance along with associated services.
|
|
225
|
-
* @deprecated Pass
|
|
229
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
226
230
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
227
231
|
*/
|
|
228
232
|
public async getContainer<TContainerSchema extends ContainerSchema>(
|
|
@@ -238,7 +242,7 @@ export class AzureClient {
|
|
|
238
242
|
id: string,
|
|
239
243
|
containerSchema: TContainerSchema,
|
|
240
244
|
// eslint-disable-next-line import-x/no-deprecated
|
|
241
|
-
compatibilityMode:
|
|
245
|
+
compatibilityMode: OldestSupportedClientVersion | CompatibilityMode,
|
|
242
246
|
): Promise<{
|
|
243
247
|
container: IFluidContainer<TContainerSchema>;
|
|
244
248
|
services: AzureContainerServices;
|
|
@@ -270,15 +274,17 @@ export class AzureClient {
|
|
|
270
274
|
* @param id - Unique ID of the source container in Azure Fluid Relay.
|
|
271
275
|
* @param containerSchema - Container schema used to access data objects in the container.
|
|
272
276
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
273
|
-
* @param
|
|
274
|
-
*
|
|
277
|
+
* @param oldestSupportedClient - Oldest Fluid Framework client version that must be able to
|
|
278
|
+
* open and process documents written by this client. Choosing an older version may limit
|
|
279
|
+
* available features and write formats. Prefer the current Fluid Framework version so the
|
|
280
|
+
* container opts into the latest defaults.
|
|
275
281
|
* @returns Loaded container instance at the specified version.
|
|
276
282
|
*/
|
|
277
283
|
public async viewContainerVersion<TContainerSchema extends ContainerSchema>(
|
|
278
284
|
id: string,
|
|
279
285
|
containerSchema: TContainerSchema,
|
|
280
286
|
version: AzureContainerVersion,
|
|
281
|
-
|
|
287
|
+
oldestSupportedClient: OldestSupportedClientVersion,
|
|
282
288
|
): Promise<{
|
|
283
289
|
container: IFluidContainer<TContainerSchema>;
|
|
284
290
|
}>;
|
|
@@ -291,7 +297,7 @@ export class AzureClient {
|
|
|
291
297
|
* @param version - Unique version of the source container in Azure Fluid Relay.
|
|
292
298
|
* @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value.
|
|
293
299
|
* @returns Loaded container instance at the specified version.
|
|
294
|
-
* @deprecated Pass
|
|
300
|
+
* @deprecated Pass an `OldestSupportedClientVersion` SemVer string (e.g. `"2.0.0"`) instead. The legacy
|
|
295
301
|
* values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively.
|
|
296
302
|
*/
|
|
297
303
|
public async viewContainerVersion<TContainerSchema extends ContainerSchema>(
|
|
@@ -308,7 +314,7 @@ export class AzureClient {
|
|
|
308
314
|
containerSchema: TContainerSchema,
|
|
309
315
|
version: AzureContainerVersion,
|
|
310
316
|
// eslint-disable-next-line import-x/no-deprecated
|
|
311
|
-
compatibilityMode:
|
|
317
|
+
compatibilityMode: OldestSupportedClientVersion | CompatibilityMode,
|
|
312
318
|
): Promise<{
|
|
313
319
|
container: IFluidContainer<TContainerSchema>;
|
|
314
320
|
}> {
|
|
@@ -378,7 +384,7 @@ export class AzureClient {
|
|
|
378
384
|
private getLoaderProps(
|
|
379
385
|
schema: ContainerSchema,
|
|
380
386
|
// eslint-disable-next-line import-x/no-deprecated
|
|
381
|
-
compatibilityMode:
|
|
387
|
+
compatibilityMode: OldestSupportedClientVersion | CompatibilityMode,
|
|
382
388
|
): ILoaderProps {
|
|
383
389
|
const minVersionForCollaboration =
|
|
384
390
|
resolveCompatibilityModeToMinVersionForCollab(compatibilityMode);
|
package/src/interfaces.ts
CHANGED
|
@@ -12,7 +12,7 @@ import type { IUser } from "@fluidframework/driver-definitions";
|
|
|
12
12
|
import type { ICompressionStorageConfig } from "@fluidframework/driver-utils";
|
|
13
13
|
import type { ContainerSchema, IMember, IServiceAudience } from "@fluidframework/fluid-static";
|
|
14
14
|
import type { ITokenProvider } from "@fluidframework/routerlicious-driver";
|
|
15
|
-
import type {
|
|
15
|
+
import type { OldestSupportedClientVersion } from "@fluidframework/runtime-definitions";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Props for initializing a new AzureClient instance
|
|
@@ -49,7 +49,7 @@ export interface AzureClientPropsInternal extends AzureClientProps {
|
|
|
49
49
|
minVersionForCollaboration,
|
|
50
50
|
}: {
|
|
51
51
|
schema: ContainerSchema;
|
|
52
|
-
minVersionForCollaboration:
|
|
52
|
+
minVersionForCollaboration: OldestSupportedClientVersion;
|
|
53
53
|
}) => IRuntimeFactory;
|
|
54
54
|
}
|
|
55
55
|
|