Merge pull request #2 from tomalaforge/main

Update main
This commit is contained in:
Sagar Devkota
2023-11-21 07:07:20 +05:45
committed by GitHub
101 changed files with 5760 additions and 5068 deletions

View File

@@ -105,6 +105,33 @@
"contributions": [ "contributions": [
"doc" "doc"
] ]
},
{
"login": "Sagardevkota",
"name": "Sagar Devkota",
"avatar_url": "https://avatars.githubusercontent.com/u/30800393?v=4",
"profile": "http://www.sagardev.com.np",
"contributions": [
"doc"
]
},
{
"login": "nelsongutidev",
"name": "Nelson Gutierrez",
"avatar_url": "https://avatars.githubusercontent.com/u/62297014?v=4",
"profile": "https://nelsonguti.dev/",
"contributions": [
"doc"
]
},
{
"login": "ho-ssain",
"name": "Hossain K. M.",
"avatar_url": "https://avatars.githubusercontent.com/u/61125174?v=4",
"profile": "https://github.com/ho-ssain",
"contributions": [
"doc"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

22
.github/workflows/close-inactive-pr.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Close inactive issues
on:
schedule:
- cron: '20 1 * * *'
jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v5
with:
days-before-issue-stale: 20
days-before-issue-close: 14
stale-issue-label: 'stale'
stale-issue-message: 'This issue is stale because it has been open for 20 days with no activity.'
close-issue-message: 'This issue was closed because it has been inactive for 14 days since being marked as stale.'
days-before-pr-stale: -1
days-before-pr-close: -1
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -45,6 +45,9 @@ Check [all 39 challenges](https://angular-challenges.vercel.app/)
<tr> <tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DeveshChau"><img src="https://avatars.githubusercontent.com/u/9509673?v=4?s=100" width="100px;" alt="Devesh Chaudhari"/><br /><sub><b>Devesh Chaudhari</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=DeveshChau" title="Code">💻</a> <a href="https://github.com/tomalaforge/angular-challenges/issues?q=author%3ADeveshChau" title="Bug reports">🐛</a> <a href="#challenge-DeveshChau" title="Created a challenge">🧩</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/DeveshChau"><img src="https://avatars.githubusercontent.com/u/9509673?v=4?s=100" width="100px;" alt="Devesh Chaudhari"/><br /><sub><b>Devesh Chaudhari</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=DeveshChau" title="Code">💻</a> <a href="https://github.com/tomalaforge/angular-challenges/issues?q=author%3ADeveshChau" title="Bug reports">🐛</a> <a href="#challenge-DeveshChau" title="Created a challenge">🧩</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dmmishchenko"><img src="https://avatars.githubusercontent.com/u/51910160?v=4?s=100" width="100px;" alt="Dmitriy Mishchenko"/><br /><sub><b>Dmitriy Mishchenko</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=dmmishchenko" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/dmmishchenko"><img src="https://avatars.githubusercontent.com/u/51910160?v=4?s=100" width="100px;" alt="Dmitriy Mishchenko"/><br /><sub><b>Dmitriy Mishchenko</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=dmmishchenko" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.sagardev.com.np"><img src="https://avatars.githubusercontent.com/u/30800393?v=4?s=100" width="100px;" alt="Sagar Devkota"/><br /><sub><b>Sagar Devkota</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=Sagardevkota" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://nelsonguti.dev/"><img src="https://avatars.githubusercontent.com/u/62297014?v=4?s=100" width="100px;" alt="Nelson Gutierrez"/><br /><sub><b>Nelson Gutierrez</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=nelsongutidev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ho-ssain"><img src="https://avatars.githubusercontent.com/u/61125174?v=4?s=100" width="100px;" alt="Hossain K. M."/><br /><sub><b>Hossain K. M.</b></sub></a><br /><a href="https://github.com/tomalaforge/angular-challenges/commits?author=ho-ssain" title="Documentation">📖</a></td>
</tr> </tr>
</tbody> </tbody>
<tfoot> <tfoot>

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-anchor-scrolling:build:production" "buildTarget": "angular-anchor-scrolling:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-anchor-scrolling:build:development" "buildTarget": "angular-anchor-scrolling:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-anchor-scrolling:build" "buildTarget": "angular-anchor-scrolling:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/anchor-scrolling/jest.config.ts", "jestConfig": "apps/angular/anchor-scrolling/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
}, },

View File

@@ -10,4 +10,4 @@ npx nx serve angular-bug-cd
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/performance/32-angular-bug-cd/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/performance/32-bug-cd/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-bug-cd:build:production" "buildTarget": "angular-bug-cd:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-bug-cd:build:development" "buildTarget": "angular-bug-cd:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-bug-cd:build" "buildTarget": "angular-bug-cd:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/bug-cd/jest.config.ts", "jestConfig": "apps/angular/bug-cd/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -10,4 +10,4 @@ npx nx serve angular-context-outlet-type
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/4-angular-context-outlet-typed/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/4-context-outlet-typed/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-context-outlet-type:build:production" "buildTarget": "angular-context-outlet-type:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-context-outlet-type:build:development" "buildTarget": "angular-context-outlet-type:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-context-outlet-type:build" "buildTarget": "angular-context-outlet-type:build"
} }
}, },
"lint": { "lint": {

View File

@@ -10,4 +10,4 @@ npx nx serve angular-crud
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/5-angular-crud/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/5-crud/).

View File

@@ -57,10 +57,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-crud:build:production" "buildTarget": "angular-crud:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-crud:build:development" "buildTarget": "angular-crud:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -68,7 +68,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-crud:build" "buildTarget": "angular-crud:build"
} }
}, },
"lint": { "lint": {
@@ -84,8 +84,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/crud/jest.config.ts", "jestConfig": "apps/angular/crud/jest.config.ts"
"passWithNoTests": true
} }
} }
}, },

View File

