Skip to content

Commit 4b283ee

Browse files
feat: First commit
0 parents  commit 4b283ee

26 files changed

+1654
-0
lines changed

.eslintrc.json

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
{
2+
"root": true,
3+
"ignorePatterns": ["projects/**/*"],
4+
"plugins": ["@typescript-eslint", "prettier", "jsdoc"],
5+
"overrides": [
6+
{
7+
"files": ["*.ts"],
8+
"parserOptions": {
9+
"project": ["tsconfig.json"],
10+
"createDefaultProgram": true
11+
},
12+
"extends": ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
13+
"rules": {
14+
// Formato y estilo
15+
"max-len": [
16+
"error",
17+
{
18+
"code": 140,
19+
"ignoreUrls": true,
20+
"ignoreStrings": true,
21+
"ignoreTemplateLiterals": true,
22+
"ignoreRegExpLiterals": true
23+
}
24+
],
25+
"semi": ["error", "always"],
26+
"quotes": ["error", "single"],
27+
"indent": ["error", 2],
28+
29+
// Espaciado y formato
30+
"array-bracket-spacing": ["error", "never"],
31+
"object-curly-spacing": ["error", "always"],
32+
"comma-dangle": ["error", "always-multiline"],
33+
"no-multiple-empty-lines": ["error", { "max": 1 }],
34+
35+
// Buenas prácticas
36+
"no-console": ["warn", { "allow": ["warn", "error"] }],
37+
"no-debugger": "warn",
38+
"no-unused-vars": "off", // Usar la versión TypeScript
39+
"@typescript-eslint/no-unused-vars": ["error"],
40+
"eqeqeq": ["error", "always"],
41+
"curly": "error",
42+
43+
// Reglas específicas de TypeScript
44+
"@typescript-eslint/explicit-function-return-type": [
45+
"warn",
46+
{
47+
"allowExpressions": true,
48+
"allowTypedFunctionExpressions": true
49+
}
50+
],
51+
"@typescript-eslint/explicit-member-accessibility": [
52+
"error",
53+
{
54+
"accessibility": "explicit",
55+
"overrides": {
56+
"constructors": "no-public"
57+
}
58+
}
59+
],
60+
"@typescript-eslint/member-ordering": [
61+
"error",
62+
{
63+
"default": {
64+
"memberTypes": [
65+
"public-field",
66+
"public-method",
67+
"protected-field",
68+
"protected-method",
69+
"private-field",
70+
"private-method"
71+
]
72+
}
73+
}
74+
],
75+
"@typescript-eslint/no-explicit-any": "warn",
76+
"@typescript-eslint/naming-convention": [
77+
"error",
78+
{
79+
"selector": "interface",
80+
"format": ["PascalCase"],
81+
"prefix": ["I"]
82+
},
83+
{
84+
"selector": "enum",
85+
"format": ["PascalCase"]
86+
}
87+
],
88+
89+
// Reglas de importación
90+
"sort-imports": [
91+
"error",
92+
{
93+
"ignoreCase": true,
94+
"ignoreDeclarationSort": true
95+
}
96+
],
97+
98+
// Reglas de Angular
99+
"@angular-eslint/component-class-suffix": "error",
100+
"@angular-eslint/directive-class-suffix": "error",
101+
"@angular-eslint/no-empty-lifecycle-method": "error",
102+
"@angular-eslint/use-pipe-transform-interface": "error",
103+
"@angular-eslint/component-selector": [
104+
"error",
105+
{
106+
"type": "element",
107+
"prefix": "app",
108+
"style": "kebab-case"
109+
}
110+
],
111+
"@angular-eslint/directive-selector": [
112+
"error",
113+
{
114+
"type": "attribute",
115+
"prefix": "app",
116+
"style": "camelCase"
117+
}
118+
],
119+
120+
// Complejidad y mantenibilidad
121+
"complexity": ["warn", 10],
122+
"max-depth": ["warn", 4],
123+
"max-lines-per-function": [
124+
"warn",
125+
{
126+
"max": 50,
127+
"skipBlankLines": true,
128+
"skipComments": true
129+
}
130+
],
131+
"max-params": ["warn", 4],
132+
"jsdoc/require-jsdoc": [
133+
"error",
134+
{
135+
"require": {
136+
"FunctionDeclaration": true,
137+
"MethodDefinition": true,
138+
"ClassDeclaration": true,
139+
"ArrowFunctionExpression": true,
140+
"FunctionExpression": true
141+
}
142+
}
143+
],
144+
"jsdoc/require-param": "error",
145+
"jsdoc/require-param-type": "error",
146+
"jsdoc/require-param-description": "error",
147+
"jsdoc/require-returns": "error",
148+
"jsdoc/require-returns-type": "error",
149+
"jsdoc/require-returns-description": "error"
150+
}
151+
},
152+
{
153+
"files": ["*.html"],
154+
"extends": ["plugin:@angular-eslint/template/recommended"],
155+
"rules": {
156+
"max-len": ["error", { "code": 140 }]
157+
}
158+
}
159+
]
160+
}

.github/workflows/main.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: CI/CD
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v2
15+
16+
- name: Setup Node.js
17+
uses: actions/setup-node@v3
18+
with:
19+
node-version: 23
20+
21+
- name: Install dependencies
22+
run: npm install

.gitignore

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
package-lock.json
15+
16+
# Editor directories and files
17+
.vscode/*
18+
!.vscode/extensions.json
19+
.idea
20+
.DS_Store
21+
*.suo
22+
*.ntvs*
23+
*.njsproj
24+
*.sln
25+
*.sw?
26+
.vercel

.husky/pre-commit

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env sh
2+
. "$(dirname -- "$0")/_/husky.sh"
3+
4+
npx lint-staged
5+
npm run type-check

.husky/pre-push

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env sh
2+
. "$(dirname -- "$0")/_/husky.sh"
3+
4+
npm run lint
5+
npm run build

.prettierignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Directorios compilados
2+
/dist
3+
/build
4+
/coverage
5+
6+
# Node
7+
/node_modules
8+
9+
# Archivos generados
10+
*.min.js
11+
*.min.css
12+
13+
# Otros
14+
package-lock.json
15+
yarn.lock
16+
*.md

.prettierrc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"printWidth": 120,
3+
"tabWidth": 2,
4+
"useTabs": false,
5+
"semi": true,
6+
"singleQuote": true,
7+
"trailingComma": "es5",
8+
"bracketSpacing": true,
9+
"arrowParens": "avoid",
10+
"proseWrap": "always",
11+
"htmlWhitespaceSensitivity": "css",
12+
"endOfLine": "lf",
13+
"embeddedLanguageFormatting": "auto",
14+
"singleAttributePerLine": false,
15+
"bracketSameLine": true,
16+
"jsxSingleQuote": false
17+
}

0 commit comments

Comments
 (0)