diff --git a/.eslintrc.js b/.eslintrc.js index e537d1fd45..65a20457b6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -250,9 +250,12 @@ module.exports = { ignoreAccessorPattern: ["**.root*", "**.numberingReferences*", "**.sections*", "**.properties*"], }, ], - "functional/no-method-signature": "error", - "functional/no-mixed-type": "error", + "functional/prefer-property-signatures": "error", + "functional/no-mixed-types": "error", + // TODO: Deprecated. Use prefer-immutable-types and type-declaration-immutability instead "functional/prefer-readonly-type": "error", + // "functional/prefer-immutable-types": "error", + // "functional/type-declaration-immutability": "error", "no-unused-vars": ["error", { argsIgnorePattern: "^[_]+$" }], }, overrides: [ diff --git a/package-lock.json b/package-lock.json index 06018caee0..22bf909e06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "cspell": "^6.2.2", "docsify-cli": "^4.3.0", "eslint": "^8.23.0", - "eslint-plugin-functional": "^4.3.1", + "eslint-plugin-functional": "^5.0.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsdoc": "^39.3.6", "eslint-plugin-no-null": "^1.0.2", @@ -3622,9 +3622,9 @@ "dev": true }, "node_modules/deepmerge-ts": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.1.tgz", - "integrity": "sha512-xzJLiUo4z1dD2nggSfaMvHo5qWLoy/JVa9rKuktC6FrQQEBI8Qnj7KwuCYZhqBoGOOpGqs6+3MR2ZhSMcTr4BA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz", + "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==", "dev": true, "engines": { "node": ">=12.4.0" @@ -4322,28 +4322,31 @@ "dev": true }, "node_modules/eslint-plugin-functional": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-functional/-/eslint-plugin-functional-4.4.1.tgz", - "integrity": "sha512-YhSfHS52Si62Sn126g9wGx+XnWMoWhwEt6ctVXfcJj+xMUiggjOqUVMca7fuLNzX8jYiNBIeU1Y0teHGePZ3NA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-functional/-/eslint-plugin-functional-5.0.1.tgz", + "integrity": "sha512-zwl6daCIlr3ljGg+4mp9+LWoOzgzj3gY04XPa5w6xaEOgNnpmUiZMim0aTlKbuKwfpnpZ7SzpscrtA0/04+ugQ==", "dev": true, + "funding": [ + { + "type": "ko-fi", + "url": "https://ko-fi.com/rebeccastevens" + } + ], "dependencies": { - "@typescript-eslint/utils": "^5.10.2", - "deepmerge-ts": "^4.0.3", + "@typescript-eslint/utils": "^5.49.0", + "deepmerge-ts": "^4.2.2", "escape-string-regexp": "^4.0.0", - "semver": "^7.3.7" + "is-immutable-type": "^1.2.4", + "semver": "^7.3.8" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=16.10.0" }, "peerDependencies": { "eslint": "^8.0.0", - "tsutils": "^3.0.0", - "typescript": "^3.4.1 || ^4.0.0" + "typescript": ">=4.0.2" }, "peerDependenciesMeta": { - "tsutils": { - "optional": true - }, "typescript": { "optional": true } @@ -4374,9 +4377,9 @@ } }, "node_modules/eslint-plugin-functional/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6411,6 +6414,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-immutable-type": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-1.2.4.tgz", + "integrity": "sha512-H/famjtztrVEl/P9izGTFLEJjmKsDoj+WBMVo+oSSDEuNTZpJFDn37/ovEb+3a3K5UU8zdkVUwBgddeBPH41pA==", + "dev": true, + "peerDependencies": { + "@typescript-eslint/type-utils": ">=5.30.5", + "@typescript-eslint/utils": ">=5.30.5", + "typescript": ">=4.7.4" + } + }, "node_modules/is-installed-globally": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", @@ -14306,9 +14320,9 @@ "dev": true }, "deepmerge-ts": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.1.tgz", - "integrity": "sha512-xzJLiUo4z1dD2nggSfaMvHo5qWLoy/JVa9rKuktC6FrQQEBI8Qnj7KwuCYZhqBoGOOpGqs6+3MR2ZhSMcTr4BA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz", + "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==", "dev": true }, "default-require-extensions": { @@ -15051,15 +15065,16 @@ } }, "eslint-plugin-functional": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-functional/-/eslint-plugin-functional-4.4.1.tgz", - "integrity": "sha512-YhSfHS52Si62Sn126g9wGx+XnWMoWhwEt6ctVXfcJj+xMUiggjOqUVMca7fuLNzX8jYiNBIeU1Y0teHGePZ3NA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-functional/-/eslint-plugin-functional-5.0.1.tgz", + "integrity": "sha512-zwl6daCIlr3ljGg+4mp9+LWoOzgzj3gY04XPa5w6xaEOgNnpmUiZMim0aTlKbuKwfpnpZ7SzpscrtA0/04+ugQ==", "dev": true, "requires": { - "@typescript-eslint/utils": "^5.10.2", - "deepmerge-ts": "^4.0.3", + "@typescript-eslint/utils": "^5.49.0", + "deepmerge-ts": "^4.2.2", "escape-string-regexp": "^4.0.0", - "semver": "^7.3.7" + "is-immutable-type": "^1.2.4", + "semver": "^7.3.8" }, "dependencies": { "escape-string-regexp": { @@ -15078,9 +15093,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -16384,6 +16399,13 @@ } } }, + "is-immutable-type": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-1.2.4.tgz", + "integrity": "sha512-H/famjtztrVEl/P9izGTFLEJjmKsDoj+WBMVo+oSSDEuNTZpJFDn37/ovEb+3a3K5UU8zdkVUwBgddeBPH41pA==", + "dev": true, + "requires": {} + }, "is-installed-globally": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", diff --git a/package.json b/package.json index 0fc1391f9f..ee07735095 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "cspell": "^6.2.2", "docsify-cli": "^4.3.0", "eslint": "^8.23.0", - "eslint-plugin-functional": "^4.3.1", + "eslint-plugin-functional": "^5.0.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsdoc": "^39.3.6", "eslint-plugin-no-null": "^1.0.2",