@@ -10,4 +10,4 @@ npx nx serve angular-decoupling
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/33-angular-decoupling/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/33-decoupling/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-decoupling:build:production" "buildTarget": "angular-decoupling:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-decoupling:build:development" "buildTarget": "angular-decoupling:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-decoupling:build" "buildTarget": "angular-decoupling:build"
} }
}, },
"lint": { "lint": {

View File

@@ -10,4 +10,4 @@ npx nx serve angular-di
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/16-angular-di/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/16-di/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-di:build:production" "buildTarget": "angular-di:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-di:build:development" "buildTarget": "angular-di:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-di:build" "buildTarget": "angular-di:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-injection-token:build:production" "buildTarget": "angular-injection-token:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-injection-token:build:development" "buildTarget": "angular-injection-token:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-injection-token:build" "buildTarget": "angular-injection-token:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/injection-token/jest.config.ts", "jestConfig": "apps/angular/injection-token/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -10,4 +10,4 @@ npx nx serve angular-interop-rxjs-signal
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/30-angular-interop-rxjs-signal/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/30-interop-rxjs-signal/).

View File

@@ -56,10 +56,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-interop-rxjs-signal:build:production" "buildTarget": "angular-interop-rxjs-signal:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-interop-rxjs-signal:build:development" "buildTarget": "angular-interop-rxjs-signal:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -67,7 +67,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-interop-rxjs-signal:build" "buildTarget": "angular-interop-rxjs-signal:build"
} }
}, },
"lint": { "lint": {
@@ -84,14 +84,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/interop-rxjs-signal/jest.config.ts", "jestConfig": "apps/angular/interop-rxjs-signal/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -10,4 +10,4 @@ npx nx serve angular-module-to-standalone
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/31-angular-module-to-standalone/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/31-module-to-standalone/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-module-to-standalone:build:production" "buildTarget": "angular-module-to-standalone:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-module-to-standalone:build:development" "buildTarget": "angular-module-to-standalone:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-module-to-standalone:build" "buildTarget": "angular-module-to-standalone:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-ngfor-enhancement:build:production" "buildTarget": "angular-ngfor-enhancement:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-ngfor-enhancement:build:development" "buildTarget": "angular-ngfor-enhancement:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-ngfor-enhancement:build" "buildTarget": "angular-ngfor-enhancement:build"
} }
}, },
"lint": { "lint": {

View File

@@ -10,4 +10,4 @@ npx nx serve angular-permissions
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/6-angular-permissions/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/6-permissions/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-permissions:build:production" "buildTarget": "angular-permissions:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-permissions:build:development" "buildTarget": "angular-permissions:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-permissions:build" "buildTarget": "angular-permissions:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-pipe-easy:build:production" "buildTarget": "angular-pipe-easy:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-pipe-easy:build:development" "buildTarget": "angular-pipe-easy:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-pipe-easy:build" "buildTarget": "angular-pipe-easy:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-pipe-hard:build:production" "buildTarget": "angular-pipe-hard:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-pipe-hard:build:development" "buildTarget": "angular-pipe-hard:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-pipe-hard:build" "buildTarget": "angular-pipe-hard:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-pipe-intermediate:build:production" "buildTarget": "angular-pipe-intermediate:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-pipe-intermediate:build:development" "buildTarget": "angular-pipe-intermediate:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-pipe-intermediate:build" "buildTarget": "angular-pipe-intermediate:build"
} }
}, },
"lint": { "lint": {

View File

@@ -10,4 +10,4 @@ npx nx serve angular-projection
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/1-angular-projection/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/1-projection/).

View File

@@ -6,13 +6,13 @@
"prefix": "app", "prefix": "app",
"targets": { "targets": {
"build": { "build": {
"executor": "@angular-devkit/build-angular:browser", "executor": "@angular-devkit/build-angular:application",
"outputs": ["{options.outputPath}"], "outputs": ["{options.outputPath}"],
"options": { "options": {
"outputPath": "dist/apps/angular/projection", "outputPath": "dist/apps/angular/projection",
"index": "apps/angular/projection/src/index.html", "index": "apps/angular/projection/src/index.html",
"main": "apps/angular/projection/src/main.ts", "browser": "apps/angular/projection/src/main.ts",
"polyfills": "apps/angular/projection/src/polyfills.ts", "polyfills": ["apps/angular/projection/src/polyfills.ts"],
"tsConfig": "apps/angular/projection/tsconfig.app.json", "tsConfig": "apps/angular/projection/tsconfig.app.json",
"inlineStyleLanguage": "scss", "inlineStyleLanguage": "scss",
"assets": [ "assets": [
@@ -40,9 +40,7 @@
"outputHashing": "all" "outputHashing": "all"
}, },
"development": { "development": {
"buildOptimizer": false,
"optimization": false, "optimization": false,
"vendorChunk": true,
"extractLicenses": false, "extractLicenses": false,
"sourceMap": true, "sourceMap": true,
"namedChunks": true "namedChunks": true
@@ -54,10 +52,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-projection:build:production" "buildTarget": "angular-projection:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-projection:build:development" "buildTarget": "angular-projection:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -65,7 +63,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-projection:build" "buildTarget": "angular-projection:build"
} }
}, },
"lint": { "lint": {
@@ -81,8 +79,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/angular/projection/jest.config.ts", "jestConfig": "apps/angular/projection/jest.config.ts"
"passWithNoTests": true
} }
} }
}, },

View File

@@ -10,4 +10,4 @@ npx nx serve angular-router-input
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/22-angular-router-input/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/22-router-input/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-router-input:build:production" "buildTarget": "angular-router-input:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-router-input:build:development" "buildTarget": "angular-router-input:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-router-input:build" "buildTarget": "angular-router-input:build"
} }
}, },
"lint": { "lint": {

View File

@@ -10,4 +10,4 @@ npx nx serve angular-styling
### Documentation and Instruction ### Documentation and Instruction
Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/13-angular-styling/). Challenge documentation is [here](https://angular-challenges.vercel.app/challenges/angular/13-styling/).

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "angular-styling:build:production" "buildTarget": "angular-styling:build:production"
}, },
"development": { "development": {
"browserTarget": "angular-styling:build:development" "buildTarget": "angular-styling:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "angular-styling:build" "buildTarget": "angular-styling:build"
} }
}, },
"lint": { "lint": {

View File

@@ -54,10 +54,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "ngrx-effect-selector:build:production" "buildTarget": "ngrx-effect-selector:build:production"
}, },
"development": { "development": {
"browserTarget": "ngrx-effect-selector:build:development" "buildTarget": "ngrx-effect-selector:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -65,7 +65,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "ngrx-effect-selector:build" "buildTarget": "ngrx-effect-selector:build"
} }
}, },
"lint": { "lint": {
@@ -81,8 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/ngrx/effect-selector/jest.config.ts", "jestConfig": "apps/ngrx/effect-selector/jest.config.ts"
"passWithNoTests": true
} }
} }
}, },

View File

