@fluid-internal/test-driver-definitions 2.0.0-dev-rc.3.0.0.253463

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/.eslintrc.cjs ADDED
@@ -0,0 +1,21 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ module.exports = {
7
+ extends: [require.resolve("@fluidframework/eslint-config-fluid"), "prettier"],
8
+ parserOptions: {
9
+ project: ["./tsconfig.json"],
10
+ },
11
+ overrides: [
12
+ {
13
+ // Rules only for test files
14
+ files: ["*.spec.ts", "src/test/**"],
15
+ rules: {
16
+ // This rule causes linting to crash with a "Error: Circularity detected while resolving configuration: /common/build/build-common/tsconfig.base.json"
17
+ "import/namespace": "off",
18
+ },
19
+ },
20
+ ],
21
+ };
package/CHANGELOG.md ADDED
@@ -0,0 +1,155 @@
1
+ # @fluid-internal/test-driver-definitions
2
+
3
+ ## 2.0.0-rc.2.0.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.0.0-rc.1.0.0
8
+
9
+ ### Minor Changes
10
+
11
+ - Updated server dependencies ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
12
+
13
+ The following Fluid server dependencies have been updated to the latest version, 3.0.0. [See the full changelog.](https://github.com/microsoft/FluidFramework/releases/tag/server_v3.0.0)
14
+
15
+ - @fluidframework/gitresources
16
+ - @fluidframework/server-kafka-orderer
17
+ - @fluidframework/server-lambdas
18
+ - @fluidframework/server-lambdas-driver
19
+ - @fluidframework/server-local-server
20
+ - @fluidframework/server-memory-orderer
21
+ - @fluidframework/protocol-base
22
+ - @fluidframework/server-routerlicious
23
+ - @fluidframework/server-routerlicious-base
24
+ - @fluidframework/server-services
25
+ - @fluidframework/server-services-client
26
+ - @fluidframework/server-services-core
27
+ - @fluidframework/server-services-ordering-kafkanode
28
+ - @fluidframework/server-services-ordering-rdkafka
29
+ - @fluidframework/server-services-ordering-zookeeper
30
+ - @fluidframework/server-services-shared
31
+ - @fluidframework/server-services-telemetry
32
+ - @fluidframework/server-services-utils
33
+ - @fluidframework/server-test-utils
34
+ - tinylicious
35
+
36
+ - Updated @fluidframework/protocol-definitions ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
37
+
38
+ The @fluidframework/protocol-definitions dependency has been upgraded to v3.1.0. [See the full
39
+ changelog.](https://github.com/microsoft/FluidFramework/blob/main/common/lib/protocol-definitions/CHANGELOG.md#310)
40
+
41
+ ## 2.0.0-internal.8.0.0
42
+
43
+ Dependency updates only.
44
+
45
+ ## 2.0.0-internal.7.4.0
46
+
47
+ Dependency updates only.
48
+
49
+ ## 2.0.0-internal.7.3.0
50
+
51
+ Dependency updates only.
52
+
53
+ ## 2.0.0-internal.7.2.0
54
+
55
+ Dependency updates only.
56
+
57
+ ## 2.0.0-internal.7.1.0
58
+
59
+ Dependency updates only.
60
+
61
+ ## 2.0.0-internal.7.0.0
62
+
63
+ ### Major Changes
64
+
65
+ - Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
66
+
67
+ This included the following changes from the protocol-definitions release:
68
+
69
+ - Updating signal interfaces for some planned improvements. The intention is split the interface between signals
70
+ submitted by clients to the server and the resulting signals sent from the server to clients.
71
+ - A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has
72
+ been added, which will be the typing for signals sent from the client to the server. Both extend a new
73
+ ISignalMessageBase interface that contains common members.
74
+ - The @fluidframework/common-definitions package dependency has been updated to version 1.0.0.
75
+
76
+ - Server upgrade: dependencies on Fluid server packages updated to 2.0.1 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
77
+
78
+ Dependencies on the following Fluid server package have been updated to version 2.0.1:
79
+
80
+ - @fluidframework/gitresources: 2.0.1
81
+ - @fluidframework/server-kafka-orderer: 2.0.1
82
+ - @fluidframework/server-lambdas: 2.0.1
83
+ - @fluidframework/server-lambdas-driver: 2.0.1
84
+ - @fluidframework/server-local-server: 2.0.1
85
+ - @fluidframework/server-memory-orderer: 2.0.1
86
+ - @fluidframework/protocol-base: 2.0.1
87
+ - @fluidframework/server-routerlicious: 2.0.1
88
+ - @fluidframework/server-routerlicious-base: 2.0.1
89
+ - @fluidframework/server-services: 2.0.1
90
+ - @fluidframework/server-services-client: 2.0.1
91
+ - @fluidframework/server-services-core: 2.0.1
92
+ - @fluidframework/server-services-ordering-kafkanode: 2.0.1
93
+ - @fluidframework/server-services-ordering-rdkafka: 2.0.1
94
+ - @fluidframework/server-services-ordering-zookeeper: 2.0.1
95
+ - @fluidframework/server-services-shared: 2.0.1
96
+ - @fluidframework/server-services-telemetry: 2.0.1
97
+ - @fluidframework/server-services-utils: 2.0.1
98
+ - @fluidframework/server-test-utils: 2.0.1
99
+ - tinylicious: 2.0.1
100
+
101
+ - Minimum TypeScript version now 5.1.6 [871b3493dd](https://github.com/microsoft/FluidFramework/commits/871b3493dd0d7ea3a89be64998ceb6cb9021a04e)
102
+
103
+ The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
104
+
105
+ ## 2.0.0-internal.6.4.0
106
+
107
+ Dependency updates only.
108
+
109
+ ## 2.0.0-internal.6.3.0
110
+
111
+ Dependency updates only.
112
+
113
+ ## 2.0.0-internal.6.2.0
114
+
115
+ Dependency updates only.
116
+
117
+ ## 2.0.0-internal.6.1.0
118
+
119
+ Dependency updates only.
120
+
121
+ ## 2.0.0-internal.6.0.0
122
+
123
+ ### Major Changes
124
+
125
+ - Upgraded typescript transpilation target to ES2020 [8abce8cdb4](https://github.com/microsoft/FluidFramework/commits/8abce8cdb4e2832fb6405fb44e393bef03d5648a)
126
+
127
+ Upgraded typescript transpilation target to ES2020. This is done in order to decrease the bundle sizes of Fluid Framework packages. This has provided size improvements across the board for ex. Loader, Driver, Runtime etc. Reduced bundle sizes helps to load lesser code in apps and hence also helps to improve the perf.If any app wants to target any older versions of browsers with which this target version is not compatible, then they can use packages like babel to transpile to a older target.
128
+
129
+ ## 2.0.0-internal.5.4.0
130
+
131
+ Dependency updates only.
132
+
133
+ ## 2.0.0-internal.5.3.0
134
+
135
+ Dependency updates only.
136
+
137
+ ## 2.0.0-internal.5.2.0
138
+
139
+ Dependency updates only.
140
+
141
+ ## 2.0.0-internal.5.1.0
142
+
143
+ Dependency updates only.
144
+
145
+ ## 2.0.0-internal.5.0.0
146
+
147
+ Dependency updates only.
148
+
149
+ ## 2.0.0-internal.4.4.0
150
+
151
+ Dependency updates only.
152
+
153
+ ## 2.0.0-internal.4.1.0
154
+
155
+ Dependency updates only.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) Microsoft Corporation and contributors. All rights reserved.
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @fluid-internal/test-driver-definitions
2
+
3
+ Definitions for test drivers. Test should only take a dependency on these definitions, and not the implementations provided in the `@fluid-private/test-drivers` package. At runtime the environment should provide an implementation for the global getFluidTestDriver driver function, which tests can then use to access the implementation.
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "../../../common/build/build-common/api-extractor-lint.esm.primary.json"
4
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "../../../common/build/build-common/api-extractor-base.esm.primary.json",
4
+ "dtsRollup": {
5
+ // all APIs are internal - no rollup needed/used
6
+ "enabled": false
7
+ }
8
+ }
@@ -0,0 +1,45 @@
1
+ ## API Report File for "@fluid-internal/test-driver-definitions"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ import type { IDocumentServiceFactory } from '@fluidframework/driver-definitions/internal';
8
+ import type { IRequest } from '@fluidframework/core-interfaces';
9
+ import type { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
10
+ import type { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
11
+ import type { IUrlResolver } from '@fluidframework/driver-definitions/internal';
12
+
13
+ // @internal
14
+ export type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint;
15
+
16
+ // @internal
17
+ export interface ITelemetryBufferedLogger extends ITelemetryBaseLogger {
18
+ flush(): Promise<void>;
19
+ }
20
+
21
+ // @internal
22
+ export interface ITestDriver {
23
+ createContainerUrl(testId: string, containerUrl?: IResolvedUrl): Promise<string>;
24
+ createCreateNewRequest(testId?: string): IRequest;
25
+ createDocumentServiceFactory(): IDocumentServiceFactory;
26
+ createUrlResolver(): IUrlResolver;
27
+ readonly endpointName?: string;
28
+ readonly tenantName?: string;
29
+ readonly type: TestDriverTypes;
30
+ readonly userIndex?: number;
31
+ readonly version: string;
32
+ }
33
+
34
+ // @internal
35
+ export type OdspEndpoint = "odsp" | "odsp-df";
36
+
37
+ // @internal
38
+ export type RouterliciousEndpoint = "frs" | "frsCanary" | "r11s" | "docker";
39
+
40
+ // @internal
41
+ export type TestDriverTypes = "tinylicious" | "t9s" | "routerlicious" | "r11s" | "odsp" | "local";
42
+
43
+ // (No @packageDocumentation comment for this package)
44
+
45
+ ```
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { ITelemetryBufferedLogger } from "./interfaces.js";
6
+ declare global {
7
+ /**
8
+ * This function may be provided by the environment, like a mocha test hook or dynamic import
9
+ */
10
+ export const getTestLogger: (() => ITelemetryBufferedLogger) | undefined;
11
+ }
12
+ export type { DriverEndpoint, ITelemetryBufferedLogger, ITestDriver, OdspEndpoint, RouterliciousEndpoint, TestDriverTypes, } from "./interfaces.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,CAAC,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,MAAM,wBAAwB,CAAC,GAAG,SAAS,CAAC;CACzE;AAED,YAAY,EACX,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,eAAe,GACf,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { IRequest, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
6
+ import type { IDocumentServiceFactory, IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions/internal";
7
+ /**
8
+ * Types of test drivers.
9
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
10
+ * @internal
11
+ */
12
+ export type TestDriverTypes = "tinylicious" | "t9s" | "routerlicious" | "r11s" | "odsp" | "local";
13
+ /**
14
+ * Types of Routerlicious endpoints.
15
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
16
+ * @internal
17
+ */
18
+ export type RouterliciousEndpoint = "frs" | "frsCanary" | "r11s" | "docker";
19
+ /**
20
+ * Types of Odsp endpoints.
21
+ * @internal
22
+ */
23
+ export type OdspEndpoint = "odsp" | "odsp-df";
24
+ /**
25
+ * Types of Driver endpoints.
26
+ * @internal
27
+ */
28
+ export type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint;
29
+ /**
30
+ * Base interface for test drivers.
31
+ * @internal
32
+ */
33
+ export interface ITestDriver {
34
+ /**
35
+ * The type of server the test driver executes against
36
+ */
37
+ readonly type: TestDriverTypes;
38
+ /**
39
+ * Specific endpoint name if there are any
40
+ */
41
+ readonly endpointName?: string;
42
+ /**
43
+ * Tenant name if there are any
44
+ */
45
+ readonly tenantName?: string;
46
+ /**
47
+ * User index if there are any
48
+ */
49
+ readonly userIndex?: number;
50
+ /**
51
+ * The semantic version of the test drivers package.
52
+ * In general this version will match that of the client
53
+ * interfaces and implementation exposed and used by the test driver.
54
+ */
55
+ readonly version: string;
56
+ /**
57
+ * Creates a document service factory targetting the server that corresponds to this driver.
58
+ */
59
+ createDocumentServiceFactory(): IDocumentServiceFactory;
60
+ /**
61
+ * Creates a url resolver targetting the server that corresponds to this driver.
62
+ */
63
+ createUrlResolver(): IUrlResolver;
64
+ /**
65
+ * Creates a 'create new' request appropriate for the server that corresponds to this driver.
66
+ *
67
+ * @remarks
68
+ * Repeated calls with the same test id will return the same request.
69
+ * The test id may not map directly to any specific Fluid Framework concept.
70
+ * If you need more control you should disambiguate the driver based on its
71
+ * type; this should only be done it absolutely necessary for complex scenarios
72
+ * as the test may not work against all supported servers if done.
73
+ *
74
+ * @param testId - If passed in, implementations should use it in the generated request, which should
75
+ * also be consistent every time for a given value of this parameter.
76
+ */
77
+ createCreateNewRequest(testId?: string): IRequest;
78
+ /**
79
+ * Creates a container url that can be resolved by the url resolver for this driver.
80
+ *
81
+ * @remarks
82
+ * Repeated calls with the same test id will return the same container url.
83
+ * The test id may not map directly to any specific Fluid Framework concept.
84
+ * If you need more control you should disambiguate the driver based on its
85
+ * type; this should only be done if absolutely necessary for complex scenarios
86
+ * as the test may not work against all supported servers if done.
87
+ *
88
+ * @param testId - If passed in, implementations should use it in generated url, which should
89
+ * also be consistent every time for a given value of this parameter.
90
+ * @param containerUrl - Implementations can use this to help disambiguate the container.
91
+ * E.g. if passed a value from a container created earlier, the driver can us it as a hint
92
+ * when resolving the container URL.
93
+ */
94
+ createContainerUrl(testId: string, containerUrl?: IResolvedUrl): Promise<string>;
95
+ }
96
+ /**
97
+ * Extension of ITelemetryBaseLogger with support for flushing
98
+ * all buffered logs that have not yet been fully processed (e.g. uploaded)
99
+ * @internal
100
+ */
101
+ export interface ITelemetryBufferedLogger extends ITelemetryBaseLogger {
102
+ /**
103
+ * Flush any underlying buffer of events that have been sent so far
104
+ * but not yet fully processed - e.g. uploaded to a log ingestion service.
105
+ */
106
+ flush(): Promise<void>;
107
+ }
108
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EACX,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,KAAK,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElG;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,4BAA4B,IAAI,uBAAuB,CAAC;IAExD;;OAEG;IACH,iBAAiB,IAAI,YAAY,CAAC;IAElC;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAElD;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjF;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACrE;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { ITelemetryBufferedLogger } from "./interfaces.js";
6
+ declare global {
7
+ /**
8
+ * This function may be provided by the environment, like a mocha test hook or dynamic import
9
+ */
10
+ export const getTestLogger: (() => ITelemetryBufferedLogger) | undefined;
11
+ }
12
+ export type { DriverEndpoint, ITelemetryBufferedLogger, ITestDriver, OdspEndpoint, RouterliciousEndpoint, TestDriverTypes, } from "./interfaces.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,CAAC,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,MAAM,wBAAwB,CAAC,GAAG,SAAS,CAAC;CACzE;AAED,YAAY,EACX,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,eAAe,GACf,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { IRequest, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
6
+ import type { IDocumentServiceFactory, IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions/internal";
7
+ /**
8
+ * Types of test drivers.
9
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
10
+ * @internal
11
+ */
12
+ export type TestDriverTypes = "tinylicious" | "t9s" | "routerlicious" | "r11s" | "odsp" | "local";
13
+ /**
14
+ * Types of Routerlicious endpoints.
15
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
16
+ * @internal
17
+ */
18
+ export type RouterliciousEndpoint = "frs" | "frsCanary" | "r11s" | "docker";
19
+ /**
20
+ * Types of Odsp endpoints.
21
+ * @internal
22
+ */
23
+ export type OdspEndpoint = "odsp" | "odsp-df";
24
+ /**
25
+ * Types of Driver endpoints.
26
+ * @internal
27
+ */
28
+ export type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint;
29
+ /**
30
+ * Base interface for test drivers.
31
+ * @internal
32
+ */
33
+ export interface ITestDriver {
34
+ /**
35
+ * The type of server the test driver executes against
36
+ */
37
+ readonly type: TestDriverTypes;
38
+ /**
39
+ * Specific endpoint name if there are any
40
+ */
41
+ readonly endpointName?: string;
42
+ /**
43
+ * Tenant name if there are any
44
+ */
45
+ readonly tenantName?: string;
46
+ /**
47
+ * User index if there are any
48
+ */
49
+ readonly userIndex?: number;
50
+ /**
51
+ * The semantic version of the test drivers package.
52
+ * In general this version will match that of the client
53
+ * interfaces and implementation exposed and used by the test driver.
54
+ */
55
+ readonly version: string;
56
+ /**
57
+ * Creates a document service factory targetting the server that corresponds to this driver.
58
+ */
59
+ createDocumentServiceFactory(): IDocumentServiceFactory;
60
+ /**
61
+ * Creates a url resolver targetting the server that corresponds to this driver.
62
+ */
63
+ createUrlResolver(): IUrlResolver;
64
+ /**
65
+ * Creates a 'create new' request appropriate for the server that corresponds to this driver.
66
+ *
67
+ * @remarks
68
+ * Repeated calls with the same test id will return the same request.
69
+ * The test id may not map directly to any specific Fluid Framework concept.
70
+ * If you need more control you should disambiguate the driver based on its
71
+ * type; this should only be done it absolutely necessary for complex scenarios
72
+ * as the test may not work against all supported servers if done.
73
+ *
74
+ * @param testId - If passed in, implementations should use it in the generated request, which should
75
+ * also be consistent every time for a given value of this parameter.
76
+ */
77
+ createCreateNewRequest(testId?: string): IRequest;
78
+ /**
79
+ * Creates a container url that can be resolved by the url resolver for this driver.
80
+ *
81
+ * @remarks
82
+ * Repeated calls with the same test id will return the same container url.
83
+ * The test id may not map directly to any specific Fluid Framework concept.
84
+ * If you need more control you should disambiguate the driver based on its
85
+ * type; this should only be done if absolutely necessary for complex scenarios
86
+ * as the test may not work against all supported servers if done.
87
+ *
88
+ * @param testId - If passed in, implementations should use it in generated url, which should
89
+ * also be consistent every time for a given value of this parameter.
90
+ * @param containerUrl - Implementations can use this to help disambiguate the container.
91
+ * E.g. if passed a value from a container created earlier, the driver can us it as a hint
92
+ * when resolving the container URL.
93
+ */
94
+ createContainerUrl(testId: string, containerUrl?: IResolvedUrl): Promise<string>;
95
+ }
96
+ /**
97
+ * Extension of ITelemetryBaseLogger with support for flushing
98
+ * all buffered logs that have not yet been fully processed (e.g. uploaded)
99
+ * @internal
100
+ */
101
+ export interface ITelemetryBufferedLogger extends ITelemetryBaseLogger {
102
+ /**
103
+ * Flush any underlying buffer of events that have been sent so far
104
+ * but not yet fully processed - e.g. uploaded to a log ingestion service.
105
+ */
106
+ flush(): Promise<void>;
107
+ }
108
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EACX,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,KAAK,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElG;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,4BAA4B,IAAI,uBAAuB,CAAC;IAExD;;OAEG;IACH,iBAAiB,IAAI,YAAY,CAAC;IAElC;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAElD;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjF;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACrE;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
@@ -0,0 +1,11 @@
1
+ // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
+ // It should be published with your NPM package. It should not be tracked by Git.
3
+ {
4
+ "tsdocVersion": "0.12",
5
+ "toolPackages": [
6
+ {
7
+ "packageName": "@microsoft/api-extractor",
8
+ "packageVersion": "7.42.3"
9
+ }
10
+ ]
11
+ }
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@fluid-internal/test-driver-definitions",
3
+ "version": "2.0.0-dev-rc.3.0.0.253463",
4
+ "description": "A driver abstraction and implementations for testing against server",
5
+ "homepage": "https://fluidframework.com",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/microsoft/FluidFramework.git",
9
+ "directory": "packages/test/test-driver-definitions"
10
+ },
11
+ "license": "MIT",
12
+ "author": "Microsoft and contributors",
13
+ "sideEffects": false,
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "import": {
18
+ "types": "./lib/index.d.ts"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.ts"
22
+ }
23
+ }
24
+ },
25
+ "main": "",
26
+ "types": "dist/index.d.ts",
27
+ "dependencies": {
28
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.253463",
29
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.253463",
30
+ "@fluidframework/protocol-definitions": "^3.2.0"
31
+ },
32
+ "devDependencies": {
33
+ "@arethetypeswrong/cli": "^0.15.2",
34
+ "@biomejs/biome": "^1.6.2",
35
+ "@fluid-tools/build-cli": "^0.34.0",
36
+ "@fluidframework/build-common": "^2.0.3",
37
+ "@fluidframework/build-tools": "^0.34.0",
38
+ "@fluidframework/eslint-config-fluid": "^5.1.0",
39
+ "@microsoft/api-extractor": "^7.42.3",
40
+ "copyfiles": "^2.4.1",
41
+ "eslint": "~8.55.0",
42
+ "prettier": "~3.0.3",
43
+ "rimraf": "^4.4.0",
44
+ "typescript": "~5.1.6"
45
+ },
46
+ "typeValidation": {
47
+ "disabled": true,
48
+ "broken": {}
49
+ },
50
+ "scripts": {
51
+ "build": "fluid-build . --task build",
52
+ "build:commonjs": "fluid-build . --task commonjs",
53
+ "build:compile": "fluid-build . --task compile",
54
+ "build:compile:min": "npm run build:compile",
55
+ "build:docs": "api-extractor run --local",
56
+ "build:esnext": "tsc --project ./tsconfig.json",
57
+ "check:are-the-types-wrong": "attw --pack . --entrypoints .",
58
+ "check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
59
+ "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
60
+ "ci:build:docs": "api-extractor run",
61
+ "clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp",
62
+ "eslint": "eslint --format stylish src",
63
+ "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
64
+ "format": "fluid-build --task format .",
65
+ "format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
66
+ "lint": "fluid-build . --task lint",
67
+ "lint:fix": "fluid-build . --task eslint:fix --task format",
68
+ "tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ../../../common/build/build-common/src/cjs/package.json ./dist"
69
+ }
70
+ }
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ module.exports = {
7
+ ...require("@fluidframework/build-common/prettier.config.cjs"),
8
+ };
package/src/index.ts ADDED
@@ -0,0 +1,22 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type { ITelemetryBufferedLogger } from "./interfaces.js";
7
+
8
+ declare global {
9
+ /**
10
+ * This function may be provided by the environment, like a mocha test hook or dynamic import
11
+ */
12
+ export const getTestLogger: (() => ITelemetryBufferedLogger) | undefined;
13
+ }
14
+
15
+ export type {
16
+ DriverEndpoint,
17
+ ITelemetryBufferedLogger,
18
+ ITestDriver,
19
+ OdspEndpoint,
20
+ RouterliciousEndpoint,
21
+ TestDriverTypes,
22
+ } from "./interfaces.js";
@@ -0,0 +1,126 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type { IRequest, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
+ import type {
8
+ IDocumentServiceFactory,
9
+ IResolvedUrl,
10
+ IUrlResolver,
11
+ } from "@fluidframework/driver-definitions/internal";
12
+
13
+ /**
14
+ * Types of test drivers.
15
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
16
+ * @internal
17
+ */
18
+ export type TestDriverTypes = "tinylicious" | "t9s" | "routerlicious" | "r11s" | "odsp" | "local";
19
+
20
+ /**
21
+ * Types of Routerlicious endpoints.
22
+ * These values are replicated in {@link @fluid-private/test-version-utils#compatOptions.d.ts}. Ensure that any revisions here are also reflected in test-version-utils.
23
+ * @internal
24
+ */
25
+ export type RouterliciousEndpoint = "frs" | "frsCanary" | "r11s" | "docker";
26
+
27
+ /**
28
+ * Types of Odsp endpoints.
29
+ * @internal
30
+ */
31
+ export type OdspEndpoint = "odsp" | "odsp-df";
32
+
33
+ /**
34
+ * Types of Driver endpoints.
35
+ * @internal
36
+ */
37
+ export type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint;
38
+
39
+ /**
40
+ * Base interface for test drivers.
41
+ * @internal
42
+ */
43
+ export interface ITestDriver {
44
+ /**
45
+ * The type of server the test driver executes against
46
+ */
47
+ readonly type: TestDriverTypes;
48
+
49
+ /**
50
+ * Specific endpoint name if there are any
51
+ */
52
+ readonly endpointName?: string;
53
+
54
+ /**
55
+ * Tenant name if there are any
56
+ */
57
+ readonly tenantName?: string;
58
+
59
+ /**
60
+ * User index if there are any
61
+ */
62
+ readonly userIndex?: number;
63
+
64
+ /**
65
+ * The semantic version of the test drivers package.
66
+ * In general this version will match that of the client
67
+ * interfaces and implementation exposed and used by the test driver.
68
+ */
69
+ readonly version: string;
70
+
71
+ /**
72
+ * Creates a document service factory targetting the server that corresponds to this driver.
73
+ */
74
+ createDocumentServiceFactory(): IDocumentServiceFactory;
75
+
76
+ /**
77
+ * Creates a url resolver targetting the server that corresponds to this driver.
78
+ */
79
+ createUrlResolver(): IUrlResolver;
80
+
81
+ /**
82
+ * Creates a 'create new' request appropriate for the server that corresponds to this driver.
83
+ *
84
+ * @remarks
85
+ * Repeated calls with the same test id will return the same request.
86
+ * The test id may not map directly to any specific Fluid Framework concept.
87
+ * If you need more control you should disambiguate the driver based on its
88
+ * type; this should only be done it absolutely necessary for complex scenarios
89
+ * as the test may not work against all supported servers if done.
90
+ *
91
+ * @param testId - If passed in, implementations should use it in the generated request, which should
92
+ * also be consistent every time for a given value of this parameter.
93
+ */
94
+ createCreateNewRequest(testId?: string): IRequest;
95
+
96
+ /**
97
+ * Creates a container url that can be resolved by the url resolver for this driver.
98
+ *
99
+ * @remarks
100
+ * Repeated calls with the same test id will return the same container url.
101
+ * The test id may not map directly to any specific Fluid Framework concept.
102
+ * If you need more control you should disambiguate the driver based on its
103
+ * type; this should only be done if absolutely necessary for complex scenarios
104
+ * as the test may not work against all supported servers if done.
105
+ *
106
+ * @param testId - If passed in, implementations should use it in generated url, which should
107
+ * also be consistent every time for a given value of this parameter.
108
+ * @param containerUrl - Implementations can use this to help disambiguate the container.
109
+ * E.g. if passed a value from a container created earlier, the driver can us it as a hint
110
+ * when resolving the container URL.
111
+ */
112
+ createContainerUrl(testId: string, containerUrl?: IResolvedUrl): Promise<string>;
113
+ }
114
+
115
+ /**
116
+ * Extension of ITelemetryBaseLogger with support for flushing
117
+ * all buffered logs that have not yet been fully processed (e.g. uploaded)
118
+ * @internal
119
+ */
120
+ export interface ITelemetryBufferedLogger extends ITelemetryBaseLogger {
121
+ /**
122
+ * Flush any underlying buffer of events that have been sent so far
123
+ * but not yet fully processed - e.g. uploaded to a log ingestion service.
124
+ */
125
+ flush(): Promise<void>;
126
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ // This config must be used in a "type": "commonjs" environment. (Use fluid-tsc commonjs.)
3
+ "extends": "./tsconfig.json",
4
+ "compilerOptions": {
5
+ "outDir": "./dist",
6
+ },
7
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../../common/build/build-common/tsconfig.node16.json",
3
+ "include": ["src/**/*"],
4
+ "compilerOptions": {
5
+ "rootDir": "./src",
6
+ "outDir": "./lib",
7
+ "emitDeclarationOnly": true,
8
+ },
9
+ }