Skip to content

Commit 6afd299

Browse files
authored
feat(repo): implement biome for formatting and lint and remove eslint
2 parents f3a263b + 5e808f1 commit 6afd299

30 files changed

+430
-328
lines changed

.vscode/extensions.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"recommendations": [
3+
"biomejs.biome"
4+
]
5+
}

.vscode/settings.json

+23-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
{
2-
"eslint.validate": [
3-
{
4-
"language":"vue",
5-
"autoFix":true
6-
},
7-
{
8-
"language":"html",
9-
"autoFix":true
10-
},
11-
{
12-
"language":"javascript",
13-
"autoFix":true
14-
},
15-
{
16-
"language":"typescript",
17-
"autoFix":true
18-
}
19-
],
20-
"eslint.alwaysShowStatus": true,
21-
"eslint.workingDirectories": [
22-
"./client",
23-
"./server"
24-
],
252
"editor.useTabStops": false,
263
"editor.tabSize": 2,
274
"editor.insertSpaces": true,
285
"git.ignoreLimitWarning": true,
29-
"god.tsconfig": "./server/tsconfig.json",
30-
}
6+
"[typescript]": {
7+
"editor.defaultFormatter": "biomejs.biome"
8+
},
9+
"[json]": {
10+
"editor.defaultFormatter": "biomejs.biome"
11+
},
12+
"[typescriptreact]": {
13+
"editor.defaultFormatter": "biomejs.biome"
14+
},
15+
"[javascript]": {
16+
"editor.defaultFormatter": "biomejs.biome"
17+
},
18+
"editor.defaultFormatter": "biomejs.biome",
19+
"editor.codeActionsOnSave": {
20+
"quickfix.biome": "explicit",
21+
"source.organizeImports.biome": "explicit"
22+
},
23+
"editor.formatOnPaste": true,
24+
"editor.formatOnSave": true,
25+
"biome.rename": true,
26+
"biome_lsp.trace.server": "messages"
27+
}
28+

biome.json

