Skip to content

Commit 1bc80a5

Browse files
committed
chore: add import ordering and prefer node imports to eslint config
1 parent beba199 commit 1bc80a5

8 files changed

Lines changed: 192 additions & 12 deletions

File tree

apps/TesterIntegrated/App.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
import { useStore } from '@callstack/brownie';
12
import { useEffect } from 'react';
3+
import './BrownfieldStore.brownie';
24
import { StyleSheet, Text, View, Button, TextInput } from 'react-native';
3-
import { useStore } from '@callstack/brownie';
5+
46
import {
57
createNativeStackNavigator,
68
type NativeStackScreenProps,
79
} from '@react-navigation/native-stack';
810
import ReactNativeBrownfield from '@callstack/react-native-brownfield';
911
import { NavigationContainer } from '@react-navigation/native';
10-
import './BrownfieldStore.brownie';
1112

1213
const getRandomValue = () => Math.round(Math.random() * 255);
1314
const getRandomTheme = () => {

apps/TesterIntegrated/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"@react-native/metro-config": "0.82.1",
3131
"@react-native/typescript-config": "0.82.1",
3232
"@types/react": "^19.1.1",
33+
"eslint": "^9.28.0",
3334
"react-native-monorepo-config": "^0.3.1"
3435
},
3536
"engines": {

eslint.config.base.mjs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import prettier from 'eslint-plugin-prettier';
22
import eslintConfigPrettier from 'eslint-config-prettier';
3-
import tseslint from 'typescript-eslint';
3+
import eslintPluginNodeImport from 'eslint-plugin-node-import';
44

55
/**
66
* ESLint base configuration for JS/TS packages in the monorepo
@@ -15,9 +15,11 @@ export default [
1515
'**/build/**',
1616
'**/.turbo/**',
1717
'**/.cxx/**',
18-
'**/ios/**/Pods/**',
18+
'**/Pods/**',
1919
],
2020
},
21+
22+
// below: tseslint integration
2123
...tseslint.configs.recommended,
2224
{
2325
rules: {
@@ -30,6 +32,8 @@ export default [
3032
'@typescript-eslint/no-explicit-any': 'warn',
3133
},
3234
},
35+
36+
// below: prettier integration
3337
eslintConfigPrettier,
3438
{
3539
plugins: {
@@ -39,4 +43,14 @@ export default [
3943
'prettier/prettier': 'error',
4044
},
4145
},
46+
47+
// below: enforce importing of built-in Node.js modules with the 'node:' prefix
48+
{
49+
plugins: {
50+
'node-import': eslintPluginNodeImport,
51+
},
52+
rules: {
53+
'node-import/prefer-node-protocol': 'error',
54+
},
55+
},
4256
];

eslint.config.rn.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import baseEslintConfig from './eslint.config.base.mjs';
99
* @type {import('eslint').Linter.Config[]}
1010
*/
1111
export default [
12+
...fixupConfigRules(flatCompat.extends('@react-native/eslint-config')),
1213
...baseEslintConfig,
14+
1315
{
1416
languageOptions: {
1517
ecmaVersion: 'latest',

eslint.config.ts.mjs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import tseslint from 'typescript-eslint';
2+
3+
import baseEslintConfig from './eslint.config.base.mjs';
4+
5+
/**
6+
* ESLint configuration for JS/TS packages in the monorepo
7+
* @type {import('eslint').Linter.Config[]}
8+
*/
9+
export default [
10+
...baseEslintConfig,
11+
12+
// below: tseslint integration
13+
...tseslint.configs.recommended,
14+
{
15+
rules: {
16+
'@typescript-eslint/no-empty-object-type': [
17+
'error',
18+
{
19+
allowInterfaces: 'always',
20+
},
21+
],
22+
'@typescript-eslint/no-explicit-any': 'warn',
23+
},
24+
},
25+
];

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"babel-plugin-module-resolver": "5.0.2",
4343
"eslint": "^9.28.0",
4444
"eslint-config-prettier": "^10.1.8",
45+
"eslint-plugin-node-import": "^1.0.5",
4546
"eslint-plugin-prettier": "^5.4.0",
4647
"eslint-plugin-react": "^7.37.5",
4748
"eslint-plugin-react-hooks": "^5.2.0",

turbo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"tasks": {
44
"lint": {
55
"dependsOn": ["build:brownfield"],
6-
"inputs": ["**/*.ts", "**/*.tsx", "**/*.js"]
6+
"inputs": ["**/*.ts", "**/*.tsx", "**/*.js", "**/eslint.config.*"]
77
},
88
"typecheck": {
99
"dependsOn": ["build:brownfield"],

yarn.lock

Lines changed: 143 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,6 +1779,8 @@ __metadata:
17791779
babel-plugin-module-resolver: "npm:5.0.2"
17801780
eslint: "npm:^9.28.0"
17811781
eslint-config-prettier: "npm:^10.1.8"
1782+
eslint-plugin-import: "npm:^2.32.0"
1783+
eslint-plugin-node-import: "npm:^1.0.5"
17821784
eslint-plugin-prettier: "npm:^5.4.0"
17831785
eslint-plugin-react: "npm:^7.37.5"
17841786
eslint-plugin-react-hooks: "npm:^5.2.0"
@@ -1842,6 +1844,7 @@ __metadata:
18421844
"@react-navigation/native": "npm:^7.0.15"
18431845
"@react-navigation/native-stack": "npm:^7.2.1"
18441846
"@types/react": "npm:^19.1.1"
1847+
eslint: "npm:^9.28.0"
18451848
react: "npm:19.1.1"
18461849
react-native: "npm:0.82.1"
18471850
react-native-monorepo-config: "npm:^0.3.1"
@@ -4630,6 +4633,13 @@ __metadata:
46304633
languageName: node
46314634
linkType: hard
46324635

4636+
"@rtsao/scc@npm:^1.1.0":
4637+
version: 1.1.0
4638+
resolution: "@rtsao/scc@npm:1.1.0"
4639+
checksum: 10/17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01
4640+
languageName: node
4641+
linkType: hard
4642+
46334643
"@selderee/plugin-htmlparser2@npm:^0.11.0":
46344644
version: 0.11.0
46354645
resolution: "@selderee/plugin-htmlparser2@npm:0.11.0"
@@ -5010,6 +5020,13 @@ __metadata:
50105020
languageName: node
50115021
linkType: hard
50125022

5023+
"@types/json5@npm:^0.0.29":
5024+
version: 0.0.29
5025+
resolution: "@types/json5@npm:0.0.29"
5026+
checksum: 10/4e5aed58cabb2bbf6f725da13421aa50a49abb6bc17bfab6c31b8774b073fa7b50d557c61f961a09a85f6056151190f8ac95f13f5b48136ba5841f7d4484ec56
5027+
languageName: node
5028+
linkType: hard
5029+
50135030
"@types/lodash.clonedeep@npm:^4.5.9":
50145031
version: 4.5.9
50155032
resolution: "@types/lodash.clonedeep@npm:4.5.9"
@@ -5707,7 +5724,7 @@ __metadata:
57075724
languageName: node
57085725
linkType: hard
57095726

5710-
"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8":
5727+
"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9":
57115728
version: 3.1.9
57125729
resolution: "array-includes@npm:3.1.9"
57135730
dependencies:
@@ -5744,7 +5761,22 @@ __metadata:
57445761
languageName: node
57455762
linkType: hard
57465763

5747-
"array.prototype.flat@npm:^1.3.1":
5764+
"array.prototype.findlastindex@npm:^1.2.6":
5765+
version: 1.2.6
5766+
resolution: "array.prototype.findlastindex@npm:1.2.6"
5767+
dependencies:
5768+
call-bind: "npm:^1.0.8"
5769+
call-bound: "npm:^1.0.4"
5770+
define-properties: "npm:^1.2.1"
5771+
es-abstract: "npm:^1.23.9"
5772+
es-errors: "npm:^1.3.0"
5773+
es-object-atoms: "npm:^1.1.1"
5774+
es-shim-unscopables: "npm:^1.1.0"
5775+
checksum: 10/5ddb6420e820bef6ddfdcc08ce780d0fd5e627e97457919c27e32359916de5a11ce12f7c55073555e503856618eaaa70845d6ca11dcba724766f38eb1c22f7a2
5776+
languageName: node
5777+
linkType: hard
5778+
5779+
"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3":
57485780
version: 1.3.3
57495781
resolution: "array.prototype.flat@npm:1.3.3"
57505782
dependencies:
@@ -6908,6 +6940,15 @@ __metadata:
69086940
languageName: node
69096941
linkType: hard
69106942

6943+
"debug@npm:^3.2.7":
6944+
version: 3.2.7
6945+
resolution: "debug@npm:3.2.7"
6946+
dependencies:
6947+
ms: "npm:^2.1.1"
6948+
checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639
6949+
languageName: node
6950+
linkType: hard
6951+
69116952
"decamelize@npm:^1.2.0":
69126953
version: 1.2.0
69136954
resolution: "decamelize@npm:1.2.0"
@@ -7439,7 +7480,7 @@ __metadata:
74397480
languageName: node
74407481
linkType: hard
74417482

7442-
"es-shim-unscopables@npm:^1.0.2":
7483+
"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0":
74437484
version: 1.1.0
74447485
resolution: "es-shim-unscopables@npm:1.1.0"
74457486
dependencies:
@@ -7636,6 +7677,29 @@ __metadata:
76367677
languageName: node
76377678
linkType: hard
76387679

7680+
"eslint-import-resolver-node@npm:^0.3.9":
7681+
version: 0.3.9
7682+
resolution: "eslint-import-resolver-node@npm:0.3.9"
7683+
dependencies:
7684+
debug: "npm:^3.2.7"
7685+
is-core-module: "npm:^2.13.0"
7686+
resolve: "npm:^1.22.4"
7687+
checksum: 10/d52e08e1d96cf630957272e4f2644dcfb531e49dcfd1edd2e07e43369eb2ec7a7d4423d417beee613201206ff2efa4eb9a582b5825ee28802fc7c71fcd53ca83
7688+
languageName: node
7689+
linkType: hard
7690+
7691+
"eslint-module-utils@npm:^2.12.1":
7692+
version: 2.12.1
7693+
resolution: "eslint-module-utils@npm:2.12.1"
7694+
dependencies:
7695+
debug: "npm:^3.2.7"
7696+
peerDependenciesMeta:
7697+
eslint:
7698+
optional: true
7699+
checksum: 10/bd25d6610ec3abaa50e8f1beb0119541562bbb8dd02c035c7e887976fe1e0c5dd8175f4607ca8d86d1146df24d52a071bd3d1dd329f6902bd58df805a8ca16d3
7700+
languageName: node
7701+
linkType: hard
7702+
76397703
"eslint-plugin-eslint-comments@npm:^3.2.0":
76407704
version: 3.2.0
76417705
resolution: "eslint-plugin-eslint-comments@npm:3.2.0"
@@ -7661,6 +7725,35 @@ __metadata:
76617725
languageName: node
76627726
linkType: hard
76637727

7728+
"eslint-plugin-import@npm:^2.32.0":
7729+
version: 2.32.0
7730+
resolution: "eslint-plugin-import@npm:2.32.0"
7731+
dependencies:
7732+
"@rtsao/scc": "npm:^1.1.0"
7733+
array-includes: "npm:^3.1.9"
7734+
array.prototype.findlastindex: "npm:^1.2.6"
7735+
array.prototype.flat: "npm:^1.3.3"
7736+
array.prototype.flatmap: "npm:^1.3.3"
7737+
debug: "npm:^3.2.7"
7738+
doctrine: "npm:^2.1.0"
7739+
eslint-import-resolver-node: "npm:^0.3.9"
7740+
eslint-module-utils: "npm:^2.12.1"
7741+
hasown: "npm:^2.0.2"
7742+
is-core-module: "npm:^2.16.1"
7743+
is-glob: "npm:^4.0.3"
7744+
minimatch: "npm:^3.1.2"
7745+
object.fromentries: "npm:^2.0.8"
7746+
object.groupby: "npm:^1.0.3"
7747+
object.values: "npm:^1.2.1"
7748+
semver: "npm:^6.3.1"
7749+
string.prototype.trimend: "npm:^1.0.9"
7750+
tsconfig-paths: "npm:^3.15.0"
7751+
peerDependencies:
7752+
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
7753+
checksum: 10/1bacf4967e9ebf99e12176a795f0d6d3a87d1c9a030c2207f27b267e10d96a1220be2647504c7fc13ab543cdf13ffef4b8f5620e0447032dba4ff0d3922f7c9e
7754+
languageName: node
7755+
linkType: hard
7756+
76647757
"eslint-plugin-jest@npm:^29.0.1":
76657758
version: 29.12.1
76667759
resolution: "eslint-plugin-jest@npm:29.12.1"
@@ -7679,6 +7772,15 @@ __metadata:
76797772
languageName: node
76807773
linkType: hard
76817774

7775+
"eslint-plugin-node-import@npm:^1.0.5":
7776+
version: 1.0.5
7777+
resolution: "eslint-plugin-node-import@npm:1.0.5"
7778+
peerDependencies:
7779+
eslint: ">=7"
7780+
checksum: 10/d77c03871c3397d09db18d5242030b8490769077a488d4267c6c3f38ceffb9b86d162b32c8d5fbafe92ff4bc7668a1a5971f2020e6edab38c37b0a2e6155a591
7781+
languageName: node
7782+
linkType: hard
7783+
76827784
"eslint-plugin-prettier@npm:^5.4.0":
76837785
version: 5.5.4
76847786
resolution: "eslint-plugin-prettier@npm:5.5.4"
@@ -10527,6 +10629,17 @@ __metadata:
1052710629
languageName: node
1052810630
linkType: hard
1052910631

10632+
"json5@npm:^1.0.2":
10633+
version: 1.0.2
10634+
resolution: "json5@npm:1.0.2"
10635+
dependencies:
10636+
minimist: "npm:^1.2.0"
10637+
bin:
10638+
json5: lib/cli.js
10639+
checksum: 10/a78d812dbbd5642c4f637dd130954acfd231b074965871c3e28a5bbd571f099d623ecf9161f1960c4ddf68e0cc98dee8bebfdb94a71ad4551f85a1afc94b63f6
10640+
languageName: node
10641+
linkType: hard
10642+
1053010643
"json5@npm:^2.2.1, json5@npm:^2.2.3":
1053110644
version: 2.2.3
1053210645
resolution: "json5@npm:2.2.3"
@@ -12084,7 +12197,7 @@ __metadata:
1208412197
languageName: node
1208512198
linkType: hard
1208612199

12087-
"minimist@npm:^1.2.8":
12200+
"minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
1208812201
version: 1.2.8
1208912202
resolution: "minimist@npm:1.2.8"
1209012203
checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f
@@ -12197,7 +12310,7 @@ __metadata:
1219712310
languageName: node
1219812311
linkType: hard
1219912312

12200-
"ms@npm:2.1.3, ms@npm:^2.1.3":
12313+
"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3":
1220112314
version: 2.1.3
1220212315
resolution: "ms@npm:2.1.3"
1220312316
checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
@@ -12439,6 +12552,17 @@ __metadata:
1243912552
languageName: node
1244012553
linkType: hard
1244112554

12555+
"object.groupby@npm:^1.0.3":
12556+
version: 1.0.3
12557+
resolution: "object.groupby@npm:1.0.3"
12558+
dependencies:
12559+
call-bind: "npm:^1.0.7"
12560+
define-properties: "npm:^1.2.1"
12561+
es-abstract: "npm:^1.23.2"
12562+
checksum: 10/44cb86dd2c660434be65f7585c54b62f0425b0c96b5c948d2756be253ef06737da7e68d7106e35506ce4a44d16aa85a413d11c5034eb7ce5579ec28752eb42d0
12563+
languageName: node
12564+
linkType: hard
12565+
1244212566
"object.values@npm:^1.1.6, object.values@npm:^1.2.1":
1244312567
version: 1.2.1
1244412568
resolution: "object.values@npm:1.2.1"
@@ -13825,7 +13949,7 @@ __metadata:
1382513949
languageName: node
1382613950
linkType: hard
1382713951

13828-
"resolve@npm:^1.20.0, resolve@npm:^1.22.10, resolve@npm:^1.22.8":
13952+
"resolve@npm:^1.20.0, resolve@npm:^1.22.10, resolve@npm:^1.22.4, resolve@npm:^1.22.8":
1382913953
version: 1.22.11
1383013954
resolution: "resolve@npm:1.22.11"
1383113955
dependencies:
@@ -13851,7 +13975,7 @@ __metadata:
1385113975
languageName: node
1385213976
linkType: hard
1385313977

13854-
"resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin<compat/resolve>":
13978+
"resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin<compat/resolve>":
1385513979
version: 1.22.11
1385613980
resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin<compat/resolve>::version=1.22.11&hash=c3c19d"
1385713981
dependencies:
@@ -15070,6 +15194,18 @@ __metadata:
1507015194
languageName: node
1507115195
linkType: hard
1507215196

15197+
"tsconfig-paths@npm:^3.15.0":
15198+
version: 3.15.0
15199+
resolution: "tsconfig-paths@npm:3.15.0"
15200+
dependencies:
15201+
"@types/json5": "npm:^0.0.29"
15202+
json5: "npm:^1.0.2"
15203+
minimist: "npm:^1.2.6"
15204+
strip-bom: "npm:^3.0.0"
15205+
checksum: 10/2041beaedc6c271fc3bedd12e0da0cc553e65d030d4ff26044b771fac5752d0460944c0b5e680f670c2868c95c664a256cec960ae528888db6ded83524e33a14
15206+
languageName: node
15207+
linkType: hard
15208+
1507315209
"tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.8.0":
1507415210
version: 2.8.1
1507515211
resolution: "tslib@npm:2.8.1"

0 commit comments

Comments
 (0)