@@ -54,10 +54,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "ngrx-notification:build:production" "buildTarget": "ngrx-notification:build:production"
}, },
"development": { "development": {
"browserTarget": "ngrx-notification:build:development" "buildTarget": "ngrx-notification:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -65,7 +65,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "ngrx-notification:build" "buildTarget": "ngrx-notification:build"
} }
}, },
"lint": { "lint": {

View File

@@ -57,10 +57,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "performance-default-onpush:build:production" "buildTarget": "performance-default-onpush:build:production"
}, },
"development": { "development": {
"browserTarget": "performance-default-onpush:build:development" "buildTarget": "performance-default-onpush:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -68,7 +68,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "performance-default-onpush:build" "buildTarget": "performance-default-onpush:build"
} }
}, },
"lint": { "lint": {

View File

@@ -57,10 +57,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "performance-memoized:build:production" "buildTarget": "performance-memoized:build:production"
}, },
"development": { "development": {
"browserTarget": "performance-memoized:build:development" "buildTarget": "performance-memoized:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -68,7 +68,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "performance-memoized:build" "buildTarget": "performance-memoized:build"
} }
}, },
"lint": { "lint": {

View File

@@ -57,10 +57,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "performance-ngfor-biglist:build:production" "buildTarget": "performance-ngfor-biglist:build:production"
}, },
"development": { "development": {
"browserTarget": "performance-ngfor-biglist:build:development" "buildTarget": "performance-ngfor-biglist:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -68,7 +68,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "performance-ngfor-biglist:build" "buildTarget": "performance-ngfor-biglist:build"
} }
}, },
"lint": { "lint": {

View File

@@ -57,10 +57,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "performance-ngfor-optimize:build:production" "buildTarget": "performance-ngfor-optimize:build:production"
}, },
"development": { "development": {
"browserTarget": "performance-ngfor-optimize:build:development" "buildTarget": "performance-ngfor-optimize:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -68,7 +68,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "performance-ngfor-optimize:build" "buildTarget": "performance-ngfor-optimize:build"
} }
}, },
"lint": { "lint": {
@@ -85,14 +85,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/performance/ngfor-optimize/jest.config.ts", "jestConfig": "apps/performance/ngfor-optimize/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "performance-scroll-cd:build:production" "buildTarget": "performance-scroll-cd:build:production"
}, },
"development": { "development": {
"browserTarget": "performance-scroll-cd:build:development" "buildTarget": "performance-scroll-cd:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "performance-scroll-cd:build" "buildTarget": "performance-scroll-cd:build"
} }
}, },
"lint": { "lint": {
@@ -81,8 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/performance/scroll-cd/jest.config.ts", "jestConfig": "apps/performance/scroll-cd/jest.config.ts"
"passWithNoTests": true
} }
} }
}, },

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "rxjs-catch-error:build:production" "buildTarget": "rxjs-catch-error:build:production"
}, },
"development": { "development": {
"browserTarget": "rxjs-catch-error:build:development" "buildTarget": "rxjs-catch-error:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "rxjs-catch-error:build" "buildTarget": "rxjs-catch-error:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/rxjs/catch-error/jest.config.ts", "jestConfig": "apps/rxjs/catch-error/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -54,10 +54,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "rxjs-pipe-bug:build:production" "buildTarget": "rxjs-pipe-bug:build:production"
}, },
"development": { "development": {
"browserTarget": "rxjs-pipe-bug:build:development" "buildTarget": "rxjs-pipe-bug:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -65,7 +65,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "rxjs-pipe-bug:build" "buildTarget": "rxjs-pipe-bug:build"
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "rxjs-race-condition:build:production" "buildTarget": "rxjs-race-condition:build:production"
}, },
"development": { "development": {
"browserTarget": "rxjs-race-condition:build:development" "buildTarget": "rxjs-race-condition:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "rxjs-race-condition:build" "buildTarget": "rxjs-race-condition:build"
} }
}, },
"lint": { "lint": {
@@ -81,8 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/rxjs/race-condition/jest.config.ts", "jestConfig": "apps/rxjs/race-condition/jest.config.ts"
"passWithNoTests": true
} }
}, },
"component-test": { "component-test": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-checkbox:build:production" "buildTarget": "testing-checkbox:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-checkbox:build:development" "buildTarget": "testing-checkbox:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-checkbox:build" "buildTarget": "testing-checkbox:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/checkbox/jest.config.ts", "jestConfig": "apps/testing/checkbox/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-create-harness:build:production" "buildTarget": "testing-create-harness:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-create-harness:build:development" "buildTarget": "testing-create-harness:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,21 +64,14 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-create-harness:build" "buildTarget": "testing-create-harness:build"
} }
}, },
"test": { "test": {
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/create-harness/jest.config.ts", "jestConfig": "apps/testing/create-harness/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-harness:build:production" "buildTarget": "testing-harness:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-harness:build:development" "buildTarget": "testing-harness:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,21 +64,14 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-harness:build" "buildTarget": "testing-harness:build"
} }
}, },
"test": { "test": {
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/harness/jest.config.ts", "jestConfig": "apps/testing/harness/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-input-output:build:production" "buildTarget": "testing-input-output:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-input-output:build:development" "buildTarget": "testing-input-output:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-input-output:build" "buildTarget": "testing-input-output:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/input-output/jest.config.ts", "jestConfig": "apps/testing/input-output/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"component-test": { "component-test": {

View File

@@ -56,10 +56,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-modal:build:production" "buildTarget": "testing-modal:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-modal:build:development" "buildTarget": "testing-modal:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -67,7 +67,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-modal:build" "buildTarget": "testing-modal:build"
} }
}, },
"lint": { "lint": {
@@ -84,14 +84,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/modal/jest.config.ts", "jestConfig": "apps/testing/modal/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"component-test": { "component-test": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-nested:build:production" "buildTarget": "testing-nested:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-nested:build:development" "buildTarget": "testing-nested:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-nested:build" "buildTarget": "testing-nested:build"
} }
}, },
"lint": { "lint": {
@@ -81,14 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/nested/jest.config.ts", "jestConfig": "apps/testing/nested/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"component-test": { "component-test": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-router-outlet:build:production" "buildTarget": "testing-router-outlet:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-router-outlet:build:development" "buildTarget": "testing-router-outlet:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-router-outlet:build" "buildTarget": "testing-router-outlet:build"
} }
}, },
"lint": { "lint": {
@@ -81,8 +81,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/router-outlet/jest.config.ts", "jestConfig": "apps/testing/router-outlet/jest.config.ts"
"passWithNoTests": true
} }
}, },
"component-test": { "component-test": {

View File

@@ -54,10 +54,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-table:build:production" "buildTarget": "testing-table:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-table:build:development" "buildTarget": "testing-table:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -65,7 +65,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-table:build" "buildTarget": "testing-table:build"
} }
}, },
"lint": { "lint": {
@@ -82,14 +82,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/table/jest.config.ts", "jestConfig": "apps/testing/table/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"component-test": { "component-test": {

View File

@@ -56,10 +56,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "testing-todos-list:build:production" "buildTarget": "testing-todos-list:build:production"
}, },
"development": { "development": {
"browserTarget": "testing-todos-list:build:development" "buildTarget": "testing-todos-list:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -67,7 +67,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "testing-todos-list:build" "buildTarget": "testing-todos-list:build"
} }
}, },
"lint": { "lint": {
@@ -84,14 +84,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "apps/testing/todos-list/jest.config.ts", "jestConfig": "apps/testing/todos-list/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"component-test": { "component-test": {

View File

@@ -53,10 +53,10 @@
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "typescript-overload:build:production" "buildTarget": "typescript-overload:build:production"
}, },
"development": { "development": {
"browserTarget": "typescript-overload:build:development" "buildTarget": "typescript-overload:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -64,7 +64,7 @@
"extract-i18n": { "extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n", "executor": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "typescript-overload:build" "buildTarget": "typescript-overload:build"
} }
}, },
"lint": { "lint": {

View File

@@ -1,6 +1,11 @@
import starlight from '@astrojs/starlight'; import starlight from '@astrojs/starlight';
import { defineConfig } from 'astro/config'; import { defineConfig } from 'astro/config';
export const locales = {
root: { label: 'English', lang: 'en' },
es: { label: 'Español', lang: 'es' },
};
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
integrations: [ integrations: [
@@ -21,10 +26,16 @@ export default defineConfig({
{ {
label: 'Guides', label: 'Guides',
autogenerate: { directory: 'guides' }, autogenerate: { directory: 'guides' },
translations: {
es: 'Guías',
},
}, },
{ {
label: 'Challenges', label: 'Challenges',
autogenerate: { directory: 'challenges' }, autogenerate: { directory: 'challenges' },
translations: {
es: 'Desafíos',
},
}, },
], ],
head: [ head: [
@@ -50,6 +61,18 @@ export default defineConfig({
MarkdownContent: './src/components/Content.astro', MarkdownContent: './src/components/Content.astro',
TableOfContents: './src/components/TableOfContents.astro', TableOfContents: './src/components/TableOfContents.astro',
PageTitle: './src/components/PageTitle.astro', PageTitle: './src/components/PageTitle.astro',
MobileMenuFooter: './src/components/MobileMenuFooter.astro',
},
defaultLocale: 'root',
locales: {
root: {
label: 'English',
lang: 'en',
},
es: {
label: 'Español',
lang: 'es',
},
}, },
}), }),
], ],

View File

@@ -0,0 +1,48 @@
---
import { Icon } from '@astrojs/starlight/components';
import MyIcon from './MyIcon.astro';
---
<div class="action-footer">
<a class="action-button" href='https://github.com/tomalaforge/angular-challenges'>
<div>Give a star</div>
<Icon name='github' size="1rem" />
</a>
<a class="action-button button-sponsor" href='https://github.com/sponsors/tomalaforge'>
<div>Sponsor</div>
<MyIcon name='heart' size="1rem" color="white" />
</a>
</div>
<style>
.action-button {
display: flex!important;
justify-content: center;
gap: 0.5em;
align-items: center;
border-radius: 999rem;
color: var(--sl-color-white)!important;
line-height: 1.1875;
text-decoration: none;
font-size: var(--sl-text-sm)!important;
border: 1px solid;
font-size: var(--sl-text-base);
padding: 0.4rem 0.8rem;
}
.action-footer {
display: flex;
flex-direction: column;
gap: 0.7rem;
margin-bottom: 10px;
}
.button-sponsor {
background-color: red;
border-color: red;
color: write;
}
</style>

View File

@@ -0,0 +1,9 @@
---
import Default from '@astrojs/starlight/components/MobileMenuFooter.astro';
import ActionButtonFooter from './ActionButtonFooter.astro';
---
<Default {...Astro.props}><slot /></Default>
<ActionButtonFooter />

View File

@@ -1,45 +1,9 @@
--- ---
import { Icon } from '@astrojs/starlight/components';
import Default from '@astrojs/starlight/components/TableOfContents.astro'; import Default from '@astrojs/starlight/components/TableOfContents.astro';
import MyIcon from './MyIcon.astro'; import ActionButtonFooter from './ActionButtonFooter.astro';
--- ---
<Default {...Astro.props}><slot /></Default> <Default {...Astro.props}><slot /></Default>
<ActionButtonFooter />
<div class="action-footer">
<a class="action-button" href='https://github.com/tomalaforge/angular-challenges'>
<div>Give a star</div>
<Icon name='github' size="1rem" />
</a>
<a class="action-button" href='https://github.com/sponsors/tomalaforge'>
<div>Sponsor</div>
<MyIcon name='heart' size="1rem" color="white" />
</a>
</div>
<style>
.action-button {
display: flex!important;
justify-content: center;
gap: 0.5em;
align-items: center;
border-radius: 999rem;
color: var(--sl-color-white)!important;
line-height: 1.1875;
text-decoration: none;
font-size: var(--sl-text-sm)!important;
border: 1px solid;
font-size: var(--sl-text-base);
padding: 0.4rem 0.8rem;
}
.action-footer {
display: flex;
flex-direction: column;
gap: 0.7rem;
}
</style>

View File