+234
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
{
2+
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
3+
"vcs": {
4+
"clientKind": "git",
5+
"enabled": true,
6+
"useIgnoreFile": true,
7+
"defaultBranch": "master"
8+
},
9+
"formatter": {
10+
"enabled": true,
11+
"indentStyle": "space",
12+
"indentWidth": 2,
13+
"lineEnding": "lf",
14+
"ignore": [
15+
"apps/**/*.min.js",
16+
"apps/**/*.min.css",
17+
"apps/**/*-lock.yaml",
18+
"**/*.lock.json",
19+
"**/build/**"
20+
]
21+
},
22+
"organizeImports": { "enabled": true },
23+
"linter": {
24+
"enabled": true,
25+
"rules": {
26+
"recommended": false,
27+
"complexity": {
28+
"noBannedTypes": "warn",
29+
"noExtraBooleanCast": "error",
30+
"noMultipleSpacesInRegularExpressionLiterals": "error",
31+
"noUselessCatch": "error",
32+
"noUselessConstructor": "error",
33+
"noUselessLabel": "error",
34+
"noUselessLoneBlockStatements": "error",
35+
"noUselessRename": "error",
36+
"noUselessTernary": "error",
37+
"noVoid": "error",
38+
"noWith": "error",
39+
"useLiteralKeys": "error",
40+
"useRegexLiterals": "error"
41+
},
42+
"correctness": {
43+
"noConstAssign": "error",
44+
"noConstantCondition": "warn",
45+
"noConstructorReturn": "error",
46+
"noEmptyCharacterClassInRegex": "error",
47+
"noEmptyPattern": "error",
48+
"noGlobalObjectCalls": "error",
49+
"noInnerDeclarations": "error",
50+
"noInvalidConstructorSuper": "error",
51+
"noInvalidUseBeforeDeclaration": "error",
52+
"noNewSymbol": "error",
53+
"noNonoctalDecimalEscape": "error",
54+
"noPrecisionLoss": "error",
55+
"noSelfAssign": "error",
56+
"noSetterReturn": "error",
57+
"noSwitchDeclarations": "error",
58+
"noUndeclaredVariables": "error",
59+
"noUnreachable": "error",
60+
"noUnreachableSuper": "error",
61+
"noUnsafeFinally": "error",
62+
"noUnsafeOptionalChaining": "error",
63+
"noUnusedImports": "off",
64+
"noUnusedLabels": "error",
65+
"noUnusedPrivateClassMembers": "off",
66+
"noUnusedVariables": "error",
67+
"useExhaustiveDependencies": "warn",
68+
"useIsNan": "error",
69+
"useValidForDirection": "error",
70+
"useYield": "error"
71+
},
72+
"security": { "noGlobalEval": "error" },
73+
"style": {
74+
"noArguments": "error",
75+
"noCommaOperator": "error",
76+
"noDefaultExport": "off",
77+
"noNegationElse": "off",
78+
"noParameterAssign": "error",
79+
"noRestrictedGlobals": {
80+
"level": "error",
81+
"options": {
82+
"deniedGlobals": [
83+
"isFinite",
84+
"isNaN",
85+
"addEventListener",
86+
"blur",
87+
"close",
88+
"closed",
89+
"confirm",
90+
"defaultStatus",
91+
"defaultstatus",
92+
"event",
93+
"external",
94+
"find",
95+
"focus",
96+
"frameElement",
97+
"frames",
98+
"history",
99+
"innerHeight",
100+
"innerWidth",
101+
"length",
102+
"location",
103+
"locationbar",
104+
"menubar",
105+
"moveBy",
106+
"moveTo",
107+
"name",
108+
"onblur",
109+
"onerror",
110+
"onfocus",
111+
"onload",
112+
"onresize",
113+
"onunload",
114+
"open",
115+
"opener",
116+
"opera",
117+
"outerHeight",
118+
"outerWidth",
119+
"pageXOffset",
120+
"pageYOffset",
121+
"parent",
122+
"print",
123+
"removeEventListener",
124+
"resizeBy",
125+
"resizeTo",
126+
"screen",
127+
"screenLeft",
128+
"screenTop",
129+
"screenX",
130+
"screenY",
131+
"scroll",
132+
"scrollbars",
133+
"scrollBy",
134+
"scrollTo",
135+
"scrollX",
136+
"scrollY",
137+
"self",
138+
"status",
139+
"statusbar",
140+
"stop",
141+
"toolbar",
142+
"top"
143+
]
144+
}
145+
},
146+
"noVar": "error",
147+
"useBlockStatements": "error",
148+
"useCollapsedElseIf": "error",
149+
"useConst": "error",
150+
"useDefaultParameterLast": "error",
151+
"useExponentiationOperator": "error",
152+
"useImportType": "off",
153+
"useNumericLiterals": "error",
154+
"useShorthandAssign": "error",
155+
"useSingleVarDeclarator": "error",
156+
"useTemplate": "error"
157+
},
158+
"suspicious": {
159+
"noAsyncPromiseExecutor": "error",
160+
"noCatchAssign": "error",
161+
"noClassAssign": "error",
162+
"noCompareNegZero": "error",
163+
"noControlCharactersInRegex": "error",
164+
"noDebugger": "error",
165+
"noDoubleEquals": "error",
166+
"noDuplicateCase": "error",
167+
"noDuplicateClassMembers": "error",
168+
"noDuplicateObjectKeys": "error",
169+
"noDuplicateParameters": "error",
170+
"noEmptyBlockStatements": "error",
171+
"noExplicitAny": "warn",
172+
"noFallthroughSwitchClause": "error",
173+
"noFunctionAssign": "error",
174+
"noGlobalAssign": "error",
175+
"noImportAssign": "error",
176+
"noLabelVar": "error",
177+
"noMisleadingCharacterClass": "error",
178+
"noPrototypeBuiltins": "error",
179+
"noRedeclare": "error",
180+
"noSelfCompare": "error",
181+
"noShadowRestrictedNames": "error",
182+
"noUnsafeNegation": "error",
183+
"useAwait": "off",
184+
"useDefaultSwitchClauseLast": "error",
185+
"useGetterReturn": "error",
186+
"useValidTypeof": "error"
187+
}
188+
}
189+
},
190+
"javascript": {
191+
"formatter": {
192+
"trailingComma": "all",
193+
"semicolons": "always",
194+
"enabled": true,
195+
"lineWidth": 120,
196+
"quoteStyle": "single"
197+
},
198+
"globals": ["Atomics", "SharedArrayBuffer"]
199+
},
200+
"json": {
201+
"parser": { "allowComments": true },
202+
"formatter": { "enabled": true, "lineWidth": 120 }
203+
},
204+
"overrides": [
205+
{
206+
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
207+
"linter": {
208+
"rules": {
209+
"correctness": {
210+
"noConstAssign": "off",
211+
"noGlobalObjectCalls": "off",
212+
"noInvalidConstructorSuper": "off",
213+
"noNewSymbol": "off",
214+
"noSetterReturn": "off",
215+
"noUndeclaredVariables": "off",
216+
"noUnreachable": "off",
217+
"noUnreachableSuper": "off"
218+
},
219+
"suspicious": {
220+
"noDuplicateClassMembers": "off",
221+
"noDuplicateObjectKeys": "off",
222+
"noDuplicateParameters": "off",
223+
"noFunctionAssign": "off",
224+
"noImportAssign": "off",
225+
"noRedeclare": "off",
226+
"noUnsafeNegation": "off",
227+
"useGetterReturn": "off",
228+
"useValidTypeof": "off"
229+
}
230+
}
231+
}
232+
}
233+
]
234+
}

