From 229c5135d72ac28882ccc5fcd91bce0051e645e1 Mon Sep 17 00:00:00 2001 From: Sacha Froment Date: Wed, 5 Mar 2025 12:11:10 +0100 Subject: [PATCH] refactor: :art: import type when it's only used as type --- eslint.config.mjs | 11 +++++++++++ examples/grid/src/index.ts | 2 +- examples/grid/src/state.ts | 4 ++-- packages/logger/src/index.ts | 2 +- packages/network/tests/network.test.ts | 11 ++++++++--- packages/node/src/handlers.ts | 8 ++++---- packages/node/src/index.ts | 4 ++-- packages/node/src/logger.ts | 2 +- packages/node/src/operations.ts | 4 ++-- packages/node/tests/cli.test.ts | 2 +- packages/object/src/finality/index.ts | 2 +- packages/object/src/hashgraph/index.ts | 8 +++++++- packages/object/src/index.ts | 8 ++++---- packages/object/src/interface.ts | 4 ++-- packages/object/src/linearize/multipleSemantics.ts | 2 +- packages/object/src/linearize/pairSemantics.ts | 2 +- packages/object/tests/drpobject.test.ts | 2 +- packages/object/tests/hashgraph.bench.ts | 2 +- packages/object/tests/hashgraph.test.ts | 12 ++++++++++-- packages/tracer/tests/index.spec.ts | 4 ++-- packages/types/src/interval-runner.ts | 2 +- packages/types/src/logger.ts | 2 +- 22 files changed, 65 insertions(+), 35 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index e7fcdc1cd..708609924 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -75,6 +75,13 @@ const config = tsLintConfig( "@typescript-eslint/no-dynamic-delete": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/consistent-type-imports": [ + "error", + { + prefer: "type-imports", + fixStyle: "inline-type-imports", + }, + ], "no-unused-vars": "off", "unused-imports/no-unused-imports": "error", "prefer-const": "error", @@ -96,6 +103,10 @@ const config = tsLintConfig( }, ], "import/no-cycle": "error", + "import/no-self-import": "error", + "import/no-duplicates": "error", + "import/no-named-default": "error", + "import/no-webpack-loader-syntax": "error", }, } ); diff --git a/examples/grid/src/index.ts b/examples/grid/src/index.ts index 31cc3d656..c13be2c8e 100644 --- a/examples/grid/src/index.ts +++ b/examples/grid/src/index.ts @@ -1,5 +1,5 @@ import { DRPNode } from "@ts-drp/node"; -import { enableTracing, IMetrics, OpentelemetryMetrics } from "@ts-drp/tracer"; +import { enableTracing, type IMetrics, OpentelemetryMetrics } from "@ts-drp/tracer"; import { env } from "./env"; import { Grid } from "./objects/grid"; diff --git a/examples/grid/src/state.ts b/examples/grid/src/state.ts index 73e43fc6a..f2cdee1b7 100644 --- a/examples/grid/src/state.ts +++ b/examples/grid/src/state.ts @@ -1,7 +1,7 @@ import { DRPNode } from "@ts-drp/node"; -import { DRPObject } from "@ts-drp/object"; +import { type DRPObject } from "@ts-drp/object"; -import { Grid } from "./objects/grid"; +import { type Grid } from "./objects/grid"; interface GridState { node: DRPNode; diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 20c917973..368493399 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,4 +1,4 @@ -import { LoggerOptions } from "@ts-drp/types"; +import { type LoggerOptions } from "@ts-drp/types"; import loglevel from "loglevel"; import prefix from "loglevel-plugin-prefix"; diff --git a/packages/network/tests/network.test.ts b/packages/network/tests/network.test.ts index 04e1564ad..b454f25ab 100644 --- a/packages/network/tests/network.test.ts +++ b/packages/network/tests/network.test.ts @@ -1,11 +1,16 @@ -import { GossipSub, MeshPeer } from "@chainsafe/libp2p-gossipsub"; -import { Connection, IdentifyResult, Libp2p, SubscriptionChangeData } from "@libp2p/interface"; +import { type GossipSub, type MeshPeer } from "@chainsafe/libp2p-gossipsub"; +import { + type Connection, + type IdentifyResult, + type Libp2p, + type SubscriptionChangeData, +} from "@libp2p/interface"; import { loadConfig } from "@ts-drp/node/src/config.js"; import { Message } from "@ts-drp/types"; import { raceEvent } from "race-event"; import { beforeAll, describe, expect, test, afterAll } from "vitest"; -import { DRPNetworkNode, DRPNetworkNodeConfig, streamToUint8Array } from "../src/node.js"; +import { DRPNetworkNode, type DRPNetworkNodeConfig, streamToUint8Array } from "../src/node.js"; describe("DRPNetworkNode can connect & send messages", () => { const controller = new AbortController(); diff --git a/packages/node/src/handlers.ts b/packages/node/src/handlers.ts index 0ef441adb..8108cf19a 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -4,12 +4,12 @@ import { peerIdFromPublicKey } from "@libp2p/peer-id"; import { Signature } from "@noble/secp256k1"; import { streamToUint8Array } from "@ts-drp/network"; import { type ACL, type DRPObject, HashGraph } from "@ts-drp/object"; -import { type Vertex } from "@ts-drp/types"; import { - AggregatedAttestation, - Attestation, + type Vertex, + type AggregatedAttestation, + type Attestation, AttestationUpdate, - DRPState, + type DRPState, FetchState, FetchStateResponse, Message, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 0ef259e58..f58a0890a 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -1,10 +1,10 @@ import type { GossipsubMessage } from "@chainsafe/libp2p-gossipsub"; import type { EventCallback, IncomingStreamData, StreamHandler } from "@libp2p/interface"; -import { KeychainConfig, Keychain } from "@ts-drp/keychain"; +import { type KeychainConfig, Keychain } from "@ts-drp/keychain"; import { Logger } from "@ts-drp/logger"; import { DRPNetworkNode, type DRPNetworkNodeConfig } from "@ts-drp/network"; import { type ACL, type DRP, DRPObject } from "@ts-drp/object"; -import { IMetrics } from "@ts-drp/tracer"; +import { type IMetrics } from "@ts-drp/tracer"; import { Message, MessageType, type LoggerOptions } from "@ts-drp/types"; import { drpMessagesHandler } from "./handlers.js"; diff --git a/packages/node/src/logger.ts b/packages/node/src/logger.ts index e4401ae87..d69f6133b 100644 --- a/packages/node/src/logger.ts +++ b/packages/node/src/logger.ts @@ -1,4 +1,4 @@ -import { ILogger } from "@ts-drp/logger"; +import { type ILogger } from "@ts-drp/logger"; // TODO: replace with the actual logger in each place that need a logger this is just a hack by the mean time to fix the circular dependency export const log: ILogger = { diff --git a/packages/node/src/operations.ts b/packages/node/src/operations.ts index a61e2c44d..07c502960 100644 --- a/packages/node/src/operations.ts +++ b/packages/node/src/operations.ts @@ -1,6 +1,6 @@ -import { GossipsubMessage } from "@chainsafe/libp2p-gossipsub"; +import { type GossipsubMessage } from "@chainsafe/libp2p-gossipsub"; import { type DRP, DRPObject, HashGraph } from "@ts-drp/object"; -import { IMetrics } from "@ts-drp/tracer"; +import { type IMetrics } from "@ts-drp/tracer"; import { FetchState, Message, MessageType, Sync } from "@ts-drp/types"; import { drpMessagesHandler, drpObjectChangesHandler } from "./handlers.js"; diff --git a/packages/node/tests/cli.test.ts b/packages/node/tests/cli.test.ts index 4a70ce68b..732e0b76e 100644 --- a/packages/node/tests/cli.test.ts +++ b/packages/node/tests/cli.test.ts @@ -4,7 +4,7 @@ import path, { dirname } from "node:path"; import { fileURLToPath } from "node:url"; import { beforeAll, describe, expect, test } from "vitest"; -import { GenericRespone, SubscribeDRPRequest } from "../src/proto/drp/node/v1/rpc_pb.js"; +import { type GenericRespone, type SubscribeDRPRequest } from "../src/proto/drp/node/v1/rpc_pb.js"; import * as run from "../src/run.js"; const protoPath = path.resolve( diff --git a/packages/object/src/finality/index.ts b/packages/object/src/finality/index.ts index 044786872..7ecff641a 100644 --- a/packages/object/src/finality/index.ts +++ b/packages/object/src/finality/index.ts @@ -1,6 +1,6 @@ import { bls } from "@chainsafe/bls/herumi"; import { Logger } from "@ts-drp/logger"; -import { LoggerOptions, AggregatedAttestation, Attestation } from "@ts-drp/types"; +import { type LoggerOptions, type AggregatedAttestation, type Attestation } from "@ts-drp/types"; import { fromString as uint8ArrayFromString } from "uint8arrays/from-string"; import { BitSet } from "../hashgraph/bitset.js"; diff --git a/packages/object/src/hashgraph/index.ts b/packages/object/src/hashgraph/index.ts index b88b67c8a..db07ad433 100644 --- a/packages/object/src/hashgraph/index.ts +++ b/packages/object/src/hashgraph/index.ts @@ -1,5 +1,11 @@ import { Logger } from "@ts-drp/logger"; -import { LoggerOptions, Operation, Vertex, ActionType, SemanticsType } from "@ts-drp/types"; +import { + type LoggerOptions, + type Operation, + Vertex, + ActionType, + SemanticsType, +} from "@ts-drp/types"; import { BitSet } from "./bitset.js"; import { linearizeMultipleSemantics } from "../linearize/multipleSemantics.js"; diff --git a/packages/object/src/index.ts b/packages/object/src/index.ts index 44fa0e74e..1398cd62d 100644 --- a/packages/object/src/index.ts +++ b/packages/object/src/index.ts @@ -1,10 +1,10 @@ import { Logger } from "@ts-drp/logger"; -import { IMetrics } from "@ts-drp/tracer"; +import { type IMetrics } from "@ts-drp/tracer"; import { - DRPObjectBase, + type DRPObjectBase, DRPState, DRPStateEntry, - Operation, + type Operation, type Vertex, type LoggerOptions, } from "@ts-drp/types"; @@ -17,7 +17,7 @@ import type { ACL } from "./acl/interface.js"; import { type FinalityConfig, FinalityStore } from "./finality/index.js"; import { type Hash, HashGraph } from "./hashgraph/index.js"; import { - ConnectObjectOptions, + type ConnectObjectOptions, type DRP, type DRPObjectCallback, type DRPPublicCredential, diff --git a/packages/object/src/interface.ts b/packages/object/src/interface.ts index 57c268ade..c8978e1dd 100644 --- a/packages/object/src/interface.ts +++ b/packages/object/src/interface.ts @@ -1,5 +1,5 @@ -import { IMetrics } from "@ts-drp/tracer"; -import { Operation, SemanticsType, type LoggerOptions, type Vertex } from "@ts-drp/types"; +import { type IMetrics } from "@ts-drp/tracer"; +import { type Operation, type SemanticsType, type LoggerOptions, type Vertex } from "@ts-drp/types"; import type { ResolveConflictsType } from "./hashgraph/index.js"; import type { DRPObject } from "./index.js"; diff --git a/packages/object/src/linearize/multipleSemantics.ts b/packages/object/src/linearize/multipleSemantics.ts index 8137b9638..c9945ccd7 100644 --- a/packages/object/src/linearize/multipleSemantics.ts +++ b/packages/object/src/linearize/multipleSemantics.ts @@ -1,4 +1,4 @@ -import { ActionType, Operation, Vertex } from "@ts-drp/types"; +import { ActionType, type Operation, type Vertex } from "@ts-drp/types"; import { type Hash, type HashGraph } from "../hashgraph/index.js"; import type { ObjectSet } from "../utils/objectSet.js"; diff --git a/packages/object/src/linearize/pairSemantics.ts b/packages/object/src/linearize/pairSemantics.ts index 1b8f50fd2..1b8dc4f7d 100644 --- a/packages/object/src/linearize/pairSemantics.ts +++ b/packages/object/src/linearize/pairSemantics.ts @@ -1,4 +1,4 @@ -import { ActionType, Operation } from "@ts-drp/types"; +import { ActionType, type Operation } from "@ts-drp/types"; import { type Hash, type HashGraph } from "../hashgraph/index.js"; import type { ObjectSet } from "../utils/objectSet.js"; diff --git a/packages/object/tests/drpobject.test.ts b/packages/object/tests/drpobject.test.ts index 040614c8e..5268c0e68 100644 --- a/packages/object/tests/drpobject.test.ts +++ b/packages/object/tests/drpobject.test.ts @@ -2,7 +2,7 @@ import { SetDRP } from "@ts-drp/blueprints/src/index.js"; import { type Vertex, ActionType, SemanticsType } from "@ts-drp/types"; import { beforeEach, describe, expect, it, test, vi } from "vitest"; -import { DRP, DRPObject, ObjectACL, ResolveConflictsType } from "../src/index.js"; +import { type DRP, DRPObject, ObjectACL, type ResolveConflictsType } from "../src/index.js"; const acl = new ObjectACL({ admins: new Map([ diff --git a/packages/object/tests/hashgraph.bench.ts b/packages/object/tests/hashgraph.bench.ts index 22f453d27..14d36c7e3 100644 --- a/packages/object/tests/hashgraph.bench.ts +++ b/packages/object/tests/hashgraph.bench.ts @@ -1,7 +1,7 @@ import { MapDRP, SetDRP } from "@ts-drp/blueprints/src/index.js"; import Benchmark from "benchmark"; -import { DRP, DRPObject, ObjectACL } from "../src/index.js"; +import { type DRP, DRPObject, ObjectACL } from "../src/index.js"; const acl = new ObjectACL({ admins: new Map([["peer1", { secp256k1PublicKey: "pubKey1", blsPublicKey: "pubKey1" }]]), diff --git a/packages/object/tests/hashgraph.test.ts b/packages/object/tests/hashgraph.test.ts index 6c42d43e4..331841ae1 100644 --- a/packages/object/tests/hashgraph.test.ts +++ b/packages/object/tests/hashgraph.test.ts @@ -1,10 +1,18 @@ import { MapConflictResolution, MapDRP } from "@ts-drp/blueprints/src/Map/index.js"; import { SetDRP } from "@ts-drp/blueprints/src/Set/index.js"; -import { type Vertex, Operation, ActionType, SemanticsType } from "@ts-drp/types"; +import { type Vertex, type Operation, ActionType, SemanticsType } from "@ts-drp/types"; import { beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import { ObjectACL } from "../src/acl/index.js"; -import { ACLGroup, DRP, DRPObject, DrpType, Hash, HashGraph, newVertex } from "../src/index.js"; +import { + ACLGroup, + type DRP, + DRPObject, + DrpType, + type Hash, + HashGraph, + newVertex, +} from "../src/index.js"; import { ObjectSet } from "../src/utils/objectSet.js"; const acl = new ObjectACL({ diff --git a/packages/tracer/tests/index.spec.ts b/packages/tracer/tests/index.spec.ts index a66d9315a..e1ee484ed 100644 --- a/packages/tracer/tests/index.spec.ts +++ b/packages/tracer/tests/index.spec.ts @@ -1,10 +1,10 @@ -import { Span } from "@opentelemetry/api"; +import { type Span } from "@opentelemetry/api"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { WebTracerProvider } from "@opentelemetry/sdk-trace-web"; import { beforeEach, describe, expect, test, vi } from "vitest"; import { disableTracing, enableTracing, flush, OpentelemetryMetrics } from "../src/index.js"; -import { IMetrics } from "../src/interface.js"; +import { type IMetrics } from "../src/interface.js"; // Mock OpenTelemetry dependencies vi.mock("@opentelemetry/api", () => { diff --git a/packages/types/src/interval-runner.ts b/packages/types/src/interval-runner.ts index 0148bc4e6..f0358c22f 100644 --- a/packages/types/src/interval-runner.ts +++ b/packages/types/src/interval-runner.ts @@ -1,4 +1,4 @@ -import { LoggerOptions } from "./logger.js"; +import { type LoggerOptions } from "./logger.js"; type AnyFnCallback = | (() => T) diff --git a/packages/types/src/logger.ts b/packages/types/src/logger.ts index ab1616e70..0eed007c9 100644 --- a/packages/types/src/logger.ts +++ b/packages/types/src/logger.ts @@ -1,4 +1,4 @@ -import loglevel from "loglevel"; +import type loglevel from "loglevel"; export interface LoggerOptions { level?: loglevel.LogLevelDesc;