// Copyright 2023 The Matrix.org Foundation C.I.C. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. const HEADER_TEMPLATE = `\ // Copyright %%CURRENT_YEAR%% The Matrix.org Foundation C.I.C. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. `; /** @type {import('eslint').Linter.Config} */ module.exports = { root: true, plugins: ["matrix-org"], extends: [ "plugin:prettier/recommended", "plugin:import/recommended", "plugin:import/typescript", "plugin:matrix-org/typescript", ], env: { browser: false, node: true, }, parser: "@typescript-eslint/parser", parserOptions: { project: "./tsconfig.eslint.json", }, rules: { "matrix-org/require-copyright-header": ["error", HEADER_TEMPLATE], "import/order": [ "error", { "newlines-between": "always", alphabetize: { order: "asc" }, }, ], "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/promise-function-async": "error", "@typescript-eslint/await-thenable": "error", // False-positive because of id128 and log4js "import/no-named-as-default-member": "off", }, settings: { "import/parsers": { "@typescript-eslint/parser": [".ts", ".mts"], }, "import/resolver": { typescript: true, node: true, }, }, ignorePatterns: ["dist"], };