@@ -0,0 +1,37 @@
---
title: 🟢 Proyección
description: Desafio 1 trata sobre aprender a proyectar elementos del DOM a través de componentes,
author: Thomas Laforge
challengeNumber: 1
command: angular-projection
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
videoLink:
link: https://www.youtube.com/watch?v=npyEyUZxoIw&ab_channel=ArthurLannelucq
alt: Projection video by Arthur Lannelucq
flag: FR
sidebar:
order: 1
---
## Información
En Angular, la proyección de contenido es una técnica poderosa para crear componentes altamente personalizables. Utilizar y comprender los conceptos de <b>ng-content</b> y <b>ngTemplateOutlet</b> puede mejorar significativamente su capacidad para crear componentes reutilizables.
Puedes aprender todo sobre <b>ng-content</b> [aquí](https://angular.io/guide/content-projection#projecting-content-in-more-complex-environments) desde la proyección simple hasta las más complejas.
Para aprender sobre <b>ngTemplateOutlet</b>, puedes encontrar la documentación de la API [aquí](https://angular.io/api/common/NgTemplateOutlet) junto con algunos ejemplos básicos.
Con estas dos herramientas en la mano, ahora estás listo para asumir el desafío.
## Declaración
Comenzarás con una aplicación completamente funcional que incluye un tablero con una tarjeta de profesor y una tarjeta de estudiante. El objetivo es implementar la tarjeta de la ciudad.
Aunque la aplicación funciona, la experiencia del desarrollador está lejos de ser óptima. Cada vez que necesitas implementar una nueva tarjeta, tienes que modificar el `card.component.ts`. En proyectos reales, este componente puede ser compartido entre muchas aplicaciones. El objetivo del desafío es crear un `CardComponent` que se pueda personalizar sin ninguna modificación. Una vez que hayas creado este componente, puedes comenzar a implementar el `CityCardComponent` y asegurarte de que no estás tocando el `CardComponent`.
## Restricciones
- <b>Debes</b> refactorizar el `CardComponent` and `ListItemComponent`.
- La directiva NgFor debe ser declarada y permanecer dentro del `CardComponent`. Puedes sentirte tentado a moverla al `ParentCardComponent` como `TeacherCardComponent`.
- CardComponent no debe contener ningún `NgIf` o `NgSwitch`.
- CSS: intenta evitar usar `::ng-deep`. Encuentra una mejor manera de manejar los estilos de CSS.

View File

@@ -0,0 +1,31 @@
---
title: 🟠 InjectionToken
description: Desafio de Angular 39 para aprender sobre el poder del InjectionToken
author: Thomas Laforge
challengeNumber: 39
command: angular-injection-token
sidebar:
order: 118
badge: New
---
## Información
En esta pequeña aplicación, comenzamos con un `VideoComponent` que contiene un timer de **1 segundo**. El equipo de desarrollo decidió usar una constante global para almacenar el valor del temporizador: `DEFAULT_TIMER`. Sin embargo, unas semanas más tarde, el equipo de producto quiere agregar una nueva pantalla para llamadas telefónicas llamada `PhoneComponent`, y queremos reutilizar el `TimerComponent`. Sin embargo, el equipo de producto quiere un temporizador de **2 segundos**. ¿Cómo podemos lograr esto?
## Enunciado
Actualmente, el temporizador sigue siendo de 1 segundo para el `PhoneComponent`. El objetivo de este desafío es cambiar el valor del temporizador a 2 segundos para el `PhoneComponent`.
## Restricciones
Se prohíbe el uso de `@Input`. Este ejemplo es básico, y el uso de `@Input` podría ser una buena opción, pero en aplicaciones más complejas, el componente que necesitamos actualizar puede estar profundamente anidado, lo que hace que el uso de `@Input` sea un diseño realmente malo.
## Pista
<details>
<summary>Pista 1</summary>
Mirar este [blog post](https://itnext.io/stop-being-scared-of-injectiontokens-ab22f72f0fe9) puede ser de gran ayuda.
</details>

View File

@@ -0,0 +1,36 @@
---
title: Revisar la Respuesta de Alguien
description: Guía para revisar la respuesta de otra persona.
sidebar:
order: 3
---
Todas las respuestas a los Desafíos de Angular se presentarán en forma de Pull Request (PR). Para verlas y seguirlas, navega a través de la página **Files Changes** en GitHub. Sin embargo, entender y seguir este proceso puede no ser sencillo si no estás familiarizado con la interfaz. En muchos casos, puedes preferir revisar la rama y revisar la solución en tu IDE preferido.
Esta guía ha sido creada para ayudarte a lograr esto.
## Revisar localmente una PR de otra persona
### Sincroniza tu repositorio
Primero necesitas sincronizar tu fork para asegurarte de que está al día con el repositorio del que hiciste fork.
Esto se puede lograr haciendo clic en el botón **Sync fork** en la página principal de tu fork.
![Sync project header](../../../../assets/fork-sync.png)
La imagen de arriba muestra que mi rama está atrasada respecto a la rama principal por 8 commits, y necesito sincronizarla para estar al día.
![Sync project update modal](../../../../assets/sync-fork-update.png)
### Revisar localmente
Navega a la PR que deseas revisar localmente y obtén su ID. La encontrarás en el título de la PR (como se muestra a continuación).
![PR header](../../../../assets/PR-header.png)
A continuación, ve a cualquier terminal dentro de tu directorio de proyecto y ejecuta el siguiente comando:
```bash
gh pr checkout <ID>
```

View File

@@ -0,0 +1,20 @@
---
title: Contribuye
description: Guía para contribuir al proyecto
sidebar:
order: 4
---
Puedes contribuir a este repositorio de muchas maneras:
🔥 Crea un nuevo desafío siguiendo las instrucciones [aquí](/guides/create-challenge).
🔥 Resuelve desafíos y envía los resultados. (guía [aquí](/guides/resolve-challenge)).
🔥 Comenta las soluciones de otros proporcionando retroalimentación constructiva y afectuosa.
🔥 Corrige errores tipográficos o de inglés dentro de la documentación.
🔥 Envía un issue para sugerir nuevas ideas de desafíos o reportar un error.
🔥 Patrocina el proyecto [aquí](https://github.com/sponsors/tomalaforge)

View File

@@ -0,0 +1,60 @@
---
title: Crea tu propio desafío
description: Guía para crear un desafío
sidebar:
order: 5
---
Tienes una idea que quieres compartir, un error interesante con el que estás luchando en uno de tus proyectos privados o secundarios, o un tip de Angular que descubriste. Todas estas posibilidades son un buen punto de partida para crear un desafío y compartir la solución con los demás.
Pero, ¿cómo empiezas a crear estos desafíos?
## Configuración de Plantillas (Boilerplate)
Para agilizar el proceso, he creado un generador Nx que configurará todo el boilerplate por ti y te preparará más rápido. La forma más sencilla de ejecutarlo es utilizando la consola Nx: ve a <b>Nx Console > generate > @angular-challenges/cli - challenge</b>
### Parámetros
#### parámetros obligatorios
- <b>title</b>: El título que quieres darle a tu desafío.
:::note[Nota]
El título debe tener un máximo de 25 caracteres.
:::
- <b>challengeDifficulty</b>: La dificultad que crees que tiene tu desafío. Hay tres niveles de dificultad: 🟢 fácil / 🟠 medio / 🔴 difícil
- <b>name</b>: nombre de la aplicación Nx.
:::note[Nota]
Debe escribirse en **kebab-case**
:::
- <b>docRepository</b>: La categoría de tu Desafío: Nx, Angular, Angular Performance, Rxjs, NgRx, Typescript.
#### parámetros opcionales
- <b>directory</b>: Si quieres que tu aplicación se encuentre en una carpeta específica dentro de `apps`.
- <b>addTest</b>: Si quieres agregar configuración de pruebas.
### Qué se crea
- El generador creará todos los archivos necesarios para tener una nueva aplicación de trabajo. Todos estos archivos se crearán dentro de `apps/${directory}/${name}`
- Se creará un archivo Markdown con la configuración mínima dentro de `docs/src/content/docs/challenges/${docRepository}`
## Creación del Desafío
Lo único que queda por hacer es crear tu desafío. 🚀
:::danger[Importante]
No olvides actualizar la documentación para presentar tu desafío y proporcionar tus instrucciones.
:::
¡Es tu turno de actuar! 💪
## Envío de la Solución
Después de una semana más o menos, no olvides proporcionar tu solución a tu desafío.

View File

@@ -0,0 +1,17 @@
---
title: Preguntas Frecuentes
description: Preguntas frecuentes sobre el proyecto
sidebar:
order: 7
---
<details>
<summary>¿Por qué mi aplicación no se está iniciando o por qué encuentro errores en mi terminal cuando ejecuto `nx serve`?</summary>
La mayoría de las veces, este problema surge porque sus node_modules están desactualizados y necesita actualizarlos ejecutando `npm ci`.
Si el proceso de instalación falla, puede resolverlo eliminando su carpeta node_modules usando el comando `rm -rf node_modules` o `npx npkill` y luego volviendo a ejecutar `npm ci`.
Si el problema persiste, informe el problema [aquí](https://github.com/tomalaforge/angular-challenges/issues/new).
</details>

View File

@@ -0,0 +1,57 @@
---
title: Inicio
description: Una guía para comenzar con los Desafíos de Angular
sidebar:
order: 1
---
Para comenzar con <b>Desafió de Angular</b>, siga estos pasos:
## Crea una cuenta de Github
Si desea enviar una solución, deberá tener su propia cuenta de GitHub. Además, tener una cuenta de GitHub siempre es beneficioso y es gratis.
## Crea un fork del proyecto de github
Navegue al [Repositorio de Desafíos de Angular](https://github.com/tomalaforge/angular-challenges) y haga clic en el <span class="github-neutral-btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2">
<path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path></svg>Fork</span> button in the header. This will create a copy of this repository on your own GitHub page.
## Clone el repositorio en su máquina local
Seleccione un directorio en su computadora local y clone este repositorio.
Abra una terminal, navegue hasta el directorio elegido y escriba el siguiente comando:
```bash
git clone https://github.com/[YOUR_GITHUB_NAME]/angular-challenges.git
```
:::note
Puede encontrar la URL de clonación haciendo clic en el botón <span class="github-success-btn"><> Code</span> en su <b>propia instancia</b> del repositorio de Desafíos de Angular.
![Header of github workpspace](../../../../assets/header-github.png)
:::
## Abra el proyecto en su IDE favorito
Abra el proyecto en cualquier IDE de su elección.
## Instale todas las dependencias
```bash
npm ci
```
## Escoja un desafío
Su proyecto ahora está corriendo. El único paso restante es elegir un desafío 🚀
Cada desafío consta de:
- <b>Nombre</b>: indicando de qué se trata el desafío.
- <b>Número</b>: orden de creación. El número no tiene ningún significado en particular, pero ayuda para hacer referencia en la sección de Pull Request de Github.
- <b>Badge</b>: ayuda a visualizar el grado de dificultad. Es totalmente subjetivo 😅
- 🟢 fácil
- 🟠 medio
- 🔴 difícil

View File

@@ -0,0 +1,55 @@
---
title: Hacer rebase a tu rama
description: Guía para hacer rebase a tu rama
sidebar:
order: 6
---
En ocasiones, pueden agregarse cambios al proyecto. Intentaré hacer cambios que no rompan nada, pero a veces es inevitable.
La mayoría de las veces, no necesitarás hacer rebase a tu solución, pero aquí hay una guía para ayudarte a saber cómo hacerlo en caso de ser necesario.
:::note[Nota]
Esta guía es aplicable a cualquier Proyecto de Código Abierto.
:::
## Pasos para hacer rebase a tu rama
### Sincroniza tu repositorio
Primero, necesitas sincronizar tu fork para asegurarte de que esté actualizado con el repositorio bifurcado.
Puedes lograr esto haciendo clic en el botón Sync fork en la página principal de tu fork.
![Sync project header](../../../../assets/fork-sync.png)
La imagen de arriba muestra que mi rama está detrás de la rama principal por 8 commits, y necesito sincronizarla para estar actualizada.
![Sync project update modal](../../../../assets/sync-fork-update.png)
### Abre una terminal
Abre cualquier terminal de tu elección, ya sea la de tu IDE favorito o una instancia independiente.
### Git
Sigue los siguientes comandos para hacer rebase a tu rama local:
- git checkout main
- git pull
- git checkout [tu rama]
- git rebase main
- Resuelve los conflictos
En este paso, el rebase puede detenerse porque tu rama local tiene archivos conflictivos con la rama principal. Corrígelos. Después de esto:
- git add .
- git rebase --continue
Si tu rama no tiene conflictos, se mostrará un mensaje de éxito.
### Envía tu trabajo de vuelta a la rama remota
Finalmente, envía tu trabajo de vuelta a GitHub:
- git push -f

View File

@@ -0,0 +1,89 @@
---
title: Resolver un Desafío
description: Guía para resolver un desafío
sidebar:
order: 2
---
En esta guía, aprenderás cómo resolver un desafío y enviar una respuesta al repositorio principal de Github.
## Introducción
Este repositorio ha sido creado utilizando [Nx](https://nx.dev/getting-started/intro). <b>Nx</b> es un monorepositorio que te permite almacenar múltiples aplicaciones dentro del mismo espacio de trabajo. Cada desafío es una aplicación separada. Si abres el directorio `apps`, encontrarás múltiples directorios, cada uno relacionado con un desafío específico. Cada directorio representa una aplicación `Nx` completa e independiente. Para ejecutar e iniciar una, abre tu terminal y ejecuta:
```bash
npx nx serve <NOMBRE_DE_LA_APLICACION>
```
:::note[Nota]
Si no estás seguro de tu `NOMBRE_DE_LA_APLICACION`, abre el archivo README.md. El comando `serve` está escrito allí, con un enlace a la documentación del desafío.
:::
:::note[Nota]
Si `nx` está instalado globalmente en tu dispositivo, puedes omitir el uso de `npx`.
Para instalar `nx` globalmente, ejecuta
```bash
npm i -g nx
```
:::
## Crear una Rama de Git
Antes de comenzar a implementar tu solución para resolver un desafío, crea una rama de git para comprometer tu trabajo.
```bash
git checkout -b <NOMBRE_DE_LA_RAMA>
```
## Resolver el Desafío
Sigue las instrucciones para resolver el desafío.
## Hacer Commit y Enviar tu Trabajo
El último paso es hacer `commit` a tu trabajo siguiendo las [Directrices Convencionales](https://www.conventionalcommits.org/en/v1.0.0/).
Finalmente, envía tu trabajo al repositorio remoto con el siguiente comando
```bash
git push --set-upstream origin <NOMBRE_DE_LA_RAMA>
```
:::tip[No es necesario que lo memorices]
No tienes que recordar el comando con precisión. Solo necesitas recordar `git push` y si es la primera vez que estás enviando esta rama, `git` te proporcionará el comando completo.
:::
## Enviar tu Trabajo al Repositorio Principal
Ahora, todo tu trabajo está ubicado dentro de tu instancia local del repositorio de Desafíos de Angular.
El siguiente paso es ir a la página principal de [Desafíos de Angular](https://github.com/tomalaforge/angular-challenges) y crear una nueva Pull Request.
Si no es asi, es posible que hayas hecho incorrectamente uno de los pasos anteriores o puedes ir a la pestaña <b>Pull Request</b> y hacer click en el botón <span class="github-success-btn">New pull request</span>.
Una vez hayas escogido las dos ramas a comparar, deberías llegar a la siguiente página:
![Vista de nuevo pull request](../../../../assets/new-pull-request.png)
En la sección de título, comienza con <b>Answer:</b> seguido de tu <b>challenge number</b>. Después de eso, eres libre de agregar cualquier cosa que desees.
:::danger[Importante]
Esto es muy importante. Le permite a otros saber qué desafío estás intentando resolver.
:::
En la sección de descripción, puedes agregar preguntas, problemas que hayas encontrado o cualquier otra cosa que quieras compartir. Puedes dejarlo vacío si no tienes nada que decir.
Ahora puedes hacer click en <span class="github-success-btn">Create pull request</span>.
Lo leeré y comentaré cuando tenga algo de tiempo libre.
:::note[Nota]
Todos son bienvenidos a comentar y leer otros PR.
:::
:::tip[Campeón de OSS]
🔥 Una vez que hayas completado este tutorial, estarás listo para contribuir a cualquier otro repositorio público de Github y enviar un PR. Es tan fácil como eso. 🔥
:::

View File

@@ -0,0 +1,72 @@
---
title: Bienvenido a Desafíos de Angular
description: Comienza resolviendo esos desafíos y convirtiéndote en un mejor ingeniero de FrontEnd Angular.
template: splash
noCommentSection: true
hero:
tagline: ¡Comienza ahora y conviértete en un experto en Angular!
image:
file: ../../../assets/angular-challenge.webp
actions:
- text: Inicio
link: /es/guides/getting-started/
icon: right-arrow
variant: primary
- text: Ir al Desafío mas Reciente
link: /es/challenges/angular/39-injection-token/
icon: rocket
- text: Dale una estrella
link: https://github.com/tomalaforge/angular-challenges
icon: github
variant: secondary
---
import { Card, CardGrid } from '@astrojs/starlight/components';
import MyIcon from '../../../components/MyIcon.astro';
<CardGrid>
<Card title="39 Desafíos">
Este repositorio contiene 39 desafíos relacionados con <b>Angular</b>, <b>Nx</b>, <b>RxJS</b>, <b>Ngrx</b> y <b>Typescript</b>.
Estos desafíos se resuelven en torno a problemas de la vida real o características específicas para mejorar tus habilidades.
</Card>
<Card title="Conviértete en un Contribuidor de OSS">
Uno de los objetivos de este repositorio es <b>reducir la barrera</b> de
entrada para el Software de Código Abierto (OSS). Al participar en estos
desafíos, aprenderás cómo empezar a contribuir a cualquier otro Proyecto de
Código Abierto.
</Card>
<Card title="Aprende Junto a Otros">
Aprender y practicar un framwork siempre es un desafío. Este conjunto de
desafíos proporciona casos de uso del mundo real para aplicar lo que has
estado aprendiendo. Cualquiera puede comentar u ofrecer asistencia.{' '}
<b>
Aprender solo es genial, pero aprender junto a otros te llevará más lejos.
</b>
</Card>
<Card title="Contribuye">
¿Tienes un problema, un error interesante o una idea? No lo dudes;{' '}
<b>crea tus propios desafíos</b> sin perder tiempo.
</Card>
<Card title="Prepárate para Entrevistas">
Completar estos desafíos te preparará para cualquier desafío técnico que puedas encontrar en un rol de frontend durante las entrevistas.
</Card>
</CardGrid>
---
<div class="article-footer">
<a href="https://github.com/sponsors/tomalaforge" alt="Sponsor link">
<MyIcon name="fillHeart" size="1.2rem" color="white" />
Patrocina el Proyecto
</a>
</div>
<div class="main-page-footer">
Creado por{' '}
<a href="https://github.com/tomalaforge?tab=repositories">Thomas Laforge</a> -
Powered by 🌟 <a href="https://starlight.astro.build/">Starlight</a>
</div>

View File

@@ -37,7 +37,7 @@ You can find the clone URL by clicking on the <span class="github-success-btn"><
Open the project in any IDE of your choice. Open the project in any IDE of your choice.
## Install all dependancies ## Install all dependencies
```bash ```bash
npm ci npm ci

View File

@@ -80,7 +80,9 @@ In the description section, you can add questions, troubles you encountered, or
You can now click on <span class="github-success-btn">Create pull request</span>. You can now click on <span class="github-success-btn">Create pull request</span>.
I will read and comment on it when I have some free time. I will read and comment on it <b>when I have some free time.</b>
<p class="important-block">Don't worry if your answer is not reviewed immediatly. I'm doing it for <b>free</b> and during my <b>free time</b>. If you want to support me, you can do so by <a href="https://github.com/sponsors/tomalaforge">sponsoring me on github</a>. It will validate that my work is of great help for you or your team.</p>
:::note :::note
Everyone is welcome to comment and read other PRs. Everyone is welcome to comment and read other PRs.

View File

@@ -3,6 +3,8 @@ title: Welcome to Angular Challenges
description: Get started by resolving those challenges and becoming a better Angular FrontEnd engineer. description: Get started by resolving those challenges and becoming a better Angular FrontEnd engineer.
template: splash template: splash
noCommentSection: true noCommentSection: true
banner:
content: I will have less free time in the next two months, so don't worry if your pull requests take some time to be reviewed.
hero: hero:
tagline: Start now and become an Angular Expert! tagline: Start now and become an Angular Expert!
image: image:
@@ -51,7 +53,12 @@ import MyIcon from '../../components/MyIcon.astro';
</Card> </Card>
<Card title="Prepare Yourself for Interviews"> <Card title="Prepare Yourself for Interviews">
Completing these challenges will prepare you for any technical challenges you may encounter in a frontend role during interviews. Completing these challenges will prepare you for any technical challenges you
may encounter in a frontend role during interviews.
</Card>
<Card title="Sponsoring">
This project is free and aims to remain so for as long as possible. However, everything is accomplished during my free time, including creating challenges and reviewing pull requests (PRs). <b>Sponsorship can support me and contribute to the growth of the project</b>.
</Card> </Card>
</CardGrid> </CardGrid>

View File

@@ -84,7 +84,7 @@ a.primary > svg {
} }
b { b {
color: var(--sl-color-accent-high); color: var(--sl-color-accent-high) !important;
} }
.starlight-aside--tip b { .starlight-aside--tip b {
@@ -124,3 +124,31 @@ starlight-menu-button svg {
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
} }
.important-block {
border: solid 1px red;
padding: 16px;
background-color: #f100002e;
}
.starlight-aside--note,
.starlight-aside--tip {
background-color: transparent;
border: solid 1px gray;
color: var(--sl-color-text);
}
.starlight-aside--note .starlight-aside__title,
.starlight-aside--tip .starlight-aside__title {
color: white;
}
.starlight-aside--danger {
background-color: #f100002e;
border: solid 1px red;
color: var(--sl-color-text);
}
.starlight-aside--danger .starlight-aside__title {
color: red;
}

View File

@@ -26,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/angular/di/jest.config.ts", "jestConfig": "libs/angular/di/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -33,8 +33,7 @@
"glob": "executors.json", "glob": "executors.json",
"output": "." "output": "."
} }
], ]
"updateBuildableProjectDepsInPackageJson": true
} }
}, },
"lint": { "lint": {

View File

@@ -33,8 +33,7 @@
"glob": "executors.json", "glob": "executors.json",
"output": "." "output": "."
} }
], ]
"updateBuildableProjectDepsInPackageJson": true
} }
}, },
"lint": { "lint": {
@@ -52,14 +51,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/custom-plugin/jest.config.ts", "jestConfig": "libs/custom-plugin/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
}, },

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/decoupling/brain/ng-package.json", "project": "libs/decoupling/brain/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/decoupling/brain/jest.config.ts", "jestConfig": "libs/decoupling/brain/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/decoupling/core/ng-package.json", "project": "libs/decoupling/core/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/decoupling/core/jest.config.ts", "jestConfig": "libs/decoupling/core/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/decoupling/helmet/ng-package.json", "project": "libs/decoupling/helmet/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/decoupling/helmet/jest.config.ts", "jestConfig": "libs/decoupling/helmet/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/fake-utils/ng-package.json", "project": "libs/fake-utils/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/admin/feature/jest.config.ts", "jestConfig": "libs/module-to-standalone/admin/feature/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/admin/shared/jest.config.ts", "jestConfig": "libs/module-to-standalone/admin/shared/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/module-to-standalone/core/providers/ng-package.json", "project": "libs/module-to-standalone/core/providers/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/core/providers/jest.config.ts", "jestConfig": "libs/module-to-standalone/core/providers/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/core/service/jest.config.ts", "jestConfig": "libs/module-to-standalone/core/service/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/forbidden/jest.config.ts", "jestConfig": "libs/module-to-standalone/forbidden/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/home/jest.config.ts", "jestConfig": "libs/module-to-standalone/home/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,14 +10,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/shell/jest.config.ts", "jestConfig": "libs/module-to-standalone/shell/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/module-to-standalone/user/contact/ng-package.json", "project": "libs/module-to-standalone/user/contact/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/user/contact/jest.config.ts", "jestConfig": "libs/module-to-standalone/user/contact/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/module-to-standalone/user/home/ng-package.json", "project": "libs/module-to-standalone/user/home/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/user/home/jest.config.ts", "jestConfig": "libs/module-to-standalone/user/home/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/module-to-standalone/user/shell/ng-package.json", "project": "libs/module-to-standalone/user/shell/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/module-to-standalone/user/shell/jest.config.ts", "jestConfig": "libs/module-to-standalone/user/shell/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -9,8 +9,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/ngrx-notification/backend/jest.config.ts", "jestConfig": "libs/ngrx-notification/backend/jest.config.ts"
"passWithNoTests": true
} }
}, },
"lint": { "lint": {

View File

@@ -9,8 +9,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/ngrx-notification/model/jest.config.ts", "jestConfig": "libs/ngrx-notification/model/jest.config.ts"
"passWithNoTests": true
} }
}, },
"lint": { "lint": {

View File

@@ -10,8 +10,7 @@
"executor": "@nx/angular:ng-packagr-lite", "executor": "@nx/angular:ng-packagr-lite",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/shared/directives/ng-package.json", "project": "libs/shared/directives/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -27,14 +26,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/shared/directives/jest.config.ts", "jestConfig": "libs/shared/directives/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
}, },
"lint": { "lint": {

View File

@@ -9,8 +9,7 @@
"executor": "@nx/angular:package", "executor": "@nx/angular:package",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"], "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": { "options": {
"project": "libs/shared/ngrx-callstate-store/ng-package.json", "project": "libs/shared/ngrx-callstate-store/ng-package.json"
"updateBuildableProjectDepsInPackageJson": true
}, },
"configurations": { "configurations": {
"production": { "production": {
@@ -26,8 +25,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/shared/ngrx-callstate-store/jest.config.ts", "jestConfig": "libs/shared/ngrx-callstate-store/jest.config.ts"
"passWithNoTests": true
} }
}, },
"lint": { "lint": {

View File

@@ -9,8 +9,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "libs/shared/utils/jest.config.ts", "jestConfig": "libs/shared/utils/jest.config.ts"
"passWithNoTests": true
} }
}, },
"lint": { "lint": {

View File

@@ -1,108 +1,116 @@
{ {
"migrations": [ "migrations": [
{ {
"cli": "nx", "version": "17.1.0-beta.1",
"version": "16.6.0-beta.6", "description": "Updates for @typescript-utils/utils v6.9.1+",
"description": "Prefix outputs with {workspaceRoot}/{projectRoot} if needed", "implementation": "./src/migrations/update-17-1-0/update-typescript-eslint",
"implementation": "./src/migrations/update-15-0-0/prefix-outputs", "package": "@nx/eslint",
"package": "nx", "name": "update-typescript-eslint"
"name": "16.6.0-prefix-outputs"
}, },
{ {
"cli": "nx", "cli": "nx",
"version": "16.8.0-beta.3", "version": "17.0.2",
"description": "Escape $ in env variables", "description": "Remove deprecated build options",
"implementation": "./src/migrations/update-16-8-0/escape-dollar-sign-env-variables", "implementation": "./src/migrations/update-17-0-0/remove-deprecated-build-options",
"package": "nx",
"name": "16.8.0-escape-dollar-sign-env"
},
{
"cli": "nx",
"version": "17.0.0-beta.1",
"description": "Updates the default cache directory to .nx/cache",
"implementation": "./src/migrations/update-17-0-0/move-cache-directory",
"package": "nx",
"name": "17.0.0-move-cache-directory"
},
{
"cli": "nx",
"version": "17.0.0-beta.3",
"description": "Use minimal config for tasksRunnerOptions",
"implementation": "./src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options",
"package": "nx",
"name": "17.0.0-use-minimal-config-for-tasks-runner-options"
},
{
"version": "17.0.0-rc.1",
"description": "Migration for v17.0.0-rc.1",
"implementation": "./src/migrations/update-17-0-0/rm-default-collection-npm-scope",
"package": "nx",
"name": "rm-default-collection-npm-scope"
},
{
"cli": "nx",
"version": "16.6.0-beta.0",
"description": "Explicitly set 'updateBuildableProjectDepsInPackageJson' to 'true' in targets that rely on that value as the default.",
"factory": "./src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps",
"package": "@nx/js", "package": "@nx/js",
"name": "explicitly-set-projects-to-update-buildable-deps" "name": "update-17-0-0-remove-deprecated-build-options"
}, },
{ {
"cli": "nx", "cli": "nx",
"version": "16.8.2-beta.0", "version": "17.1.0-beta.5",
"description": "Remove invalid options (strict, noInterop) for ES6 type modules.",
"factory": "./src/migrations/update-16-8-2/update-swcrc",
"package": "@nx/js",
"name": "16-8-2-update-swcrc"
},
{
"cli": "nx",
"version": "16.9.0-beta.1",
"description": "Replace imports of Module Federation utils frm @nx/devkit to @nx/webpack",
"implementation": "./src/migrations/update-16-9-0/migrate-mf-util-usage",
"package": "@nx/devkit",
"name": "update-16-9-0-migrate-mf-usage-to-webpack"
},
{
"cli": "nx",
"version": "16.6.0-beta.0",
"description": "Explicitly set 'updateBuildableProjectDepsInPackageJson' to 'true' in targets that rely on that value as the default.",
"factory": "./src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps",
"package": "@nx/angular",
"name": "explicitly-set-projects-to-update-buildable-deps"
},
{
"cli": "nx",
"version": "16.7.0-beta.6",
"requires": { "requires": {
"@angular/core": ">=16.2.0" "@angular/core": ">=17.0.0"
}, },
"description": "Update the @angular/cli package version to ~16.2.0.", "description": "Update the @angular/cli package version to ~17.0.0.",
"factory": "./src/migrations/update-16-7-0/update-angular-cli", "factory": "./src/migrations/update-17-1-0/update-angular-cli",
"package": "@nx/angular", "package": "@nx/angular",
"name": "update-angular-cli-version-16-2-0" "name": "update-angular-cli-version-17-0-0"
}, },
{ {
"cli": "nx", "cli": "nx",
"version": "16.8.0-beta.4", "version": "17.1.0-beta.5",
"description": "Update to Cypress v13. Most noteable change is video recording is off by default. This migration will only update if the workspace is already on Cypress v12. https://docs.cypress.io/guides/references/migration-guide#Migrating-to-Cypress-130", "requires": {
"implementation": "./src/migrations/update-16-8-0/cypress-13", "@angular/core": ">=17.0.0"
"package": "@nx/cypress", },
"name": "update-16-8-0-cypress-13" "description": "Rename 'browserTarget' to 'buildTarget'.",
"factory": "./src/migrations/update-17-1-0/browser-target-to-build-target",
"package": "@nx/angular",
"name": "rename-browser-target-to-build-target"
}, },
{ {
"version": "16.8.0", "cli": "nx",
"description": "update-16-8-0-add-ignored-files", "version": "17.1.0-beta.5",
"implementation": "./src/migrations/update-16-8-0-add-ignored-files/update-16-8-0-add-ignored-files", "requires": {
"package": "@nx/eslint", "@angular/core": ">=17.0.0"
"name": "update-16-8-0-add-ignored-files" },
"description": "Replace usages of '@nguniversal/builders' with '@angular-devkit/build-angular'.",
"factory": "./src/migrations/update-17-1-0/replace-nguniversal-builders",
"package": "@nx/angular",
"name": "replace-nguniversal-builders"
}, },
{ {
"version": "17.0.0-beta.7", "cli": "nx",
"description": "update-17-0-0-rename-to-eslint", "version": "17.1.0-beta.5",
"implementation": "./src/migrations/update-17-0-0-rename-to-eslint/update-17-0-0-rename-to-eslint", "requires": {
"package": "@nx/eslint", "@angular/core": ">=17.0.0"
"name": "update-17-0-0-rename-to-eslint" },
"description": "Replace usages of '@nguniversal/' packages with '@angular/ssr'.",
"factory": "./src/migrations/update-17-1-0/replace-nguniversal-engines",
"package": "@nx/angular",
"name": "replace-nguniversal-engines"
},
{
"cli": "nx",
"version": "17.1.0-beta.5",
"requires": {
"@angular/core": ">=17.0.0"
},
"description": "Replace the deep imports from 'zone.js/dist/zone' and 'zone.js/dist/zone-testing' with 'zone.js' and 'zone.js/testing'.",
"factory": "./src/migrations/update-17-1-0/update-zone-js-deep-import",
"package": "@nx/angular",
"name": "update-zone-js-deep-import"
},
{
"version": "17.1.0-beta.2",
"description": "Move jest executor options to nx.json targetDefaults",
"implementation": "./src/migrations/update-17-1-0/move-options-to-target-defaults",
"package": "@nx/jest",
"name": "move-options-to-target-defaults"
},
{
"version": "17.0.0",
"description": "Angular v17 introduces a new control flow syntax that uses the @ and } characters. This migration replaces the existing usages with their corresponding HTML entities.",
"factory": "./migrations/block-template-entities/bundle",
"package": "@angular/core",
"name": "block-template-entities"
},
{
"version": "17.0.0",
"description": "CompilerOption.useJit and CompilerOption.missingTranslation are unused under Ivy. This migration removes their usage",
"factory": "./migrations/compiler-options/bundle",
"package": "@angular/core",
"name": "migration-v17-compiler-options"
},
{
"version": "17.0.0",
"description": "Updates `TransferState`, `makeStateKey`, `StateKey` imports from `@angular/platform-browser` to `@angular/core`.",
"factory": "./migrations/transfer-state/bundle",
"package": "@angular/core",
"name": "migration-transfer-state"
},
{
"version": "17.0.0-0",
"description": "Updates Angular Material to v17",
"factory": "./ng-update/index_bundled#updateToV17",
"package": "@angular/material",
"name": "migration-v17"
},
{
"version": "17.0.0-0",
"description": "Updates the Angular CDK to v17",
"factory": "./ng-update/index#updateToV17",
"package": "@angular/cdk",
"name": "migration-v17"
} }
] ]
} }

21
nx.json
View File

@@ -6,14 +6,6 @@
"inputs": ["production", "^production"], "inputs": ["production", "^production"],
"cache": true "cache": true
}, },
"test": {
"inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"],
"cache": true
},
"e2e": {
"inputs": ["default", "^production"],
"cache": true
},
"lint": { "lint": {
"inputs": [ "inputs": [
"default", "default",
@@ -25,6 +17,19 @@
"component-test": { "component-test": {
"inputs": ["default", "^production"], "inputs": ["default", "^production"],
"cache": true "cache": true
},
"@nx/jest:jest": {
"inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"],
"cache": true,
"options": {
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
} }
}, },
"namedInputs": { "namedInputs": {

9223
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,68 +12,68 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "~16.2.0", "@angular/animations": "17.0.3",
"@angular/cdk": "~16.2.0", "@angular/cdk": "17.0.1",
"@angular/common": "~16.2.0", "@angular/common": "17.0.3",
"@angular/compiler": "~16.2.0", "@angular/compiler": "17.0.3",
"@angular/core": "~16.2.0", "@angular/core": "17.0.3",
"@angular/forms": "~16.2.0", "@angular/forms": "17.0.3",
"@angular/material": "~16.2.0", "@angular/material": "17.0.1",
"@angular/platform-browser": "~16.2.0", "@angular/platform-browser": "17.0.3",
"@angular/platform-browser-dynamic": "~16.2.0", "@angular/platform-browser-dynamic": "17.0.3",
"@angular/router": "~16.2.0", "@angular/router": "17.0.3",
"@ngneat/falso": "^6.4.0", "@ngneat/falso": "^6.4.0",
"@ngrx/component": "16.0.0", "@ngrx/component": "17.0.0-rc.0",
"@ngrx/component-store": "16.0.0", "@ngrx/component-store": "17.0.0-rc.0",
"@ngrx/effects": "16.0.0", "@ngrx/effects": "17.0.0-rc.0",
"@ngrx/entity": "16.0.0", "@ngrx/entity": "17.0.0-rc.0",
"@ngrx/router-store": "16.0.0", "@ngrx/router-store": "17.0.0-rc.0",
"@ngrx/store": "16.0.0", "@ngrx/store": "17.0.0-rc.0",
"@nx/angular": "17.0.1", "@nx/angular": "17.1.2",
"@rx-angular/cdk": "^1.0.0-rc.4", "@rx-angular/cdk": "^17.0.0",
"@rx-angular/state": "^1.7.0", "@rx-angular/state": "^17.0.0",
"@rx-angular/template": "^1.0.0-rc.5", "@rx-angular/template": "^17.0.0",
"@swc/helpers": "0.5.3", "@swc/helpers": "0.5.3",
"rxjs": "7.8.1", "rxjs": "7.8.1",
"tailwindcss": "^3.2.1", "tailwindcss": "^3.3.5",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"zone.js": "0.13.0" "zone.js": "0.14.2"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~16.2.0", "@angular-devkit/build-angular": "17.0.1",
"@angular-devkit/core": "~16.2.0", "@angular-devkit/core": "17.0.1",
"@angular-devkit/schematics": "~16.2.0", "@angular-devkit/schematics": "17.0.1",
"@angular-eslint/eslint-plugin": "~16.0.0", "@angular-eslint/eslint-plugin": "17.0.1",
"@angular-eslint/eslint-plugin-template": "~16.0.0", "@angular-eslint/eslint-plugin-template": "17.0.1",
"@angular-eslint/template-parser": "~16.0.0", "@angular-eslint/template-parser": "17.0.1",
"@angular/cli": "~16.2.0", "@angular/cli": "~17.0.0",
"@angular/compiler-cli": "~16.2.0", "@angular/compiler-cli": "17.0.3",
"@angular/language-service": "~16.2.0", "@angular/language-service": "17.0.3",
"@commitlint/cli": "^17.2.0", "@commitlint/cli": "^17.2.0",
"@commitlint/config-conventional": "^17.2.0", "@commitlint/config-conventional": "^17.2.0",
"@cypress/webpack-dev-server": "^2.0.0", "@cypress/webpack-dev-server": "^2.0.0",
"@hirez_io/observer-spy": "^2.2.0", "@hirez_io/observer-spy": "^2.2.0",
"@ngrx/schematics": "16.0.0", "@ngrx/schematics": "17.0.0-rc.0",
"@nx/cypress": "17.0.1", "@nx/cypress": "17.1.2",
"@nx/devkit": "17.0.1", "@nx/devkit": "17.1.2",
"@nx/eslint": "17.0.1", "@nx/eslint": "17.1.2",
"@nx/eslint-plugin": "17.0.1", "@nx/eslint-plugin": "17.1.2",
"@nx/jest": "17.0.1", "@nx/jest": "17.1.2",
"@nx/js": "17.0.1", "@nx/js": "17.1.2",
"@nx/plugin": "17.0.1", "@nx/plugin": "17.1.2",
"@nx/workspace": "17.0.1", "@nx/workspace": "17.1.2",
"@schematics/angular": "~16.2.0", "@schematics/angular": "17.0.1",
"@swc-node/register": "1.6.8", "@swc-node/register": "1.6.8",
"@swc/cli": "~0.1.62", "@swc/cli": "~0.1.62",
"@swc/core": "1.3.94", "@swc/core": "1.3.94",
"@testing-library/angular": "^13.3.0", "@testing-library/angular": "^14.5.0",
"@testing-library/cypress": "10.0.1", "@testing-library/cypress": "10.0.1",
"@testing-library/jest-dom": "^5.16.5", "@testing-library/jest-dom": "^6.1.4",
"@testing-library/user-event": "^14.4.3", "@testing-library/user-event": "^14.5.1",
"@types/jest": "29.4.0", "@types/jest": "29.4.0",
"@types/node": "18.7.1", "@types/node": "18.7.1",
"@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/eslint-plugin": "6.11.0",
"@typescript-eslint/parser": "5.62.0", "@typescript-eslint/parser": "6.11.0",
"all-contributors-cli": "^6.26.1", "all-contributors-cli": "^6.26.1",
"cypress": "^13.0.0", "cypress": "^13.0.0",
"eslint": "8.46.0", "eslint": "8.46.0",
@@ -83,20 +83,20 @@
"husky": "^8.0.2", "husky": "^8.0.2",
"jest": "29.5.0", "jest": "29.5.0",
"jest-environment-jsdom": "29.5.0", "jest-environment-jsdom": "29.5.0",
"jest-preset-angular": "13.1.1", "jest-preset-angular": "13.1.4",
"jsonc-eslint-parser": "^2.1.0", "jsonc-eslint-parser": "^2.1.0",
"lint-staged": "^13.0.3", "lint-staged": "^13.0.3",
"ng-packagr": "16.2.3", "ng-packagr": "17.0.1",
"nx": "17.0.1", "nx": "17.1.2",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"postcss-import": "~14.1.0", "postcss-import": "~14.1.0",
"postcss-preset-env": "~7.5.0", "postcss-preset-env": "~7.5.0",
"postcss-url": "~10.1.3", "postcss-url": "~10.1.3",
"prettier": "^2.6.2", "prettier": "^3.1.0",
"testing-library-selector": "^0.2.1", "testing-library-selector": "^0.3.1",
"ts-jest": "29.1.0", "ts-jest": "29.1.0",
"ts-node": "10.9.1", "ts-node": "10.9.1",
"typescript": "5.1.6" "typescript": "5.2.2"
}, },
"lint-staged": { "lint-staged": {
"*.{ts,json,md}": [ "*.{ts,json,md}": [

View File

@@ -7,7 +7,5 @@ export default {
}, },
moduleFileExtensions: ['ts', 'js', 'html'], moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/tools/eslint-rules', coverageDirectory: '../../coverage/tools/eslint-rules',
moduleNameMapper: { moduleNameMapper: {},
'@eslint/eslintrc': '@eslint/eslintrc/dist/eslintrc-universal.cjs',
},
}; };

View File

@@ -7,14 +7,7 @@
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": { "options": {
"jestConfig": "tools/eslint-rules/jest.config.ts", "jestConfig": "tools/eslint-rules/jest.config.ts"
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
} }
} }
} }

View File

@@ -25,7 +25,7 @@ export const rule = ESLintUtils.RuleCreator(() => __filename)({
type: 'problem', type: 'problem',
docs: { docs: {
description: ``, description: ``,
recommended: 'error', recommended: 'recommended',
}, },
schema: [], schema: [],
messages: {}, messages: {},

View File

@@ -1,7 +1,8 @@
{ {
"extends": "../../tsconfig.base.json", "extends": "../../tsconfig.base.json",
"compilerOptions": { "compilerOptions": {
"module": "commonjs" "module": "node16",
"moduleResolution": "node16"
}, },
"files": [], "files": [],
"include": [], "include": [],

View File

@@ -2,7 +2,6 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"] "types": ["jest", "node"]
}, },
"include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]

Some files were not shown because too many files have changed in this diff Show More