Skip to content

Commit e45fa06

Browse files
fix: update for latest eslint-plugin-functional beta
1 parent b7c5334 commit e45fa06

File tree

3 files changed

+148
-18
lines changed

3 files changed

+148
-18
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
"eslint-config-prettier": "^8.3.0",
8484
"eslint-import-resolver-typescript": "^3.4.0",
8585
"eslint-plugin-eslint-comments": "^3.2.0",
86-
"eslint-plugin-functional": "^5.0.0-beta.8",
86+
"eslint-plugin-functional": "^5.0.0-beta.14",
8787
"eslint-plugin-import": "^2.25.4",
8888
"eslint-plugin-jsdoc": "^39.2.9",
8989
"eslint-plugin-markdown": "^3.0.0",
@@ -113,7 +113,7 @@
113113
"eslint": ">=8.24.0",
114114
"eslint-import-resolver-typescript": "*",
115115
"eslint-plugin-eslint-comments": "*",
116-
"eslint-plugin-functional": ">=5.0.0",
116+
"eslint-plugin-functional": ">=5.0.0-beta.14",
117117
"eslint-plugin-import": "*",
118118
"eslint-plugin-jsdoc": "*",
119119
"eslint-plugin-markdown": "*",

src/plugins/functional.ts

+43
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ export const settings: Linter.Config = {
55

66
extends: ["plugin:functional/recommended"],
77

8+
settings: {
9+
immutability: {
10+
overrides: [
11+
{ pattern: "^ReadonlyDeep<.+>$", to: "ReadonlyDeep" },
12+
{ pattern: "^Immutable<.+>$", to: "Immutable" },
13+
],
14+
},
15+
},
16+
817
rules: {
918
"functional/no-expression-statements": "error",
1019
"functional/immutable-data": [
@@ -22,5 +31,39 @@ export const settings: Linter.Config = {
2231
ignorePattern: ["^mutable", "^m_"],
2332
},
2433
],
34+
"functional/prefer-immutable-types": [
35+
"error",
36+
{
37+
enforcement: "None",
38+
ignoreInferredTypes: true,
39+
parameters: {
40+
enforcement: "ReadonlyDeep",
41+
},
42+
fixer: {
43+
ReadonlyShallow: [
44+
{
45+
pattern: "^(Array|Map|Set)<(.+)>$",
46+
replace: "Readonly$1<$2>",
47+
},
48+
{
49+
pattern: "^(.+)$",
50+
replace: "Readonly<$1>",
51+
},
52+
],
53+
ReadonlyDeep: [
54+
{
55+
pattern: "^(?:Readonly<(.+)>|(.+))$",
56+
replace: "ReadonlyDeep<$1$2>",
57+
},
58+
],
59+
Immutable: [
60+
{
61+
pattern: "^(?:Readonly(?:Deep)?<(.+)>|(.+))$",
62+
replace: "Immutable<$1$2>",
63+
},
64+
],
65+
},
66+
},
67+
],
2568
},
2669
};

yarn.lock

+103-16
Original file line numberDiff line numberDiff line change
@@ -1374,7 +1374,7 @@ __metadata:
13741374
eslint-config-prettier: ^8.3.0
13751375
eslint-import-resolver-typescript: ^3.4.0
13761376
eslint-plugin-eslint-comments: ^3.2.0
1377-
eslint-plugin-functional: ^5.0.0-beta.8
1377+
eslint-plugin-functional: ^5.0.0-beta.14
13781378
eslint-plugin-import: ^2.25.4
13791379
eslint-plugin-jsdoc: ^39.2.9
13801380
eslint-plugin-markdown: ^3.0.0
@@ -1750,6 +1750,13 @@ __metadata:
17501750
languageName: node
17511751
linkType: hard
17521752

1753+
"@types/semver@npm:^7.3.12":
1754+
version: 7.3.13
1755+
resolution: "@types/semver@npm:7.3.13"
1756+
checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0
1757+
languageName: node
1758+
linkType: hard
1759+
17531760
"@types/unist@npm:*, @types/unist@npm:^2.0.2":
17541761
version: 2.0.6
17551762
resolution: "@types/unist@npm:2.0.6"
@@ -1807,6 +1814,16 @@ __metadata:
18071814
languageName: node
18081815
linkType: hard
18091816

1817+
"@typescript-eslint/scope-manager@npm:5.43.0":
1818+
version: 5.43.0
1819+
resolution: "@typescript-eslint/scope-manager@npm:5.43.0"
1820+
dependencies:
1821+
"@typescript-eslint/types": 5.43.0
1822+
"@typescript-eslint/visitor-keys": 5.43.0
1823+
checksum: e594c7a32c3fa29e46dd0b0bc62f97f154bd864682ae7da87a14b6f4336f4cb02f6ed0602bbdb15783e4230ecdf8a0ccc6f7c5820850e8f11240c9e4fb0e388d
1824+
languageName: node
1825+
linkType: hard
1826+
18101827
"@typescript-eslint/type-utils@npm:5.37.0":
18111828
version: 5.37.0
18121829
resolution: "@typescript-eslint/type-utils@npm:5.37.0"
@@ -1831,6 +1848,13 @@ __metadata:
18311848
languageName: node
18321849
linkType: hard
18331850

