parent
							
								
									9a8639d279
								
							
						
					
					
						commit
						a6ba795c3b
					
				| @ -0,0 +1,10 @@ | ||||
| { | ||||
|   "extends": ["../../.eslintrc.json"], | ||||
|   "ignorePatterns": ["!**/*"], | ||||
|   "overrides": [ | ||||
|     { | ||||
|       "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], | ||||
|       "rules": {} | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @ -0,0 +1,19 @@ | ||||
| /* eslint-disable */ | ||||
| export default { | ||||
|   displayName: 'agw-e2e', | ||||
|   preset: '../../jest.preset.js', | ||||
|   globalSetup: '<rootDir>/src/support/global-setup.ts', | ||||
|   globalTeardown: '<rootDir>/src/support/global-teardown.ts', | ||||
|   setupFiles: ['<rootDir>/src/support/test-setup.ts'], | ||||
|   testEnvironment: 'node', | ||||
|   transform: { | ||||
|     '^.+\\.[tj]s$': [ | ||||
|       'ts-jest', | ||||
|       { | ||||
|         tsconfig: '<rootDir>/tsconfig.spec.json', | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
|   moduleFileExtensions: ['ts', 'js', 'html'], | ||||
|   coverageDirectory: '../../coverage/agw-e2e', | ||||
| }; | ||||
| @ -0,0 +1,22 @@ | ||||
| { | ||||
|   "name": "agw-e2e", | ||||
|   "$schema": "../../node_modules/nx/schemas/project-schema.json", | ||||
|   "implicitDependencies": ["agw"], | ||||
|   "targets": { | ||||
|     "e2e": { | ||||
|       "executor": "@nx/jest:jest", | ||||
|       "outputs": ["{workspaceRoot}/coverage/{e2eProjectRoot}"], | ||||
|       "options": { | ||||
|         "jestConfig": "apps/agw-e2e/jest.config.ts", | ||||
|         "passWithNoTests": true | ||||
|       } | ||||
|     }, | ||||
|     "lint": { | ||||
|       "executor": "@nx/linter:eslint", | ||||
|       "outputs": ["{options.outputFile}"], | ||||
|       "options": { | ||||
|         "lintFilePatterns": ["apps/agw-e2e/**/*.{js,ts}"] | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| import axios from 'axios'; | ||||
| 
 | ||||
| describe('GET /api', () => { | ||||
|   it('should return a message', async () => { | ||||
|     const res = await axios.get(`/api`); | ||||
| 
 | ||||
|     expect(res.status).toBe(200); | ||||
|     expect(res.data).toEqual({ message: 'Hello API' }); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,10 @@ | ||||
| /* eslint-disable */ | ||||
| var __TEARDOWN_MESSAGE__: string; | ||||
| 
 | ||||
| module.exports = async function () { | ||||
|   // Start services that that the app needs to run (e.g. database, docker-compose, etc.).
 | ||||
|   console.log('\nSetting up...\n'); | ||||
| 
 | ||||
|   // Hint: Use `globalThis` to pass variables to global teardown.
 | ||||
|   globalThis.__TEARDOWN_MESSAGE__ = '\nTearing down...\n'; | ||||
| }; | ||||
| @ -0,0 +1,7 @@ | ||||
| /* eslint-disable */ | ||||
| 
 | ||||
| module.exports = async function () { | ||||
|   // Put clean up logic here (e.g. stopping services, docker-compose, etc.).
 | ||||
|   // Hint: `globalThis` is shared between setup and teardown.
 | ||||
|   console.log(globalThis.__TEARDOWN_MESSAGE__); | ||||
| }; | ||||
| @ -0,0 +1,10 @@ | ||||
| /* eslint-disable */ | ||||
| 
 | ||||
| import axios from 'axios'; | ||||
| 
 | ||||
| module.exports = async function () { | ||||
|   // Configure axios for tests to use.
 | ||||
|   const host = process.env.HOST ?? 'localhost'; | ||||
|   const port = process.env.PORT ?? '3000'; | ||||
|   axios.defaults.baseURL = `http://${host}:${port}`; | ||||
| }; | ||||
| @ -0,0 +1,13 @@ | ||||
| { | ||||
|   "extends": "../../tsconfig.base.json", | ||||
|   "files": [], | ||||
|   "include": [], | ||||
|   "references": [ | ||||
|     { | ||||
|       "path": "./tsconfig.spec.json" | ||||
|     } | ||||
|   ], | ||||
|   "compilerOptions": { | ||||
|     "esModuleInterop": true | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,9 @@ | ||||
| { | ||||
|   "extends": "./tsconfig.json", | ||||
|   "compilerOptions": { | ||||
|     "outDir": "../../dist/out-tsc", | ||||
|     "module": "commonjs", | ||||
|     "types": ["jest", "node"] | ||||
|   }, | ||||
|   "include": ["jest.config.ts", "src/**/*.ts"] | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| { | ||||
|   "extends": ["../../.eslintrc.json"], | ||||
|   "ignorePatterns": ["!**/*"], | ||||
|   "overrides": [ | ||||
|     { | ||||
|       "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], | ||||
|       "rules": {} | ||||
|     }, | ||||
|     { | ||||
|       "files": ["*.ts", "*.tsx"], | ||||
|       "rules": {} | ||||
|     }, | ||||
|     { | ||||
|       "files": ["*.js", "*.jsx"], | ||||
|       "rules": {} | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| /* eslint-disable */ | ||||
| export default { | ||||
|   displayName: 'agw', | ||||
|   preset: '../../jest.preset.js', | ||||
|   testEnvironment: 'node', | ||||
|   transform: { | ||||
|     '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }], | ||||
|   }, | ||||
|   moduleFileExtensions: ['ts', 'js', 'html'], | ||||
|   coverageDirectory: '../../coverage/apps/agw', | ||||
| }; | ||||
| @ -0,0 +1,64 @@ | ||||
| { | ||||
|   "name": "agw", | ||||
|   "$schema": "../../node_modules/nx/schemas/project-schema.json", | ||||
|   "sourceRoot": "apps/agw/src", | ||||
|   "projectType": "application", | ||||
|   "targets": { | ||||
|     "build": { | ||||
|       "executor": "@nx/webpack:webpack", | ||||
|       "outputs": ["{options.outputPath}"], | ||||
|       "defaultConfiguration": "production", | ||||
|       "options": { | ||||
|         "target": "node", | ||||
|         "compiler": "tsc", | ||||
|         "outputPath": "dist/apps/agw", | ||||
|         "main": "apps/agw/src/main.ts", | ||||
|         "tsConfig": "apps/agw/tsconfig.app.json", | ||||
|         "assets": ["apps/agw/src/assets"], | ||||
|         "isolatedConfig": true, | ||||
|         "webpackConfig": "apps/agw/webpack.config.js" | ||||
|       }, | ||||
|       "configurations": { | ||||
|         "development": {}, | ||||
|         "production": {} | ||||
|       } | ||||
|     }, | ||||
|     "serve": { | ||||
|       "executor": "@nx/js:node", | ||||
|       "defaultConfiguration": "development", | ||||
|       "options": { | ||||
|         "buildTarget": "agw:build" | ||||
|       }, | ||||
|       "configurations": { | ||||
|         "development": { | ||||
|           "buildTarget": "agw:build:development" | ||||
|         }, | ||||
|         "production": { | ||||
|           "buildTarget": "agw:build:production" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "lint": { | ||||
|       "executor": "@nx/linter:eslint", | ||||
|       "outputs": ["{options.outputFile}"], | ||||
|       "options": { | ||||
|         "lintFilePatterns": ["apps/agw/**/*.ts"] | ||||
|       } | ||||
|     }, | ||||
|     "test": { | ||||
|       "executor": "@nx/jest:jest", | ||||
|       "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], | ||||
|       "options": { | ||||
|         "jestConfig": "apps/agw/jest.config.ts", | ||||
|         "passWithNoTests": true | ||||
|       }, | ||||
|       "configurations": { | ||||
|         "ci": { | ||||
|           "ci": true, | ||||
|           "codeCoverage": true | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "tags": [] | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| import { Test, TestingModule } from '@nestjs/testing'; | ||||
| 
 | ||||
| import { AppController } from './app.controller'; | ||||
| import { AppService } from './app.service'; | ||||
| 
 | ||||
| describe('AppController', () => { | ||||
|   let app: TestingModule; | ||||
| 
 | ||||
|   beforeAll(async () => { | ||||
|     app = await Test.createTestingModule({ | ||||
|       controllers: [AppController], | ||||
|       providers: [AppService], | ||||
|     }).compile(); | ||||
|   }); | ||||
| 
 | ||||
|   describe('getData', () => { | ||||
|     it('should return "Hello API"', () => { | ||||
|       const appController = app.get<AppController>(AppController); | ||||
|       expect(appController.getData()).toEqual({ message: 'Hello API' }); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,13 @@ | ||||
| import { Controller, Get } from '@nestjs/common'; | ||||
| 
 | ||||
| import { AppService } from './app.service'; | ||||
| 
 | ||||
| @Controller() | ||||
| export class AppController { | ||||
|   constructor(private readonly appService: AppService) {} | ||||
| 
 | ||||
|   @Get() | ||||
|   getData() { | ||||
|     return this.appService.getData(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| import { Module } from '@nestjs/common'; | ||||
| 
 | ||||
| import { AppController } from './app.controller'; | ||||
| import { AppService } from './app.service'; | ||||
| 
 | ||||
| @Module({ | ||||
|   imports: [], | ||||
|   controllers: [AppController], | ||||
|   providers: [AppService], | ||||
| }) | ||||
| export class AppModule {} | ||||
| @ -0,0 +1,21 @@ | ||||
| import { Test } from '@nestjs/testing'; | ||||
| 
 | ||||
| import { AppService } from './app.service'; | ||||
| 
 | ||||
| describe('AppService', () => { | ||||
|   let service: AppService; | ||||
| 
 | ||||
|   beforeAll(async () => { | ||||
|     const app = await Test.createTestingModule({ | ||||
|       providers: [AppService], | ||||
|     }).compile(); | ||||
| 
 | ||||
|     service = app.get<AppService>(AppService); | ||||
|   }); | ||||
| 
 | ||||
|   describe('getData', () => { | ||||
|     it('should return "Hello API"', () => { | ||||
|       expect(service.getData()).toEqual({ message: 'Hello API' }); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,8 @@ | ||||
| import { Injectable } from '@nestjs/common'; | ||||
| 
 | ||||
| @Injectable() | ||||
| export class AppService { | ||||
|   getData(): { message: string } { | ||||
|     return { message: 'Hello API' }; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| /** | ||||
|  * This is not a production server yet! | ||||
|  * This is only a minimal backend to get started. | ||||
|  */ | ||||
| 
 | ||||
| import { Logger } from '@nestjs/common'; | ||||
| import { NestFactory } from '@nestjs/core'; | ||||
| 
 | ||||
| import { AppModule } from './app/app.module'; | ||||
| 
 | ||||
| async function bootstrap() { | ||||
|   const app = await NestFactory.create(AppModule); | ||||
|   const globalPrefix = 'api'; | ||||
|   app.setGlobalPrefix(globalPrefix); | ||||
|   const port = process.env.PORT || 3000; | ||||
|   await app.listen(port); | ||||
|   Logger.log( | ||||
|     `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` | ||||
|   ); | ||||
| } | ||||
| 
 | ||||
| bootstrap(); | ||||
| @ -0,0 +1,12 @@ | ||||
| { | ||||
|   "extends": "./tsconfig.json", | ||||
|   "compilerOptions": { | ||||
|     "outDir": "../../dist/out-tsc", | ||||
|     "module": "commonjs", | ||||
|     "types": ["node"], | ||||
|     "emitDecoratorMetadata": true, | ||||
|     "target": "es2021" | ||||
|   }, | ||||
|   "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], | ||||
|   "include": ["src/**/*.ts"] | ||||
| } | ||||
| @ -0,0 +1,16 @@ | ||||
| { | ||||
|   "extends": "../../tsconfig.base.json", | ||||
|   "files": [], | ||||
|   "include": [], | ||||
|   "references": [ | ||||
|     { | ||||
|       "path": "./tsconfig.app.json" | ||||
|     }, | ||||
|     { | ||||
|       "path": "./tsconfig.spec.json" | ||||
|     } | ||||
|   ], | ||||
|   "compilerOptions": { | ||||
|     "esModuleInterop": true | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,14 @@ | ||||
| { | ||||
|   "extends": "./tsconfig.json", | ||||
|   "compilerOptions": { | ||||
|     "outDir": "../../dist/out-tsc", | ||||
|     "module": "commonjs", | ||||
|     "types": ["jest", "node"] | ||||
|   }, | ||||
|   "include": [ | ||||
|     "jest.config.ts", | ||||
|     "src/**/*.test.ts", | ||||
|     "src/**/*.spec.ts", | ||||
|     "src/**/*.d.ts" | ||||
|   ] | ||||
| } | ||||
| @ -0,0 +1,8 @@ | ||||
| const { composePlugins, withNx } = require('@nx/webpack'); | ||||
| 
 | ||||
| // Nx plugins for webpack.
 | ||||
| module.exports = composePlugins(withNx(), (config) => { | ||||
|   // Update the webpack config as needed here.
 | ||||
|   // e.g. `config.plugins.push(new MyPlugin())`
 | ||||
|   return config; | ||||
| }); | ||||
| @ -0,0 +1,6 @@ | ||||
| { | ||||
|   "/api": { | ||||
|     "target": "http://localhost:3000", | ||||
|     "secure": false | ||||
|   } | ||||
| } | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in new issue