mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-04-18 07:04:03 +03:00
* WIP doodles on MembershipManager test cases * . * initial membership manager test setup. * Updates from discussion * revert renaming comments * remove unused import * fix leave delayed event resend test. It was missing a flush. * comment out and remove unused variables * es lint * use jsdom instead of node test environment * remove unused variables * remove unused export * temp * review * fixup tests * more review * remove wait for expect dependency * flatten tests and add comments * add more leave test cases * use defer * remove @jest/environment dependency * Cleanup awaits and Make mock types more correct. Make every mock return a Promise if the real implementation does return a pormise. * remove flush promise dependency * add linting to matrixrtc tests * Add fix async lints and use matrix rtc logger for test environment. * prettier * change to MatrixRTCSession logger * make accessing the full room deprecated * remove deprecated usage of full room * Clean up the deprecation --------- Co-authored-by: Hugh Nimmo-Smith <hughns@matrix.org>
170 lines
5.8 KiB
JavaScript
170 lines
5.8 KiB
JavaScript
module.exports = {
|
|
plugins: ["matrix-org", "import", "jsdoc", "n"],
|
|
extends: ["plugin:matrix-org/babel", "plugin:matrix-org/jest", "plugin:import/typescript"],
|
|
parserOptions: {
|
|
project: ["./tsconfig.json"],
|
|
},
|
|
env: {
|
|
browser: true,
|
|
node: true,
|
|
},
|
|
settings: {
|
|
"import/resolver": {
|
|
typescript: true,
|
|
node: true,
|
|
},
|
|
},
|
|
// NOTE: These rules are frozen and new rules should not be added here.
|
|
// New changes belong in https://github.com/matrix-org/eslint-plugin-matrix-org/
|
|
rules: {
|
|
"no-var": ["error"],
|
|
"prefer-rest-params": ["error"],
|
|
"prefer-spread": ["error"],
|
|
"one-var": ["error"],
|
|
"padded-blocks": ["error"],
|
|
"no-extend-native": ["error"],
|
|
"camelcase": ["error"],
|
|
"no-multi-spaces": ["error", { ignoreEOLComments: true }],
|
|
"space-before-function-paren": [
|
|
"error",
|
|
{
|
|
anonymous: "never",
|
|
named: "never",
|
|
asyncArrow: "always",
|
|
},
|
|
],
|
|
"arrow-parens": "off",
|
|
"prefer-promise-reject-errors": "off",
|
|
"no-constant-condition": "off",
|
|
"no-async-promise-executor": "off",
|
|
// We use a `logger` intermediary module
|
|
"no-console": "error",
|
|
|
|
// restrict EventEmitters to force callers to use TypedEventEmitter
|
|
"no-restricted-imports": [
|
|
"error",
|
|
{
|
|
name: "events",
|
|
message: "Please use TypedEventEmitter instead",
|
|
},
|
|
],
|
|
|
|
"no-restricted-properties": [
|
|
"error",
|
|
{
|
|
object: "window",
|
|
property: "setImmediate",
|
|
message: "Use setTimeout instead.",
|
|
},
|
|
],
|
|
"no-restricted-globals": [
|
|
"error",
|
|
{
|
|
name: "setImmediate",
|
|
message: "Use setTimeout instead.",
|
|
},
|
|
{
|
|
name: "global",
|
|
message: "Use globalThis instead.",
|
|
},
|
|
],
|
|
|
|
"import/no-restricted-paths": [
|
|
"error",
|
|
{
|
|
zones: [
|
|
{
|
|
target: "./src/",
|
|
from: "./src/index.ts",
|
|
message:
|
|
"The package index is dynamic between src and lib depending on " +
|
|
"whether release or development, target the specific module or matrix.ts instead",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
// Disabled tests are a reality for now but as soon as all of the xits are
|
|
// eliminated, we should enforce this.
|
|
"jest/no-disabled-tests": "off",
|
|
// Used in some crypto tests.
|
|
"jest/no-standalone-expect": [
|
|
"error",
|
|
{
|
|
additionalTestBlockFunctions: ["beforeAll", "beforeEach"],
|
|
},
|
|
],
|
|
},
|
|
overrides: [
|
|
{
|
|
files: ["**/*.ts"],
|
|
plugins: ["eslint-plugin-tsdoc"],
|
|
extends: ["plugin:matrix-org/typescript"],
|
|
rules: {
|
|
// TypeScript has its own version of this
|
|
"@babel/no-invalid-this": "off",
|
|
|
|
// We're okay being explicit at the moment
|
|
"@typescript-eslint/no-empty-interface": "off",
|
|
// We disable this while we're transitioning
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
// We'd rather not do this but we do
|
|
"@typescript-eslint/ban-ts-comment": "off",
|
|
// We're okay with assertion errors when we ask for them
|
|
"@typescript-eslint/no-non-null-assertion": "off",
|
|
"@typescript-eslint/no-empty-object-type": [
|
|
"error",
|
|
{
|
|
// We do this sometimes to brand interfaces
|
|
allowInterfaces: "with-single-extends",
|
|
},
|
|
],
|
|
|
|
"quotes": "off",
|
|
// We use a `logger` intermediary module
|
|
"no-console": "error",
|
|
},
|
|
},
|
|
{
|
|
files: ["src/**/*.ts"],
|
|
rules: {
|
|
"jsdoc/no-types": "error",
|
|
"jsdoc/empty-tags": "error",
|
|
"jsdoc/check-property-names": "error",
|
|
"jsdoc/check-values": "error",
|
|
// These need a bit more work before we can enable
|
|
// "jsdoc/check-param-names": "error",
|
|
// "jsdoc/check-indentation": "error",
|
|
// Ensure .ts extension on imports outside of tests
|
|
"n/file-extension-in-import": [
|
|
"error",
|
|
"always",
|
|
{
|
|
tryExtensions: [".ts"],
|
|
},
|
|
],
|
|
"no-extra-boolean-cast": "error",
|
|
},
|
|
},
|
|
{
|
|
files: ["spec/**/*.ts"],
|
|
rules: {
|
|
// We don't need super strict typing in test utilities
|
|
"@typescript-eslint/explicit-function-return-type": "off",
|
|
"@typescript-eslint/explicit-member-accessibility": "off",
|
|
"@typescript-eslint/no-empty-object-type": "off",
|
|
},
|
|
},
|
|
{
|
|
// Enable stricter promise rules for the MatrixRTC codebase
|
|
files: ["src/matrixrtc/**/*.ts", "spec/unit/matrixrtc/*.ts"],
|
|
rules: {
|
|
// Encourage proper usage of Promises:
|
|
"@typescript-eslint/no-floating-promises": "error",
|
|
"@typescript-eslint/no-misused-promises": "error",
|
|
"@typescript-eslint/require-await": "error",
|
|
"@typescript-eslint/await-thenable": "error",
|
|
},
|
|
},
|
|
],
|
|
};
|