1851+
"@typescript-eslint/types@npm:5.43.0":
1852+
version: 5.43.0
1853+
resolution: "@typescript-eslint/types@npm:5.43.0"
1854+
checksum: fc5e5431c305feee4a3faae84f34df482e08d74b910a6f9376b01326c682ceefeeb0e270d03d7778787bc94ef05b3b85ee6d3c9d732290fbdb4a67ae1b110226
1855+
languageName: node
1856+
linkType: hard
1857+
18341858
"@typescript-eslint/typescript-estree@npm:5.37.0":
18351859
version: 5.37.0
18361860
resolution: "@typescript-eslint/typescript-estree@npm:5.37.0"
@@ -1849,7 +1873,25 @@ __metadata:
18491873
languageName: node
18501874
linkType: hard
18511875

1852-
"@typescript-eslint/utils@npm:5.37.0, @typescript-eslint/utils@npm:^5.10.2":
1876+
"@typescript-eslint/typescript-estree@npm:5.43.0":
1877+
version: 5.43.0
1878+
resolution: "@typescript-eslint/typescript-estree@npm:5.43.0"
1879+
dependencies:
1880+
"@typescript-eslint/types": 5.43.0
1881+
"@typescript-eslint/visitor-keys": 5.43.0
1882+
debug: ^4.3.4
1883+
globby: ^11.1.0
1884+
is-glob: ^4.0.3
1885+
semver: ^7.3.7
1886+
tsutils: ^3.21.0
1887+
peerDependenciesMeta:
1888+
typescript:
1889+
optional: true
1890+
checksum: 3479f9413d73369ab3d574580c90a72f74d2ae1ec4afe485eebfad054c3d15c89f23a137bb9d6197dfdae33e444a76a99f6832688787feabbb064e09d39a3f55
1891+
languageName: node
1892+
linkType: hard
1893+
1894+
"@typescript-eslint/utils@npm:5.37.0":
18531895
version: 5.37.0
18541896
resolution: "@typescript-eslint/utils@npm:5.37.0"
18551897
dependencies:
@@ -1865,6 +1907,24 @@ __metadata:
18651907
languageName: node
18661908
linkType: hard
18671909

1910+
"@typescript-eslint/utils@npm:^5.40.1":
1911+
version: 5.43.0
1912+
resolution: "@typescript-eslint/utils@npm:5.43.0"
1913+
dependencies:
1914+
"@types/json-schema": ^7.0.9
1915+
"@types/semver": ^7.3.12
1916+
"@typescript-eslint/scope-manager": 5.43.0
1917+
"@typescript-eslint/types": 5.43.0
1918+
"@typescript-eslint/typescript-estree": 5.43.0
1919+
eslint-scope: ^5.1.1
1920+
eslint-utils: ^3.0.0
1921+
semver: ^7.3.7
1922+
peerDependencies:
1923+
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
1924+
checksum: 4c6b383b51506b57230f2624f883ae21e5d8411d138587c04fe3145f915bf8c289cc2a9f7b0b3faba98345ba230504e5014922bcc578aa0badd594d9eaa8f9ef
1925+
languageName: node
1926+
linkType: hard
1927+
18681928
"@typescript-eslint/visitor-keys@npm:5.37.0":
18691929
version: 5.37.0
18701930
resolution: "@typescript-eslint/visitor-keys@npm:5.37.0"
@@ -1875,6 +1935,16 @@ __metadata:
18751935
languageName: node
18761936
linkType: hard
18771937

1938+
"@typescript-eslint/visitor-keys@npm:5.43.0":
1939+
version: 5.43.0
1940+
resolution: "@typescript-eslint/visitor-keys@npm:5.43.0"
1941+
dependencies:
1942+
"@typescript-eslint/types": 5.43.0
1943+
eslint-visitor-keys: ^3.3.0
1944+
checksum: 4820679e50096dcdaadc7c95d32e5dca3ba8510acf1a865e283822bae3940a2faec02ad8abe793f8a25f75b600f1e7215e1fd3b3ba73779eff737fa90d092550
1945+
languageName: node
1946+
linkType: hard
1947+
18781948
"JSONStream@npm:^1.0.4":
18791949
version: 1.3.5
18801950
resolution: "JSONStream@npm:1.3.5"
@@ -3162,13 +3232,20 @@ __metadata:
31623232
languageName: node
31633233
linkType: hard
31643234

