import js from "@eslint/js"; import eslintConfigPrettier from "eslint-config-prettier"; import tseslint from "typescript-eslint"; import turboPlugin from "eslint-plugin-turbo"; import boundaries from "eslint-plugin-boundaries"; export default [ { ignores: ["dist/**", "node_modules/**", ".next/**", ".turbo/**", "storybook-static/**"] }, js.configs.recommended, ...tseslint.configs.recommended, eslintConfigPrettier, { plugins: { turbo: turboPlugin }, rules: { "turbo/no-undeclared-env-vars": "warn", }, }, { plugins: { boundaries }, settings: { "boundaries/elements": [ { type: "app", pattern: "apps/*" }, { type: "tooling", pattern: "packages/core-eslint" }, { type: "tooling", pattern: "packages/core-typescript" }, { type: "tooling", pattern: "packages/core-testing" }, { type: "core-composition", pattern: "packages/core-api" }, { type: "core-composition", pattern: "packages/core-cms" }, { type: "core", pattern: "packages/core-*" }, { type: "feature", pattern: "packages/!(core-*)" }, ], }, rules: { "boundaries/element-types": [ 2, { default: "disallow", rules: [ { from: "app", allow: ["app", "core", "core-composition", "feature", "tooling"] }, { from: "feature", allow: ["core", "tooling"] }, { from: "core", allow: ["core", "tooling"] }, { from: "core-composition", allow: ["core", "feature", "tooling"] }, { from: "tooling", allow: ["tooling"] }, ], }, ], }, }, ];