From 96b0fa538552f5396e127d473d5446bd2c443cbb Mon Sep 17 00:00:00 2001 From: chodak166 Date: Sat, 6 Sep 2025 18:35:55 +0200 Subject: [PATCH] WIP: ts --- typescript-nestjs/docker/Dockerfile | 15 +++++ typescript-nestjs/docker/docker-compose.yml | 16 +++++ typescript-nestjs/package.json | 69 +++++++++++++++++++++ typescript-nestjs/src/app.controller.ts | 12 ++++ typescript-nestjs/src/app.module.ts | 10 +++ typescript-nestjs/src/app.service.ts | 8 +++ typescript-nestjs/src/main.ts | 9 +++ typescript-nestjs/tsconfig.json | 21 +++++++ 8 files changed, 160 insertions(+) create mode 100644 typescript-nestjs/docker/Dockerfile create mode 100644 typescript-nestjs/docker/docker-compose.yml create mode 100644 typescript-nestjs/package.json create mode 100644 typescript-nestjs/src/app.controller.ts create mode 100644 typescript-nestjs/src/app.module.ts create mode 100644 typescript-nestjs/src/app.service.ts create mode 100644 typescript-nestjs/src/main.ts create mode 100644 typescript-nestjs/tsconfig.json diff --git a/typescript-nestjs/docker/Dockerfile b/typescript-nestjs/docker/Dockerfile new file mode 100644 index 0000000..8d429e3 --- /dev/null +++ b/typescript-nestjs/docker/Dockerfile @@ -0,0 +1,15 @@ +FROM node:24.0.1-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +RUN npm run build + +EXPOSE 3000 + +CMD ["npm", "run", "start:prod"] \ No newline at end of file diff --git a/typescript-nestjs/docker/docker-compose.yml b/typescript-nestjs/docker/docker-compose.yml new file mode 100644 index 0000000..c8d1c0a --- /dev/null +++ b/typescript-nestjs/docker/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.9" +services: + app: + build: + context: .. + dockerfile: docker/Dockerfile + ports: + - "50080:3000" + volumes: + - ..:/app + networks: + - app-network + +networks: + app-network: + driver: bridge \ No newline at end of file diff --git a/typescript-nestjs/package.json b/typescript-nestjs/package.json new file mode 100644 index 0000000..68c98d7 --- /dev/null +++ b/typescript-nestjs/package.json @@ -0,0 +1,69 @@ +{ + "name": "autostore-nestjs", + "version": "1.0.0", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@nestjs/cli": "^10.0.0", + "@nestjs/schematics": "^10.0.0", + "@nestjs/testing": "^10.0.0", + "@types/express": "^4.17.17", + "@types/jest": "^29.5.2", + "@types/node": "^20.3.1", + "@types/supertest": "^2.0.12", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint": "^8.42.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.5.0", + "prettier": "^3.0.0", + "source-map-support": "^0.5.21", + "supertest": "^6.3.3", + "ts-jest": "^29.1.0", + "ts-loader": "^9.4.3", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.1", + "typescript": "^5.1.3" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} \ No newline at end of file diff --git a/typescript-nestjs/src/app.controller.ts b/typescript-nestjs/src/app.controller.ts new file mode 100644 index 0000000..511781f --- /dev/null +++ b/typescript-nestjs/src/app.controller.ts @@ -0,0 +1,12 @@ +import { Controller, Get } from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get() + getHello(): string { + return this.appService.getHello(); + } +} \ No newline at end of file diff --git a/typescript-nestjs/src/app.module.ts b/typescript-nestjs/src/app.module.ts new file mode 100644 index 0000000..106b857 --- /dev/null +++ b/typescript-nestjs/src/app.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +@Module({ + imports: [], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} \ No newline at end of file diff --git a/typescript-nestjs/src/app.service.ts b/typescript-nestjs/src/app.service.ts new file mode 100644 index 0000000..1cdab92 --- /dev/null +++ b/typescript-nestjs/src/app.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getHello(): string { + return 'Hello World!'; + } +} \ No newline at end of file diff --git a/typescript-nestjs/src/main.ts b/typescript-nestjs/src/main.ts new file mode 100644 index 0000000..86c3a54 --- /dev/null +++ b/typescript-nestjs/src/main.ts @@ -0,0 +1,9 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + app.setGlobalPrefix('api/v1'); + await app.listen(3000); +} +bootstrap(); \ No newline at end of file diff --git a/typescript-nestjs/tsconfig.json b/typescript-nestjs/tsconfig.json new file mode 100644 index 0000000..000fbb1 --- /dev/null +++ b/typescript-nestjs/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2021", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": false, + "noImplicitAny": false, + "strictBindCallApply": false, + "forceConsistentCasingInFileNames": false, + "noFallthroughCasesInSwitch": false + } +} \ No newline at end of file