3165-
"deepmerge-ts@npm:^4.0.0, deepmerge-ts@npm:^4.0.3":
3235+
"deepmerge-ts@npm:^4.0.0":
31663236
version: 4.2.1
31673237
resolution: "deepmerge-ts@npm:4.2.1"
31683238
checksum: 5fb2f4a6b0f2a637992ba226cb89c28b081575489f1adfcd6789d95bdfb5b8236c8c5aafc02e645fd04f16101bf7c3f3e7c58e523579c635649eb36cb113a3bb
31693239
languageName: node
31703240
linkType: hard
31713241

3242+
"deepmerge-ts@npm:^4.2.2":
3243+
version: 4.2.2
3244+
resolution: "deepmerge-ts@npm:4.2.2"
3245+
checksum: 137c3650519d9b1a220db7e23a3f56304cd02e7f97b2b8392e2767251055a29318425bacdb2ab2ff175a4645f7179643acf0e038d5dafbfdbc11bdf322f79697
3246+
languageName: node
3247+
linkType: hard
3248+
31723249
"deepmerge@npm:^4.2.2":
31733250
version: 4.2.2
31743251
resolution: "deepmerge@npm:4.2.2"
@@ -3551,15 +3628,15 @@ __metadata:
35513628
languageName: node
35523629
linkType: hard
35533630

3554-
"eslint-plugin-functional@npm:^5.0.0-beta.8":
3555-
version: 5.0.0-beta.8
3556-
resolution: "eslint-plugin-functional@npm:5.0.0-beta.8"
3631+
"eslint-plugin-functional@npm:^5.0.0-beta.14":
3632+
version: 5.0.0-beta.14
3633+
resolution: "eslint-plugin-functional@npm:5.0.0-beta.14"
35573634
dependencies:
3558-
"@typescript-eslint/utils": ^5.10.2
3559-
deepmerge-ts: ^4.0.3
3635+
"@typescript-eslint/utils": ^5.40.1
3636+
deepmerge-ts: ^4.2.2
35603637
escape-string-regexp: ^4.0.0
3561-
is-immutable-type: ^1.0.2
3562-
semver: ^7.3.7
3638+
is-immutable-type: ^1.2.2
3639+
semver: ^7.3.8
35633640
peerDependencies:
35643641
eslint: ^8.0.0
35653642
tsutils: ^3.0.0
@@ -3569,7 +3646,7 @@ __metadata:
35693646
optional: true
35703647
typescript:
35713648
optional: true
3572-
checksum: 433cfd63531a2d09debc5a87562082fdea803b3c03c8793171ba832471cba0725392502dc8117fdc128e4ed4a962ac776944e6614bac469585aea15fdf0836b6
3649+
checksum: 98bcf60dabacc913ed5d0b485359c62c52281a6a8655a623a4ecc6520be10e1bd4a87908f274fd8969204465f340b25247268c885d2868131dc901d4a28dde49
35733650
languageName: node
35743651
linkType: hard
35753652

@@ -5045,15 +5122,14 @@ __metadata:
50455122
languageName: node
50465123
linkType: hard
50475124

5048-
"is-immutable-type@npm:^1.0.2":
5049-
version: 1.0.2
5050-
resolution: "is-immutable-type@npm:1.0.2"
5125+
"is-immutable-type@npm:^1.2.2":
5126+
version: 1.2.3
5127+
resolution: "is-immutable-type@npm:1.2.3"
50515128
peerDependencies:
50525129
"@typescript-eslint/type-utils": ">=5.30.5"
50535130
"@typescript-eslint/utils": ">=5.30.5"
5054-
tsutils: ">=3.21.0"
50555131
typescript: ">=4.7.4"
5056-
checksum: a994a451b7b6decb521da67ca2e2a0841d3d95516565d6b3e6f252eba38faafcece9cbedf37f1a4598d1e2b28159566c50e32a28cec0e92482da8516fe79d395
5132+
checksum: 3dca8d8c1982a6d7cc84e3adc022f40b1ebbe84d31ea4076d6256e19a849e2e97e4bc264528e0bab3bf4b10e926151bbb5f7bb3ac3d39709017d5b0ededbb826
50575133
languageName: node
50585134
linkType: hard
50595135

@@ -7907,6 +7983,17 @@ __metadata:
79077983
languageName: node
79087984
linkType: hard
79097985

7986+
"semver@npm:^7.3.8":
7987+
version: 7.3.8
7988+
resolution: "semver@npm:7.3.8"
7989+
dependencies:
7990+
lru-cache: ^6.0.0
7991+
bin:
7992+
semver: bin/semver.js
7993+
checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1
7994+
languageName: node
7995+
linkType: hard
7996+
79107997
"set-blocking@npm:^2.0.0":
79117998
version: 2.0.0
79127999
resolution: "set-blocking@npm:2.0.0"

0 commit comments

Comments
 (0)