package.json

+23-17
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,43 @@
11
{
22
"name": "bigcapital-monorepo",
33
"private": true,
4+
"workspaces": [
5+
"packages/*"
6+
],
47
"scripts": {
5-
"dev": "lerna run dev",
68
"build": "lerna run build",
7-
"dev:webapp": "lerna run dev --scope \"@bigcapital/webapp\"",
8-
"dev:website": "lerna run dev --scope \"@bigcapital/website\"",
9+
"build:server": "lerna run build --scope \"@bigcapital/server\"",
910
"build:webapp": "lerna run build --scope \"@bigcapital/webapp\"",
11+
"dev": "lerna run dev",
1012
"dev:server": "lerna run dev --scope \"@bigcapital/server\"",
11-
"build:server": "lerna run build --scope \"@bigcapital/server\"",
13+
"dev:webapp": "lerna run dev --scope \"@bigcapital/webapp\"",
14+
"dev:website": "lerna run dev --scope \"@bigcapital/website\"",
15+
"format": "lerna run format --scope \"@bigcapital/webapp\" --scope \"@bigcapital/server\" --scope \"@bigcapital/website\"",
16+
"lint": "lerna run lint --scope \"@bigcapital/webapp\" --scope \"@bigcapital/server\" --scope \"@bigcapital/website\"",
17+
"prepare": "husky install",
1218
"serve:server": "lerna run serve --scope \"@bigcapital/server\"",
13-
"test:e2e": "playwright test",
14-
"prepare": "husky install"
19+
"test:e2e": "playwright test"
20+
},
21+
"husky": {
22+
"hooks": {
23+
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
24+
}
1525
},
16-
"workspaces": [
17-
"packages/*"
18-
],
1926
"devDependencies": {
27+
"@biomejs/biome": "^1.7.3",
2028
"@commitlint/cli": "^17.4.2",
2129
"@commitlint/config-conventional": "^17.4.2",
2230
"@commitlint/config-lerna-scopes": "^17.4.2",
2331
"@faker-js/faker": "^8.0.2",
2432
"@playwright/test": "^1.32.3",
2533
"husky": "^8.0.3",
26-
"lerna": "^8.1.2",
27-
"pnpm": "^9.0.5"
34+
"lerna": "^8.1.2"
2835
},
2936
"engines": {
30-
"node": "16.x || 17.x || 18.x"
37+
"bun": ">=1",
38+
"node": "please-use-bun",
39+
"pnpm": "please-use-bun",
40+
"yarn": "please-use-bun"
3141
},
32-
"husky": {
33-
"hooks": {
34-
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
35-
}
36-
}
42+
"engineStrict": true
3743
}

packages/server/.eslintrc.js

-34
This file was deleted.

0 commit comments

Comments
 (0)