Skip to content

Commit aa741f1

Browse files
authored
build: Use strict eslint config in common/definitions packages (#18982)
Updates several common packages to use the strict eslint config, primarily so type-only exports/imports are enforced.
1 parent aaa4441 commit aa741f1

33 files changed

+187
-181
lines changed

packages/common/container-definitions/.eslintrc.cjs

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
*/
55

66
module.exports = {
7-
extends: [require.resolve("@fluidframework/eslint-config-fluid/recommended"), "prettier"],
7+
extends: [require.resolve("@fluidframework/eslint-config-fluid/strict"), "prettier"],
88
plugins: ["deprecation"],
99
parserOptions: {
1010
project: ["./tsconfig.json", "./src/test/types/tsconfig.json"],
1111
},
1212
rules: {
13+
// TODO: Enabling this may require breaking changes.
14+
"@typescript-eslint/consistent-indexed-object-style": "off",
15+
1316
// This library is used in the browser, so we don't want dependencies on most node libraries.
1417
"import/no-nodejs-modules": ["error", { allow: ["events"] }],
1518
},

packages/common/container-definitions/api-report/container-definitions.api.md

+26-26
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,36 @@
44
55
```ts
66

7-
import { EventEmitter } from 'events';
8-
import { FluidObject } from '@fluidframework/core-interfaces';
9-
import { IAnyDriverError } from '@fluidframework/driver-definitions';
10-
import { IClient } from '@fluidframework/protocol-definitions';
11-
import { IClientConfiguration } from '@fluidframework/protocol-definitions';
12-
import { IClientDetails } from '@fluidframework/protocol-definitions';
13-
import { IDisposable } from '@fluidframework/core-interfaces';
14-
import { IDocumentMessage } from '@fluidframework/protocol-definitions';
15-
import { IDocumentStorageService } from '@fluidframework/driver-definitions';
7+
import type { EventEmitter } from 'events';
8+
import type { FluidObject } from '@fluidframework/core-interfaces';
9+
import type { IAnyDriverError } from '@fluidframework/driver-definitions';
10+
import type { IClient } from '@fluidframework/protocol-definitions';
11+
import type { IClientConfiguration } from '@fluidframework/protocol-definitions';
12+
import type { IClientDetails } from '@fluidframework/protocol-definitions';
13+
import type { IDisposable } from '@fluidframework/core-interfaces';
14+
import type { IDocumentMessage } from '@fluidframework/protocol-definitions';
15+
import type { IDocumentStorageService } from '@fluidframework/driver-definitions';
1616
import { IErrorBase } from '@fluidframework/core-interfaces';
17-
import { IErrorEvent } from '@fluidframework/core-interfaces';
18-
import { IEvent } from '@fluidframework/core-interfaces';
19-
import { IEventProvider } from '@fluidframework/core-interfaces';
17+
import type { IErrorEvent } from '@fluidframework/core-interfaces';
18+
import type { IEvent } from '@fluidframework/core-interfaces';
19+
import type { IEventProvider } from '@fluidframework/core-interfaces';
2020
import { IGenericError } from '@fluidframework/core-interfaces';
21-
import { IQuorumClients } from '@fluidframework/protocol-definitions';
22-
import { IRequest } from '@fluidframework/core-interfaces';
23-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
24-
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
25-
import { ISequencedProposal } from '@fluidframework/protocol-definitions';
26-
import { ISignalMessage } from '@fluidframework/protocol-definitions';
27-
import { ISnapshot } from '@fluidframework/driver-definitions';
28-
import { ISnapshotTree } from '@fluidframework/protocol-definitions';
29-
import { ISummaryContent } from '@fluidframework/protocol-definitions';
30-
import { ISummaryTree } from '@fluidframework/protocol-definitions';
31-
import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
21+
import type { IQuorumClients } from '@fluidframework/protocol-definitions';
22+
import type { IRequest } from '@fluidframework/core-interfaces';
23+
import type { IResolvedUrl } from '@fluidframework/driver-definitions';
24+
import type { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
25+
import type { ISequencedProposal } from '@fluidframework/protocol-definitions';
26+
import type { ISignalMessage } from '@fluidframework/protocol-definitions';
27+
import type { ISnapshot } from '@fluidframework/driver-definitions';
28+
import type { ISnapshotTree } from '@fluidframework/protocol-definitions';
29+
import type { ISummaryContent } from '@fluidframework/protocol-definitions';
30+
import type { ISummaryTree } from '@fluidframework/protocol-definitions';
31+
import type { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
3232
import { IThrottlingWarning } from '@fluidframework/core-interfaces';
33-
import { ITokenClaims } from '@fluidframework/protocol-definitions';
33+
import type { ITokenClaims } from '@fluidframework/protocol-definitions';
3434
import { IUsageError } from '@fluidframework/core-interfaces';
35-
import { IVersion } from '@fluidframework/protocol-definitions';
36-
import { MessageType } from '@fluidframework/protocol-definitions';
35+
import type { IVersion } from '@fluidframework/protocol-definitions';
36+
import type { MessageType } from '@fluidframework/protocol-definitions';
3737

3838
// @public
3939
export enum AttachState {

packages/common/container-definitions/src/audience.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
// False positive: this is an import from the `events` package, not from Node.
77
// eslint-disable-next-line unicorn/prefer-node-protocol
8-
import { EventEmitter } from "events";
9-
import { IClient } from "@fluidframework/protocol-definitions";
8+
import type { EventEmitter } from "events";
9+
import type { IClient } from "@fluidframework/protocol-definitions";
1010

1111
/**
1212
* Manages the state and the members for {@link IAudience}

packages/common/container-definitions/src/browserPackage.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { IFluidPackage, isFluidPackage, IFluidPackageEnvironment } from "./fluidPackage";
6+
import type { IFluidPackage, IFluidPackageEnvironment } from "./fluidPackage";
7+
import { isFluidPackage } from "./fluidPackage";
78

89
/**
910
* A specific Fluid package environment for browsers

packages/common/container-definitions/src/deltas.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import {
6+
import type {
77
IDisposable,
88
IEventProvider,
99
IEvent,
1010
IErrorEvent,
1111
IErrorBase,
1212
} from "@fluidframework/core-interfaces";
13-
import { IAnyDriverError } from "@fluidframework/driver-definitions";
14-
import {
13+
import type { IAnyDriverError } from "@fluidframework/driver-definitions";
14+
import type {
1515
IClientConfiguration,
1616
IClientDetails,
1717
IDocumentMessage,

packages/common/container-definitions/src/error.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { FluidErrorTypes, IErrorBase } from "@fluidframework/core-interfaces";
6+
import type { IErrorBase } from "@fluidframework/core-interfaces";
7+
import { FluidErrorTypes } from "@fluidframework/core-interfaces";
78

89
/**
910
* Different error types the ClientSession may report out to the Host.

packages/common/container-definitions/src/fluidModule.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { FluidObject } from "@fluidframework/core-interfaces";
7-
import { IProvideFluidCodeDetailsComparer } from "./fluidPackage";
8-
import { IRuntimeFactory } from "./runtime";
6+
import type { FluidObject } from "@fluidframework/core-interfaces";
7+
import type { IProvideFluidCodeDetailsComparer } from "./fluidPackage";
8+
import type { IRuntimeFactory } from "./runtime";
99

1010
/**
1111
* @alpha

packages/common/container-definitions/src/index.ts

+14-19
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,10 @@
99
* @packageDocumentation
1010
*/
1111

12-
export { IAudience, IAudienceOwner } from "./audience";
13-
export {
14-
IFluidBrowserPackage,
15-
IFluidBrowserPackageEnvironment,
16-
isFluidBrowserPackage,
17-
} from "./browserPackage";
18-
export {
12+
export type { IAudience, IAudienceOwner } from "./audience";
13+
export type { IFluidBrowserPackage, IFluidBrowserPackageEnvironment } from "./browserPackage";
14+
export { isFluidBrowserPackage } from "./browserPackage";
15+
export type {
1916
IConnectionDetails,
2017
IDeltaManager,
2118
IDeltaManagerEvents,
@@ -24,8 +21,9 @@ export {
2421
IDeltaSender,
2522
ReadOnlyInfo,
2623
} from "./deltas";
27-
export { ContainerErrorTypes, ContainerWarning, ICriticalContainerError } from "./error";
28-
export {
24+
export type { ContainerWarning, ICriticalContainerError } from "./error";
25+
export { ContainerErrorTypes } from "./error";
26+
export type {
2927
ConnectionState,
3028
ICodeDetailsLoader,
3129
IContainer,
@@ -40,30 +38,27 @@ export {
4038
IProvideLoader,
4139
IResolvedFluidCodeDetails,
4240
ISnapshotTreeWithBlobContents,
43-
LoaderHeader,
4441
} from "./loader";
45-
export { IFluidModule } from "./fluidModule";
46-
export {
42+
export { LoaderHeader } from "./loader";
43+
export type { IFluidModule } from "./fluidModule";
44+
export type {
4745
IFluidPackage,
4846
IFluidPackageEnvironment,
4947
IFluidCodeDetails,
50-
IFluidCodeDetailsComparer,
5148
IFluidCodeDetailsConfig,
5249
IProvideFluidCodeDetailsComparer,
53-
isFluidPackage,
54-
isFluidCodeDetails,
5550
} from "./fluidPackage";
56-
export {
57-
AttachState,
51+
export { IFluidCodeDetailsComparer, isFluidPackage, isFluidCodeDetails } from "./fluidPackage";
52+
export type {
5853
IBatchMessage,
5954
IContainerContext,
6055
IProvideRuntimeFactory,
6156
IRuntime,
62-
IRuntimeFactory,
6357
IGetPendingLocalStateProps,
6458
} from "./runtime";
59+
export { AttachState, IRuntimeFactory } from "./runtime";
6560

66-
export {
61+
export type {
6762
/**
6863
* @deprecated IErrorBase is being deprecated as a public export is moving to "core-interfaces".
6964
*/

packages/common/container-definitions/src/loader.ts

+18-9
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { IRequest, FluidObject, IEvent, IEventProvider } from "@fluidframework/core-interfaces";
7-
import {
6+
import type {
7+
IRequest,
8+
FluidObject,
9+
IEvent,
10+
IEventProvider,
11+
} from "@fluidframework/core-interfaces";
12+
import type {
813
IClient,
914
IClientDetails,
1015
IDocumentMessage,
@@ -13,13 +18,17 @@ import {
1318
ISequencedProposal,
1419
ISnapshotTree,
1520
} from "@fluidframework/protocol-definitions";
16-
import { IResolvedUrl } from "@fluidframework/driver-definitions";
17-
import { IAudience } from "./audience";
18-
import { IDeltaManager, ReadOnlyInfo } from "./deltas";
19-
import { ICriticalContainerError, ContainerWarning } from "./error";
20-
import { IFluidModule } from "./fluidModule";
21-
import { AttachState } from "./runtime";
22-
import { IFluidCodeDetails, IFluidPackage, IProvideFluidCodeDetailsComparer } from "./fluidPackage";
21+
import type { IResolvedUrl } from "@fluidframework/driver-definitions";
22+
import type { IAudience } from "./audience";
23+
import type { IDeltaManager, ReadOnlyInfo } from "./deltas";
24+
import type { ICriticalContainerError, ContainerWarning } from "./error";
25+
import type { IFluidModule } from "./fluidModule";
26+
import type { AttachState } from "./runtime";
27+
import type {
28+
IFluidCodeDetails,
29+
IFluidPackage,
30+
IProvideFluidCodeDetailsComparer,
31+
} from "./fluidPackage";
2332

2433
/**
2534
* Encapsulates a module entry point with corresponding code details.

packages/common/container-definitions/src/runtime.ts

+12-8
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { ITelemetryBaseLogger, IDisposable, FluidObject } from "@fluidframework/core-interfaces";
6+
import type {
7+
ITelemetryBaseLogger,
8+
IDisposable,
9+
FluidObject,
10+
} from "@fluidframework/core-interfaces";
711

8-
import { IDocumentStorageService, ISnapshot } from "@fluidframework/driver-definitions";
9-
import {
12+
import type { IDocumentStorageService, ISnapshot } from "@fluidframework/driver-definitions";
13+
import type {
1014
IClientDetails,
1115
ISequencedDocumentMessage,
1216
ISnapshotTree,
@@ -17,11 +21,11 @@ import {
1721
IQuorumClients,
1822
ISummaryContent,
1923
} from "@fluidframework/protocol-definitions";
20-
import { IAudience } from "./audience";
21-
import { IDeltaManager } from "./deltas";
22-
import { ICriticalContainerError } from "./error";
23-
import { ILoader } from "./loader";
24-
import { IFluidCodeDetails } from "./fluidPackage";
24+
import type { IAudience } from "./audience";
25+
import type { IDeltaManager } from "./deltas";
26+
import type { ICriticalContainerError } from "./error";
27+
import type { ILoader } from "./loader";
28+
import type { IFluidCodeDetails } from "./fluidPackage";
2529

2630
/**
2731
* The attachment state of some Fluid data (e.g. a container or data store), denoting whether it is uploaded to the

packages/common/core-interfaces/.eslintrc.cjs

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
*/
55

66
module.exports = {
7-
extends: [require.resolve("@fluidframework/eslint-config-fluid"), "prettier"],
7+
extends: [require.resolve("@fluidframework/eslint-config-fluid/strict"), "prettier"],
88
parserOptions: {
99
project: ["./tsconfig.json", "./src/test/tsconfig.json"],
1010
},
11+
rules: {
12+
// TODO: Enabling this may require breaking changes.
13+
"@typescript-eslint/consistent-indexed-object-style": "off",
14+
},
1115
};

packages/common/core-interfaces/src/error.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { ITelemetryBaseProperties } from "./index";
6+
import type { ITelemetryBaseProperties } from "./index";
77

88
/**
99
* Error types the Fluid Framework may report.

packages/common/core-interfaces/src/fluidLoadable.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { IFluidHandle } from "./handles";
6+
import type { IFluidHandle } from "./handles";
77

88
/**
99
* @public

packages/common/core-interfaces/src/handles.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
* Licensed under the MIT License.
44
*/
55

6-
import { IRequest, IResponse } from "./fluidRouter";
7-
import { IFluidLoadable } from "./fluidLoadable";
8-
import { FluidObject } from "./provider";
6+
import type { IRequest, IResponse } from "./fluidRouter";
7+
import type { IFluidLoadable } from "./fluidLoadable";
8+
import type { FluidObject } from "./provider";
99

1010
/**
1111
* @public

0 commit comments

Comments
 (0)