import js from "@eslint/js"; import tseslint from "typescript-eslint"; const appLayerImports = [ "@app/*", "@view/*", "@renderer/*", "@commands/*", "@editor/*", "@input/*", "../app/*", "../view/*", "../renderer/*", "../commands/*", "../editor/*", "../input/*", "@operations/*", "@platform/*", "@server/*", ]; export default tseslint.config( { ignores: ["dist/**", "node_modules/**", "eslint.config.js"], }, js.configs.recommended, ...tseslint.configs.recommended, { files: ["**/*.{ts,tsx}"], rules: { "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports" }], }, }, { files: ["core/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: appLayerImports }], }, }, { files: ["commands/**/*.{ts,tsx}"], rules: { "no-restricted-imports": [ "error", { patterns: ["@app/*", "@view/*", "@renderer/*", "@operations/*", "@platform/*", "@server/*", "../app/*", "../view/*", "../renderer/*", "react", "react-dom"] }, ], }, }, { files: ["editor/**/*.{ts,tsx}"], rules: { "no-restricted-imports": [ "error", { patterns: ["@app/*", "@view/*", "@renderer/*", "@operations/*", "@platform/*", "@server/*", "../app/*", "../view/*", "../renderer/*", "react", "react-dom"] }, ], }, }, { files: ["renderer/**/*.{ts,tsx}"], rules: { "no-restricted-imports": [ "error", { patterns: ["@app/*", "@view/*", "../app/*", "../view/*", "react", "react-dom"] }, ], }, }, { files: ["input/**/*.{ts,tsx}"], rules: { "no-restricted-imports": [ "error", { patterns: [ "@app/*", "@view/*", "@renderer/*", "@editor/*", "../app/*", "../view/*", "../renderer/*", "../editor/*", "react", "react-dom", "@core/document", "@core/layer", "@core/artboard", "@core/asset", ], }, ], }, }, { files: ["operations/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: ["@app/*", "@view/*", "@renderer/*", "@server/*", "react", "react-dom"] }], "no-restricted-globals": ["error", "document", "Image", "URL", "fetch", "requestAnimationFrame", "cancelAnimationFrame"], }, }, { files: ["platform/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: ["@app/*", "@view/*", "@renderer/*", "@commands/*", "@editor/*", "@input/*", "@operations/*", "@server/*", "react", "react-dom"] }], }, }, { files: ["server/**/*.{ts,tsx}"], rules: { "no-restricted-imports": ["error", { patterns: ["@app/*", "@view/*", "@renderer/*", "@commands/*", "@editor/*", "@input/*", "@operations/*", "@platform/*", "react", "react-dom"] }], }, }, );