mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
sample(@nestjs) add class serializer sample
This commit is contained in:
21
sample/21-serializer/.gitignore
vendored
Normal file
21
sample/21-serializer/.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# IDE
|
||||
/.idea
|
||||
/.awcache
|
||||
/.vscode
|
||||
|
||||
# misc
|
||||
npm-debug.log
|
||||
|
||||
# example
|
||||
/quick-start
|
||||
|
||||
# tests
|
||||
/test
|
||||
/coverage
|
||||
/.nyc_output
|
||||
|
||||
# dist
|
||||
/dist
|
||||
14
sample/21-serializer/jest.json
Normal file
14
sample/21-serializer/jest.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"moduleFileExtensions": [
|
||||
"ts",
|
||||
"tsx",
|
||||
"js",
|
||||
"json"
|
||||
],
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
|
||||
},
|
||||
"testRegex": "/src/.*\\.(test|spec).(ts|tsx|js)$",
|
||||
"collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"],
|
||||
"coverageReporters": ["json", "lcov"]
|
||||
}
|
||||
5668
sample/21-serializer/package-lock.json
generated
Normal file
5668
sample/21-serializer/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
37
sample/21-serializer/package.json
Normal file
37
sample/21-serializer/package.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "nest-typescript-starter",
|
||||
"version": "1.0.0",
|
||||
"description": "Nest TypeScript starter repository",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "ts-node src/main.ts",
|
||||
"prestart:prod": "tsc",
|
||||
"start:prod": "node dist/main.js",
|
||||
"test": "jest --config=jest.json",
|
||||
"test:watch": "jest --watch --config=jest.json",
|
||||
"test:coverage":
|
||||
"jest --config=jest.json --coverage --coverageDirectory=coverage",
|
||||
"e2e": "jest --config=e2e/jest-e2e.json --forceExit",
|
||||
"e2e:watch": "jest --watch --config=e2e/jest-e2e.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/common": "^5.1.0",
|
||||
"@nestjs/core": "^5.1.0",
|
||||
"@nestjs/microservices": "^5.1.0",
|
||||
"@nestjs/testing": "^5.1.0",
|
||||
"@nestjs/websockets": "^5.1.0",
|
||||
"class-transformer": "^0.1.7",
|
||||
"reflect-metadata": "^0.1.12",
|
||||
"rxjs": "^6.0.0",
|
||||
"typescript": "^2.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^20.0.8",
|
||||
"@types/node": "^7.0.41",
|
||||
"jest": "^20.0.4",
|
||||
"supertest": "^3.0.0",
|
||||
"ts-jest": "^20.0.14",
|
||||
"ts-node": "^6.0.0",
|
||||
"tslint": "^5.9.1"
|
||||
}
|
||||
}
|
||||
27
sample/21-serializer/src/app.controller.ts
Normal file
27
sample/21-serializer/src/app.controller.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import {
|
||||
ClassSerializerInterceptor,
|
||||
Controller,
|
||||
Get,
|
||||
SerializeOptions,
|
||||
UseInterceptors,
|
||||
} from '@nestjs/common';
|
||||
import { RoleEntity } from './entities/role.entity';
|
||||
import { UserEntity } from './entities/user.entity';
|
||||
|
||||
@Controller()
|
||||
@UseInterceptors(ClassSerializerInterceptor)
|
||||
export class AppController {
|
||||
@Get()
|
||||
@SerializeOptions({
|
||||
excludePrefixes: 'excludeAll',
|
||||
})
|
||||
findOne(): UserEntity {
|
||||
return new UserEntity({
|
||||
id: 1,
|
||||
firstName: 'Kamil',
|
||||
lastName: 'Mysliwiec',
|
||||
password: 'password',
|
||||
role: new RoleEntity({ id: 1, name: 'admin' }),
|
||||
});
|
||||
}
|
||||
}
|
||||
7
sample/21-serializer/src/app.module.ts
Normal file
7
sample/21-serializer/src/app.module.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { AppController } from './app.controller';
|
||||
|
||||
@Module({
|
||||
controllers: [AppController],
|
||||
})
|
||||
export class ApplicationModule {}
|
||||
8
sample/21-serializer/src/entities/role.entity.ts
Normal file
8
sample/21-serializer/src/entities/role.entity.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export class RoleEntity {
|
||||
id: number;
|
||||
name: string;
|
||||
|
||||
constructor(partial: Partial<RoleEntity>) {
|
||||
Object.assign(this, partial);
|
||||
}
|
||||
}
|
||||
22
sample/21-serializer/src/entities/user.entity.ts
Normal file
22
sample/21-serializer/src/entities/user.entity.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { Exclude, Expose, Transform } from 'class-transformer';
|
||||
import { RoleEntity } from './role.entity';
|
||||
|
||||
export class UserEntity {
|
||||
id: number;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
|
||||
@Exclude() password: string;
|
||||
|
||||
@Expose()
|
||||
get fullName(): string {
|
||||
return `${this.firstName} ${this.lastName}`;
|
||||
}
|
||||
|
||||
@Transform(role => role.name)
|
||||
role: RoleEntity;
|
||||
|
||||
constructor(partial: Partial<UserEntity>) {
|
||||
Object.assign(this, partial);
|
||||
}
|
||||
}
|
||||
10
sample/21-serializer/src/main.ts
Normal file
10
sample/21-serializer/src/main.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { ValidationPipe } from '@nestjs/common';
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { ApplicationModule } from './app.module';
|
||||
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(ApplicationModule);
|
||||
app.useGlobalPipes(new ValidationPipe());
|
||||
await app.listen(3000);
|
||||
}
|
||||
bootstrap();
|
||||
22
sample/21-serializer/tsconfig.json
Normal file
22
sample/21-serializer/tsconfig.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"declaration": false,
|
||||
"noImplicitAny": false,
|
||||
"removeComments": true,
|
||||
"noLib": false,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"target": "es6",
|
||||
"sourceMap": true,
|
||||
"allowJs": true,
|
||||
"outDir": "./dist"
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
||||
53
sample/21-serializer/tslint.json
Normal file
53
sample/21-serializer/tslint.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended"
|
||||
],
|
||||
"jsRules": {
|
||||
"no-unused-expression": true
|
||||
},
|
||||
"rules": {
|
||||
"eofline": false,
|
||||
"quotemark": [
|
||||
true,
|
||||
"single"
|
||||
],
|
||||
"ordered-imports": [
|
||||
false
|
||||
],
|
||||
"max-line-length": [
|
||||
150
|
||||
],
|
||||
"member-ordering": [
|
||||
false
|
||||
],
|
||||
"curly": false,
|
||||
"interface-name": [
|
||||
false
|
||||
],
|
||||
"array-type": [
|
||||
false
|
||||
],
|
||||
"member-access": [
|
||||
false
|
||||
],
|
||||
"no-empty-interface": false,
|
||||
"no-empty": false,
|
||||
"arrow-parens": false,
|
||||
"object-literal-sort-keys": false,
|
||||
"no-unused-expression": false,
|
||||
"max-classes-per-file": [
|
||||
false
|
||||
],
|
||||
"variable-name": [
|
||||
false
|
||||
],
|
||||
"one-line": [
|
||||
false
|
||||
],
|
||||
"one-variable-per-declaration": [
|
||||
false
|
||||
]
|
||||
},
|
||||
"rulesDirectory": []
|
||||
}
|
||||
3386
sample/21-serializer/yarn.lock
Normal file
3386
sample/21-serializer/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user