@solvro/config 2.0.0-beta.2 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/adonis-HMBH6E55.js +56 -0
- package/dist/adonis-HMBH6E55.js.map +1 -0
- package/dist/chunk-AQ5RXFKK.js +34 -0
- package/dist/chunk-AQ5RXFKK.js.map +1 -0
- package/dist/chunk-DHQ2VVRM.js +86 -0
- package/dist/chunk-DHQ2VVRM.js.map +1 -0
- package/dist/chunk-HM3MY7J3.js +22 -0
- package/dist/chunk-HM3MY7J3.js.map +1 -0
- package/dist/chunk-J5OUMHDO.js +44 -0
- package/dist/chunk-J5OUMHDO.js.map +1 -0
- package/dist/chunk-OEFF22F3.js +189 -0
- package/dist/chunk-OEFF22F3.js.map +1 -0
- package/dist/cli/index.js +416 -145
- package/dist/cli/index.js.map +1 -1
- package/dist/commitlint/index.js +5 -0
- package/dist/commitlint/index.js.map +1 -1
- package/dist/eslint/index.js +64 -510
- package/dist/eslint/index.js.map +1 -1
- package/dist/nestjs-JMOHWBQG.js +57 -0
- package/dist/nestjs-JMOHWBQG.js.map +1 -0
- package/dist/node-S7MI3CIK.js +27 -0
- package/dist/node-S7MI3CIK.js.map +1 -0
- package/dist/prettier/index.js +5 -0
- package/dist/prettier/index.js.map +1 -1
- package/dist/react-4BBIFFXI.js +2133 -0
- package/dist/react-4BBIFFXI.js.map +1 -0
- package/package.json +54 -47
package/README.md
CHANGED
@@ -1,15 +1,45 @@
|
|
1
1
|
# @solvro/config
|
2
2
|
|
3
|
+
[](https://github.com/Solvro/lib-web-solvro-config/actions/workflows/ci.yml)
|
4
|
+
[](https://github.com/Solvro/lib-web-solvro-config/actions/workflows/integration-tests.yml)
|
5
|
+
|
3
6
|
## Instalacja
|
4
7
|
|
5
8
|
Wszystkie konfiguracje są zawarte w jednej paczce `@solvro/config`. Aby zainstalować:
|
6
9
|
|
10
|
+
### Tryb interaktywny (zalecany)
|
11
|
+
|
7
12
|
```sh
|
8
13
|
npx @solvro/config
|
9
14
|
```
|
10
15
|
|
11
16
|
I przeklikaj się przez kreatora, polecam klikać cały czas enter, to dostaniesz zalecane konfiguracje. Można uruchamiać pare razy :3
|
12
17
|
|
18
|
+
### Tryb nieinteraktywny (z flagami CLI)
|
19
|
+
|
20
|
+
Jeśli pracujesz w środowisku bez interaktywnej powłoki (np. CI/CD), możesz użyć flag CLI:
|
21
|
+
|
22
|
+
```sh
|
23
|
+
# Zainstaluj wszystkie narzędzia
|
24
|
+
npx @solvro/config --all
|
25
|
+
|
26
|
+
# Zainstaluj wybrane narzędzia
|
27
|
+
npx @solvro/config --eslint --prettier --commitlint
|
28
|
+
|
29
|
+
# Wymuś instalację bez sprawdzania Git
|
30
|
+
npx @solvro/config --force --all
|
31
|
+
```
|
32
|
+
|
33
|
+
#### Dostępne flagi
|
34
|
+
|
35
|
+
- `--all`, `-a` - zainstaluj wszystkie narzędzia (ESLint, Prettier, GitHub Actions, Commitlint)
|
36
|
+
- `--eslint` - zainstaluj konfigurację ESLint
|
37
|
+
- `--prettier` - zainstaluj konfigurację Prettier
|
38
|
+
- `--gh-action` - zainstaluj GitHub Actions
|
39
|
+
- `--commitlint` - zainstaluj konfigurację Commitlint
|
40
|
+
- `--force`, `-f` - pomiń sprawdzenie czy Git jest czysty
|
41
|
+
- `--help` - wyświetl pomoc
|
42
|
+
|
13
43
|
## Prettier
|
14
44
|
|
15
45
|
Aby użyć configu dodaj to pole w `package.json`:
|
@@ -40,3 +70,36 @@ export default solvro();
|
|
40
70
|
```
|
41
71
|
|
42
72
|
Config sam wykryje czy używasz NextJSa czy Adonisa.
|
73
|
+
|
74
|
+
## Development & Testing
|
75
|
+
|
76
|
+
### Integration Tests
|
77
|
+
|
78
|
+
Projekt zawiera kompleksowe testy integracyjne, które testują instalację i działanie konfiguracji na świeżej aplikacji Next.js:
|
79
|
+
|
80
|
+
```sh
|
81
|
+
# Uruchom testy integracyjne lokalnie
|
82
|
+
npm run test:integration
|
83
|
+
|
84
|
+
# Lub bezpośrednio
|
85
|
+
./scripts/test-integration.sh
|
86
|
+
```
|
87
|
+
|
88
|
+
### Continuous Integration
|
89
|
+
|
90
|
+
Testy integracyjne są automatycznie uruchamiane w CI/CD dla:
|
91
|
+
|
92
|
+
- Różnych wersji Node.js (20, 22)
|
93
|
+
- Różnych wersji Next.js (latest, canary)
|
94
|
+
- Testowania poszczególnych narzędzi (ESLint, Prettier, Commitlint, GitHub Actions)
|
95
|
+
- Warunków błędów i edge cases
|
96
|
+
|
97
|
+
Testy obejmują:
|
98
|
+
|
99
|
+
- ✅ Tworzenie świeżej aplikacji Next.js
|
100
|
+
- ✅ Instalację @solvro/config
|
101
|
+
- ✅ Konfigurację wszystkich narzędzi
|
102
|
+
- ✅ Uruchamianie ESLint i Prettier
|
103
|
+
- ✅ Weryfikację formatowania kodu
|
104
|
+
- ✅ Build aplikacji Next.js
|
105
|
+
- ✅ Testowanie warunków błędów
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import {
|
2
|
+
node
|
3
|
+
} from "./chunk-AQ5RXFKK.js";
|
4
|
+
import {
|
5
|
+
imports
|
6
|
+
} from "./chunk-DHQ2VVRM.js";
|
7
|
+
import "./chunk-HM3MY7J3.js";
|
8
|
+
import {
|
9
|
+
init_esm_shims
|
10
|
+
} from "./chunk-J5OUMHDO.js";
|
11
|
+
|
12
|
+
// src/eslint/presets/adonis.ts
|
13
|
+
init_esm_shims();
|
14
|
+
import { configApp } from "@adonisjs/eslint-config";
|
15
|
+
var adonisPreset = () => {
|
16
|
+
const builtinAdonisConfig = configApp();
|
17
|
+
return [
|
18
|
+
...builtinAdonisConfig,
|
19
|
+
...node(),
|
20
|
+
...imports(),
|
21
|
+
{
|
22
|
+
rules: {
|
23
|
+
"@typescript-eslint/naming-convention": [
|
24
|
+
"error",
|
25
|
+
{
|
26
|
+
selector: ["enum", "enumMember", "class", "interface", "typeLike"],
|
27
|
+
format: ["PascalCase"],
|
28
|
+
leadingUnderscore: "allow",
|
29
|
+
trailingUnderscore: "allow"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
selector: [
|
33
|
+
"classProperty",
|
34
|
+
"classMethod",
|
35
|
+
"method",
|
36
|
+
"variableLike"
|
37
|
+
],
|
38
|
+
format: ["camelCase"],
|
39
|
+
leadingUnderscore: "allow",
|
40
|
+
trailingUnderscore: "allow"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
selector: "variable",
|
44
|
+
format: ["camelCase", "UPPER_CASE", "PascalCase"],
|
45
|
+
leadingUnderscore: "allow",
|
46
|
+
trailingUnderscore: "allow"
|
47
|
+
}
|
48
|
+
]
|
49
|
+
}
|
50
|
+
}
|
51
|
+
];
|
52
|
+
};
|
53
|
+
export {
|
54
|
+
adonisPreset
|
55
|
+
};
|
56
|
+
//# sourceMappingURL=adonis-HMBH6E55.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/presets/adonis.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { configApp } from \"@adonisjs/eslint-config\";\n\nimport { imports } from \"../configs/imports\";\nimport { node } from \"../configs/node\";\n\nexport const adonisPreset = (): ConfigWithExtends[] => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const builtinAdonisConfig: ConfigWithExtends[] = configApp();\n\n return [\n ...builtinAdonisConfig,\n ...node(),\n ...imports(),\n {\n rules: {\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: [\"enum\", \"enumMember\", \"class\", \"interface\", \"typeLike\"],\n format: [\"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: [\n \"classProperty\",\n \"classMethod\",\n \"method\",\n \"variableLike\",\n ],\n format: [\"camelCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: \"variable\",\n format: [\"camelCase\", \"UPPER_CASE\", \"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n ],\n },\n },\n ];\n};\n"],"mappings":";;;;;;;;;;;;AAAA;AAEA,SAAS,iBAAiB;AAKnB,IAAM,eAAe,MAA2B;AAErD,QAAM,sBAA2C,UAAU;AAE3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,KAAK;AAAA,IACR,GAAG,QAAQ;AAAA,IACX;AAAA,MACE,OAAO;AAAA,QACL,wCAAwC;AAAA,UACtC;AAAA,UACA;AAAA,YACE,UAAU,CAAC,QAAQ,cAAc,SAAS,aAAa,UAAU;AAAA,YACjE,QAAQ,CAAC,YAAY;AAAA,YACrB,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ,CAAC,WAAW;AAAA,YACpB,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV,QAAQ,CAAC,aAAa,cAAc,YAAY;AAAA,YAChD,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import {
|
2
|
+
default4 as default2
|
3
|
+
} from "./chunk-HM3MY7J3.js";
|
4
|
+
import {
|
5
|
+
init_esm_shims
|
6
|
+
} from "./chunk-J5OUMHDO.js";
|
7
|
+
|
8
|
+
// src/eslint/configs/node.ts
|
9
|
+
init_esm_shims();
|
10
|
+
function node() {
|
11
|
+
return [
|
12
|
+
{
|
13
|
+
name: "solvro/node/rules",
|
14
|
+
plugins: {
|
15
|
+
node: default2
|
16
|
+
},
|
17
|
+
rules: {
|
18
|
+
"node/handle-callback-err": ["error", "^(err|error)$"],
|
19
|
+
"node/no-deprecated-api": "error",
|
20
|
+
"node/no-exports-assign": "error",
|
21
|
+
"node/no-new-require": "error",
|
22
|
+
"node/no-path-concat": "error",
|
23
|
+
"node/prefer-global/buffer": ["error"],
|
24
|
+
"node/prefer-global/process": ["error"],
|
25
|
+
"node/process-exit-as-throw": "error"
|
26
|
+
}
|
27
|
+
}
|
28
|
+
];
|
29
|
+
}
|
30
|
+
|
31
|
+
export {
|
32
|
+
node
|
33
|
+
};
|
34
|
+
//# sourceMappingURL=chunk-AQ5RXFKK.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/configs/node.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginNode } from \"../plugins\";\n\nexport function node(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/node/rules\",\n plugins: {\n node: pluginNode,\n },\n rules: {\n \"node/handle-callback-err\": [\"error\", \"^(err|error)$\"],\n \"node/no-deprecated-api\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-new-require\": \"error\",\n \"node/no-path-concat\": \"error\",\n \"node/prefer-global/buffer\": [\"error\"],\n \"node/prefer-global/process\": [\"error\"],\n \"node/process-exit-as-throw\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;;;;AAAA;AAIO,SAAS,OAA4B;AAC1C,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,QACP,MAAMA;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,4BAA4B,CAAC,SAAS,eAAe;AAAA,QACrD,0BAA0B;AAAA,QAC1B,0BAA0B;AAAA,QAC1B,uBAAuB;AAAA,QACvB,uBAAuB;AAAA,QACvB,6BAA6B,CAAC,OAAO;AAAA,QACrC,8BAA8B,CAAC,OAAO;AAAA,QACtC,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACF;","names":["default"]}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import {
|
2
|
+
default2,
|
3
|
+
default3
|
4
|
+
} from "./chunk-HM3MY7J3.js";
|
5
|
+
import {
|
6
|
+
init_esm_shims
|
7
|
+
} from "./chunk-J5OUMHDO.js";
|
8
|
+
|
9
|
+
// src/eslint/configs/imports.ts
|
10
|
+
init_esm_shims();
|
11
|
+
var forbiddenUiLibraries = [
|
12
|
+
"@headlessui/react",
|
13
|
+
"@mui/material",
|
14
|
+
"@chakra-ui/react",
|
15
|
+
"@chakra-ui/core",
|
16
|
+
"@nextui-org/react",
|
17
|
+
"react-bootstrap",
|
18
|
+
"antd"
|
19
|
+
];
|
20
|
+
function imports({
|
21
|
+
forbidDefaultExport = true
|
22
|
+
} = {}) {
|
23
|
+
const config = [
|
24
|
+
default3.flatConfigs.typescript,
|
25
|
+
{
|
26
|
+
name: "solvro/imports/rules",
|
27
|
+
plugins: {
|
28
|
+
antfu: default2
|
29
|
+
},
|
30
|
+
rules: {
|
31
|
+
"antfu/import-dedupe": "error",
|
32
|
+
"antfu/no-import-dist": "error",
|
33
|
+
"antfu/no-import-node-modules-by-path": "error",
|
34
|
+
...default3.flatConfigs.recommended.rules,
|
35
|
+
"import/no-dynamic-require": "warn",
|
36
|
+
"import/no-unresolved": "off",
|
37
|
+
"import/consistent-type-specifier-style": "warn",
|
38
|
+
"@typescript-eslint/no-restricted-imports": [
|
39
|
+
"error",
|
40
|
+
{
|
41
|
+
paths: [
|
42
|
+
{
|
43
|
+
name: "axios",
|
44
|
+
message: "Please use fetch instead"
|
45
|
+
},
|
46
|
+
...forbiddenUiLibraries.map((library) => ({
|
47
|
+
name: library,
|
48
|
+
message: `Please use ui.shadcn.com components instead.`
|
49
|
+
}))
|
50
|
+
]
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
54
|
+
}
|
55
|
+
];
|
56
|
+
if (forbidDefaultExport) {
|
57
|
+
config.push(
|
58
|
+
{
|
59
|
+
rules: { "import/no-default-export": "error" }
|
60
|
+
},
|
61
|
+
{
|
62
|
+
files: [
|
63
|
+
"tsup.config.*",
|
64
|
+
"eslint.config.*",
|
65
|
+
".commitlintrc.*",
|
66
|
+
"knip.*",
|
67
|
+
"next.config.*",
|
68
|
+
"commitlint.config.*",
|
69
|
+
".releaserc.*",
|
70
|
+
"vitest.config.*",
|
71
|
+
"postcss.config.*",
|
72
|
+
"playwright.config.*"
|
73
|
+
],
|
74
|
+
rules: {
|
75
|
+
"import/no-default-export": "off"
|
76
|
+
}
|
77
|
+
}
|
78
|
+
);
|
79
|
+
}
|
80
|
+
return config;
|
81
|
+
}
|
82
|
+
|
83
|
+
export {
|
84
|
+
imports
|
85
|
+
};
|
86
|
+
//# sourceMappingURL=chunk-DHQ2VVRM.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/configs/imports.ts"],"sourcesContent":["import type { Config, ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu, pluginImport } from \"../plugins\";\n\nconst forbiddenUiLibraries = [\n \"@headlessui/react\",\n \"@mui/material\",\n \"@chakra-ui/react\",\n \"@chakra-ui/core\",\n \"@nextui-org/react\",\n \"react-bootstrap\",\n \"antd\",\n];\n\nexport function imports({\n forbidDefaultExport = true,\n} = {}): ConfigWithExtends[] {\n const config: Config = [\n pluginImport.flatConfigs.typescript,\n {\n name: \"solvro/imports/rules\",\n plugins: {\n antfu: pluginAntfu,\n },\n\n rules: {\n \"antfu/import-dedupe\": \"error\",\n \"antfu/no-import-dist\": \"error\",\n \"antfu/no-import-node-modules-by-path\": \"error\",\n\n ...(pluginImport.flatConfigs.recommended\n .rules as ConfigWithExtends[\"rules\"]),\n \"import/no-dynamic-require\": \"warn\",\n \"import/no-unresolved\": \"off\",\n \"import/consistent-type-specifier-style\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: [\n {\n name: \"axios\",\n message: \"Please use fetch instead\",\n },\n ...forbiddenUiLibraries.map((library) => ({\n name: library,\n message: `Please use ui.shadcn.com components instead.`,\n })),\n ],\n },\n ],\n },\n },\n ] satisfies Config;\n\n if (forbidDefaultExport) {\n config.push(\n {\n rules: { \"import/no-default-export\": \"error\" },\n },\n {\n files: [\n \"tsup.config.*\",\n \"eslint.config.*\",\n \".commitlintrc.*\",\n \"knip.*\",\n \"next.config.*\",\n \"commitlint.config.*\",\n \".releaserc.*\",\n \"vitest.config.*\",\n \"postcss.config.*\",\n \"playwright.config.*\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return config;\n}\n"],"mappings":";;;;;;;;;AAAA;AAIA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,QAAQ;AAAA,EACtB,sBAAsB;AACxB,IAAI,CAAC,GAAwB;AAC3B,QAAM,SAAiB;AAAA,IACrBA,SAAa,YAAY;AAAA,IACzB;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,QACP,OAAOA;AAAA,MACT;AAAA,MAEA,OAAO;AAAA,QACL,uBAAuB;AAAA,QACvB,wBAAwB;AAAA,QACxB,wCAAwC;AAAA,QAExC,GAAIA,SAAa,YAAY,YAC1B;AAAA,QACH,6BAA6B;AAAA,QAC7B,wBAAwB;AAAA,QACxB,0CAA0C;AAAA,QAC1C,4CAA4C;AAAA,UAC1C;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL;AAAA,gBACE,MAAM;AAAA,gBACN,SAAS;AAAA,cACX;AAAA,cACA,GAAG,qBAAqB,IAAI,CAAC,aAAa;AAAA,gBACxC,MAAM;AAAA,gBACN,SAAS;AAAA,cACX,EAAE;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,qBAAqB;AACvB,WAAO;AAAA,MACL;AAAA,QACE,OAAO,EAAE,4BAA4B,QAAQ;AAAA,MAC/C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,4BAA4B;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":["default"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import {
|
2
|
+
init_esm_shims
|
3
|
+
} from "./chunk-J5OUMHDO.js";
|
4
|
+
|
5
|
+
// src/eslint/plugins.ts
|
6
|
+
init_esm_shims();
|
7
|
+
import { default as default2 } from "@eslint-community/eslint-plugin-eslint-comments";
|
8
|
+
import { default as default3 } from "eslint-plugin-antfu";
|
9
|
+
import { default as default4 } from "eslint-plugin-import";
|
10
|
+
import { default as default5 } from "eslint-plugin-n";
|
11
|
+
import { default as default6 } from "eslint-plugin-unicorn";
|
12
|
+
import { default as default7 } from "eslint-plugin-unused-imports";
|
13
|
+
|
14
|
+
export {
|
15
|
+
default2 as default,
|
16
|
+
default3 as default2,
|
17
|
+
default4 as default3,
|
18
|
+
default5 as default4,
|
19
|
+
default6 as default5,
|
20
|
+
default7 as default6
|
21
|
+
};
|
22
|
+
//# sourceMappingURL=chunk-HM3MY7J3.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/plugins.ts"],"sourcesContent":["//@ts-expect-error not working\nexport { default as pluginComments } from \"@eslint-community/eslint-plugin-eslint-comments\";\nexport { default as pluginAntfu } from \"eslint-plugin-antfu\";\nexport { default as pluginImport } from \"eslint-plugin-import\";\nexport { default as pluginNode } from \"eslint-plugin-n\";\nexport { default as pluginUnicorn } from \"eslint-plugin-unicorn\";\nexport { default as pluginUnusedImports } from \"eslint-plugin-unused-imports\";\n"],"mappings":";;;;;AAAA;AACA,SAAoB,WAAXA,gBAAiC;AAC1C,SAAoB,WAAXA,gBAA8B;AACvC,SAAoB,WAAXA,gBAA+B;AACxC,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAAgC;AACzC,SAAoB,WAAXA,gBAAsC;","names":["default"]}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __esm = (fn, res) => function __init() {
|
8
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
9
|
+
};
|
10
|
+
var __commonJS = (cb, mod) => function __require() {
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
12
|
+
};
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
15
|
+
for (let key of __getOwnPropNames(from))
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
18
|
+
}
|
19
|
+
return to;
|
20
|
+
};
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
27
|
+
mod
|
28
|
+
));
|
29
|
+
|
30
|
+
// node_modules/tsup/assets/esm_shims.js
|
31
|
+
import path from "path";
|
32
|
+
import { fileURLToPath } from "url";
|
33
|
+
var init_esm_shims = __esm({
|
34
|
+
"node_modules/tsup/assets/esm_shims.js"() {
|
35
|
+
"use strict";
|
36
|
+
}
|
37
|
+
});
|
38
|
+
|
39
|
+
export {
|
40
|
+
__commonJS,
|
41
|
+
__toESM,
|
42
|
+
init_esm_shims
|
43
|
+
};
|
44
|
+
//# sourceMappingURL=chunk-J5OUMHDO.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAF9B;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
@@ -0,0 +1,189 @@
|
|
1
|
+
import {
|
2
|
+
default2,
|
3
|
+
default5 as default3
|
4
|
+
} from "./chunk-HM3MY7J3.js";
|
5
|
+
import {
|
6
|
+
init_esm_shims
|
7
|
+
} from "./chunk-J5OUMHDO.js";
|
8
|
+
|
9
|
+
// src/eslint/configs/typescript-strict.ts
|
10
|
+
init_esm_shims();
|
11
|
+
import tseslint from "typescript-eslint";
|
12
|
+
function typescriptStrict() {
|
13
|
+
return [
|
14
|
+
...tseslint.configs.strictTypeChecked,
|
15
|
+
...tseslint.configs.stylisticTypeChecked,
|
16
|
+
{
|
17
|
+
name: "solvro/typescript-strict/setup",
|
18
|
+
plugins: {
|
19
|
+
antfu: default2
|
20
|
+
}
|
21
|
+
},
|
22
|
+
{
|
23
|
+
files: ["**/*.{ts,tsx}"],
|
24
|
+
name: "solvro/typescript-strict/rules",
|
25
|
+
rules: {
|
26
|
+
"@typescript-eslint/ban-ts-comment": [
|
27
|
+
"error",
|
28
|
+
{ "ts-expect-error": "allow-with-description" }
|
29
|
+
],
|
30
|
+
"@typescript-eslint/consistent-type-definitions": [
|
31
|
+
"error",
|
32
|
+
"interface"
|
33
|
+
],
|
34
|
+
"@typescript-eslint/consistent-type-imports": [
|
35
|
+
"error",
|
36
|
+
{
|
37
|
+
disallowTypeAnnotations: false,
|
38
|
+
prefer: "type-imports"
|
39
|
+
}
|
40
|
+
],
|
41
|
+
"@typescript-eslint/method-signature-style": ["error", "property"],
|
42
|
+
// https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful
|
43
|
+
"@typescript-eslint/no-dupe-class-members": "error",
|
44
|
+
"@typescript-eslint/no-empty-object-type": [
|
45
|
+
"error",
|
46
|
+
{ allowInterfaces: "always" }
|
47
|
+
],
|
48
|
+
"@typescript-eslint/no-import-type-side-effects": "error",
|
49
|
+
"@typescript-eslint/no-redeclare": ["error", { builtinGlobals: false }],
|
50
|
+
"@typescript-eslint/no-require-imports": "error",
|
51
|
+
"@typescript-eslint/no-unused-expressions": [
|
52
|
+
"error",
|
53
|
+
{
|
54
|
+
allowShortCircuit: true,
|
55
|
+
allowTaggedTemplates: true,
|
56
|
+
allowTernary: true
|
57
|
+
}
|
58
|
+
],
|
59
|
+
"@typescript-eslint/no-use-before-define": [
|
60
|
+
"error",
|
61
|
+
{ classes: false, functions: false, variables: true }
|
62
|
+
],
|
63
|
+
"@typescript-eslint/no-wrapper-object-types": "error",
|
64
|
+
// prevent unnecessary use of void operator
|
65
|
+
"@typescript-eslint/no-meaningless-void-operator": "error",
|
66
|
+
// "using non-null assertions cancels the benefits of the strict
|
67
|
+
// null-checking mode."
|
68
|
+
// warn when one of the types in union / intersection overrides others
|
69
|
+
"@typescript-eslint/no-redundant-type-constituents": "warn",
|
70
|
+
// prevent variables shadowing
|
71
|
+
"no-shadow": "error",
|
72
|
+
"@typescript-eslint/no-shadow": "error",
|
73
|
+
// prevent assignment of this, signals a wrong usage of it
|
74
|
+
"@typescript-eslint/no-this-alias": "error",
|
75
|
+
// prevent throwing non-error
|
76
|
+
"no-throw-literal": "off",
|
77
|
+
// prevent unnecessary explicitly adding a default type argument
|
78
|
+
"@typescript-eslint/no-unnecessary-type-arguments": "error",
|
79
|
+
// prevent unnecessary assertions that won't change the outcome
|
80
|
+
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
81
|
+
// prevent extending default types
|
82
|
+
"@typescript-eslint/no-unnecessary-type-constraint": "error",
|
83
|
+
// force typing out function arguments
|
84
|
+
"@typescript-eslint/no-unsafe-argument": "error",
|
85
|
+
// prevent usage of any via reassigning
|
86
|
+
"@typescript-eslint/no-unsafe-assignment": "error",
|
87
|
+
// prevent usage of any via calling it
|
88
|
+
"@typescript-eslint/no-unsafe-call": "error",
|
89
|
+
// prevent usage of any via using it's members
|
90
|
+
"@typescript-eslint/no-unsafe-member-access": "error",
|
91
|
+
// prevent reverting any from functions
|
92
|
+
"@typescript-eslint/no-unsafe-return": "error",
|
93
|
+
// prevent unused expressions
|
94
|
+
"no-unused-expressions": "off",
|
95
|
+
// var<'string'> = 'string' -> var = 'string' as const
|
96
|
+
"@typescript-eslint/prefer-as-const": "error",
|
97
|
+
// force initializing enums
|
98
|
+
"@typescript-eslint/prefer-enum-initializers": "error",
|
99
|
+
// prefer for x of obj to for let i = 0...
|
100
|
+
"@typescript-eslint/prefer-for-of": "error",
|
101
|
+
// prefer includes() to indexOf()
|
102
|
+
"@typescript-eslint/prefer-includes": "error",
|
103
|
+
// use literals for enum initialization
|
104
|
+
"@typescript-eslint/prefer-literal-enum-member": "error",
|
105
|
+
// prefer safe cascade of a value when dealing with undefined or null
|
106
|
+
"@typescript-eslint/prefer-nullish-coalescing": "error",
|
107
|
+
// prefer optional chaining (a?.b)
|
108
|
+
"@typescript-eslint/prefer-optional-chain": "error",
|
109
|
+
// prefer using type parameter for Array.reduce
|
110
|
+
"@typescript-eslint/prefer-reduce-type-parameter": "error",
|
111
|
+
// prefer RegExp#exec when no /g flag in regex
|
112
|
+
"@typescript-eslint/prefer-regexp-exec": "error",
|
113
|
+
// enforce `this` as a type when stating type for a method
|
114
|
+
"@typescript-eslint/prefer-return-this-type": "error",
|
115
|
+
// enforce startsWith to indexOf === 0
|
116
|
+
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
117
|
+
// prevents default behavior of .sort() - which is confusing
|
118
|
+
"@typescript-eslint/require-array-sort-compare": "error",
|
119
|
+
// no async functions without awaits in body
|
120
|
+
"require-await": "off",
|
121
|
+
"@typescript-eslint/require-await": "error",
|
122
|
+
// prevent number + string
|
123
|
+
"@typescript-eslint/restrict-plus-operands": "error",
|
124
|
+
// only allow string in templates
|
125
|
+
"@typescript-eslint/restrict-template-expressions": "error",
|
126
|
+
// prevent returning await
|
127
|
+
"no-return-await": "off",
|
128
|
+
"@typescript-eslint/return-await": "error",
|
129
|
+
// only booleans in ifs and whiles
|
130
|
+
"@typescript-eslint/strict-boolean-expressions": "error",
|
131
|
+
// check if all paths are followed in code
|
132
|
+
"@typescript-eslint/switch-exhaustiveness-check": "error",
|
133
|
+
"dot-notation": "off",
|
134
|
+
"no-implied-eval": "off",
|
135
|
+
"@typescript-eslint/await-thenable": "error",
|
136
|
+
"@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
|
137
|
+
"@typescript-eslint/no-floating-promises": "error",
|
138
|
+
"@typescript-eslint/no-for-in-array": "error",
|
139
|
+
"@typescript-eslint/no-implied-eval": "error",
|
140
|
+
"@typescript-eslint/no-misused-promises": "error",
|
141
|
+
"@typescript-eslint/promise-function-async": "error",
|
142
|
+
"@typescript-eslint/unbound-method": "error",
|
143
|
+
"no-restricted-imports": "off"
|
144
|
+
}
|
145
|
+
}
|
146
|
+
];
|
147
|
+
}
|
148
|
+
|
149
|
+
// src/eslint/configs/unicorn.ts
|
150
|
+
init_esm_shims();
|
151
|
+
function unicorn() {
|
152
|
+
return [
|
153
|
+
{
|
154
|
+
name: "solvro/unicorn/rules",
|
155
|
+
plugins: {
|
156
|
+
unicorn: default3
|
157
|
+
},
|
158
|
+
rules: {
|
159
|
+
...default3.configs.recommended.rules,
|
160
|
+
"unicorn/no-array-reduce": "off",
|
161
|
+
"unicorn/no-null": "off",
|
162
|
+
"unicorn/no-useless-switch-case": "off",
|
163
|
+
"unicorn/prefer-global-this": "off",
|
164
|
+
"unicorn/prevent-abbreviations": [
|
165
|
+
"error",
|
166
|
+
{
|
167
|
+
replacements: {
|
168
|
+
env: false,
|
169
|
+
envs: false,
|
170
|
+
props: false,
|
171
|
+
prop: false,
|
172
|
+
ref: false
|
173
|
+
},
|
174
|
+
allowList: {
|
175
|
+
e2e: true
|
176
|
+
},
|
177
|
+
ignore: [String.raw`e2e`]
|
178
|
+
}
|
179
|
+
]
|
180
|
+
}
|
181
|
+
}
|
182
|
+
];
|
183
|
+
}
|
184
|
+
|
185
|
+
export {
|
186
|
+
typescriptStrict,
|
187
|
+
unicorn
|
188
|
+
};
|
189
|
+
//# sourceMappingURL=chunk-OEFF22F3.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/configs/typescript-strict.ts","../src/eslint/configs/unicorn.ts"],"sourcesContent":["import tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu } from \"../plugins\";\n\nexport function typescriptStrict(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.strictTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-strict/setup\",\n plugins: {\n antfu: pluginAntfu,\n },\n },\n {\n files: [\"**/*.{ts,tsx}\"],\n name: \"solvro/typescript-strict/rules\",\n rules: {\n \"@typescript-eslint/ban-ts-comment\": [\n \"error\",\n { \"ts-expect-error\": \"allow-with-description\" },\n ],\n \"@typescript-eslint/consistent-type-definitions\": [\n \"error\",\n \"interface\",\n ],\n \"@typescript-eslint/consistent-type-imports\": [\n \"error\",\n {\n disallowTypeAnnotations: false,\n prefer: \"type-imports\",\n },\n ],\n \"@typescript-eslint/method-signature-style\": [\"error\", \"property\"], // https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful\n \"@typescript-eslint/no-dupe-class-members\": \"error\",\n \"@typescript-eslint/no-empty-object-type\": [\n \"error\",\n { allowInterfaces: \"always\" },\n ],\n \"@typescript-eslint/no-import-type-side-effects\": \"error\",\n \"@typescript-eslint/no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"@typescript-eslint/no-require-imports\": \"error\",\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-use-before-define\": [\n \"error\",\n { classes: false, functions: false, variables: true },\n ],\n \"@typescript-eslint/no-wrapper-object-types\": \"error\",\n // prevent unnecessary use of void operator\n \"@typescript-eslint/no-meaningless-void-operator\": \"error\",\n // \"using non-null assertions cancels the benefits of the strict\n // null-checking mode.\"\n // warn when one of the types in union / intersection overrides others\n \"@typescript-eslint/no-redundant-type-constituents\": \"warn\",\n // prevent variables shadowing\n \"no-shadow\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n // prevent assignment of this, signals a wrong usage of it\n \"@typescript-eslint/no-this-alias\": \"error\",\n // prevent throwing non-error\n \"no-throw-literal\": \"off\",\n\n // prevent unnecessary explicitly adding a default type argument\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n // prevent unnecessary assertions that won't change the outcome\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n // prevent extending default types\n \"@typescript-eslint/no-unnecessary-type-constraint\": \"error\",\n // force typing out function arguments\n \"@typescript-eslint/no-unsafe-argument\": \"error\",\n // prevent usage of any via reassigning\n \"@typescript-eslint/no-unsafe-assignment\": \"error\",\n // prevent usage of any via calling it\n \"@typescript-eslint/no-unsafe-call\": \"error\",\n // prevent usage of any via using it's members\n \"@typescript-eslint/no-unsafe-member-access\": \"error\",\n // prevent reverting any from functions\n \"@typescript-eslint/no-unsafe-return\": \"error\",\n // prevent unused expressions\n \"no-unused-expressions\": \"off\",\n // var<'string'> = 'string' -> var = 'string' as const\n \"@typescript-eslint/prefer-as-const\": \"error\",\n // force initializing enums\n \"@typescript-eslint/prefer-enum-initializers\": \"error\",\n // prefer for x of obj to for let i = 0...\n \"@typescript-eslint/prefer-for-of\": \"error\",\n // prefer includes() to indexOf()\n \"@typescript-eslint/prefer-includes\": \"error\",\n // use literals for enum initialization\n \"@typescript-eslint/prefer-literal-enum-member\": \"error\",\n // prefer safe cascade of a value when dealing with undefined or null\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n // prefer optional chaining (a?.b)\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n // prefer using type parameter for Array.reduce\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n // prefer RegExp#exec when no /g flag in regex\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n // enforce `this` as a type when stating type for a method\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n // enforce startsWith to indexOf === 0\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n // prevents default behavior of .sort() - which is confusing\n \"@typescript-eslint/require-array-sort-compare\": \"error\",\n // no async functions without awaits in body\n \"require-await\": \"off\",\n \"@typescript-eslint/require-await\": \"error\",\n // prevent number + string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n // only allow string in templates\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n // prevent returning await\n \"no-return-await\": \"off\",\n \"@typescript-eslint/return-await\": \"error\",\n // only booleans in ifs and whiles\n \"@typescript-eslint/strict-boolean-expressions\": \"error\",\n // check if all paths are followed in code\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"dot-notation\": \"off\",\n \"no-implied-eval\": \"off\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-for-in-array\": \"error\",\n \"@typescript-eslint/no-implied-eval\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/promise-function-async\": \"error\",\n \"@typescript-eslint/unbound-method\": \"error\",\n \"no-restricted-imports\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginUnicorn } from \"../plugins\";\n\nexport function unicorn(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/unicorn/rules\",\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs.recommended.rules,\n \"unicorn/no-array-reduce\": \"off\",\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-useless-switch-case\": \"off\",\n \"unicorn/prefer-global-this\": \"off\",\n \"unicorn/prevent-abbreviations\": [\n \"error\",\n {\n replacements: {\n env: false,\n envs: false,\n props: false,\n prop: false,\n ref: false,\n },\n allowList: {\n e2e: true,\n },\n ignore: [String.raw`e2e`],\n },\n ],\n },\n },\n ];\n}\n"],"mappings":"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","names":["default","default"]}
|