From c82f486e88a4d314f0030c6e74495f728ed2cc0f Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Mon, 24 Mar 2025 13:58:36 +0100 Subject: [PATCH] Enforce eslint rules not to import anything from excalidraw package inside common & element --- packages/common/.eslintrc.json | 3 +++ packages/element/.eslintrc.json | 3 +++ packages/element/src/linearElementEditor.ts | 1 + packages/element/src/mutateElement.ts | 1 + packages/eslintrc.base.json | 21 +++++++++++++++++++++ packages/excalidraw/tests/move.test.tsx | 1 - 6 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/common/.eslintrc.json create mode 100644 packages/element/.eslintrc.json create mode 100644 packages/eslintrc.base.json diff --git a/packages/common/.eslintrc.json b/packages/common/.eslintrc.json new file mode 100644 index 000000000..a31aaa147 --- /dev/null +++ b/packages/common/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["../eslintrc.base.json"] +} diff --git a/packages/element/.eslintrc.json b/packages/element/.eslintrc.json new file mode 100644 index 000000000..a31aaa147 --- /dev/null +++ b/packages/element/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["../eslintrc.base.json"] +} diff --git a/packages/element/src/linearElementEditor.ts b/packages/element/src/linearElementEditor.ts index b960ab4b4..bd4e740b2 100644 --- a/packages/element/src/linearElementEditor.ts +++ b/packages/element/src/linearElementEditor.ts @@ -21,6 +21,7 @@ import { } from "@excalidraw/common"; // TODO: remove direct dependency on the scene, should be passed in or injected instead +// eslint-disable-next-line @typescript-eslint/no-restricted-imports import Scene from "@excalidraw/excalidraw/scene/Scene"; import type { Store } from "@excalidraw/excalidraw/store"; diff --git a/packages/element/src/mutateElement.ts b/packages/element/src/mutateElement.ts index 5cff9a58a..d87007369 100644 --- a/packages/element/src/mutateElement.ts +++ b/packages/element/src/mutateElement.ts @@ -6,6 +6,7 @@ import { } from "@excalidraw/common"; // TODO: remove direct dependency on the scene, should be passed in or injected instead +// eslint-disable-next-line @typescript-eslint/no-restricted-imports import Scene from "@excalidraw/excalidraw/scene/Scene"; import type { Radians } from "@excalidraw/math"; diff --git a/packages/eslintrc.base.json b/packages/eslintrc.base.json new file mode 100644 index 000000000..88d006a09 --- /dev/null +++ b/packages/eslintrc.base.json @@ -0,0 +1,21 @@ +{ + "overrides": [ + { + "files": ["src/**/*.{ts,tsx}"], + "rules": { + "@typescript-eslint/no-restricted-imports": [ + "error", + { + "patterns": [ + { + "group": ["../../excalidraw", "../../../packages/excalidraw", "@excalidraw/excalidraw"], + "message": "Do not import from '@excalidraw/excalidraw' package anything but types, as this package must be independent.", + "allowTypeImports": true + } + ] + } + ] + } + } + ] +} diff --git a/packages/excalidraw/tests/move.test.tsx b/packages/excalidraw/tests/move.test.tsx index cf05e072d..77fc7e57d 100644 --- a/packages/excalidraw/tests/move.test.tsx +++ b/packages/excalidraw/tests/move.test.tsx @@ -19,7 +19,6 @@ import { Excalidraw } from "../index"; import * as InteractiveCanvas from "../renderer/interactiveScene"; import * as StaticScene from "../renderer/staticScene"; - import { UI, Pointer, Keyboard } from "./helpers/ui"; import { render, fireEvent, act, unmountComponent } from "./test-utils";