typescript-express-starter 6.3.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.kr.md +13 -11
- package/README.md +12 -10
- package/lib/graphql/.dockerignore +18 -0
- package/lib/graphql/.editorconfig +9 -0
- package/lib/graphql/.env +1 -0
- package/lib/graphql/.eslintignore +1 -0
- package/lib/graphql/.eslintrc +18 -0
- package/lib/graphql/.huskyrc +5 -0
- package/lib/graphql/.lintstagedrc.json +5 -0
- package/lib/graphql/.prettierrc +8 -0
- package/lib/graphql/.swcrc +39 -0
- package/lib/graphql/.vscode/launch.json +35 -0
- package/lib/graphql/.vscode/settings.json +6 -0
- package/lib/graphql/Dockerfile +24 -0
- package/lib/graphql/Makefile +6 -0
- package/lib/graphql/docker-compose.yml +50 -0
- package/lib/graphql/ecosystem.config.js +59 -0
- package/lib/graphql/jest.config.js +12 -0
- package/lib/graphql/nginx.conf +40 -0
- package/lib/graphql/nodemon.json +12 -0
- package/lib/graphql/package.json +79 -0
- package/lib/graphql/src/app.ts +105 -0
- package/lib/graphql/src/configs/development.json +19 -0
- package/lib/graphql/src/configs/production.json +19 -0
- package/lib/graphql/src/configs/test.json +19 -0
- package/lib/graphql/src/databases/index.ts +24 -0
- package/lib/graphql/src/dtos/users.dto.ts +14 -0
- package/lib/graphql/src/entities/users.entity.ts +26 -0
- package/lib/graphql/src/exceptions/HttpException.ts +10 -0
- package/lib/graphql/src/http/auth.http +49 -0
- package/lib/graphql/src/http/users.http +78 -0
- package/lib/graphql/src/index.ts +1 -0
- package/lib/graphql/src/interfaces/auth.interface.ts +14 -0
- package/lib/graphql/src/interfaces/db.interface.ts +7 -0
- package/lib/graphql/src/interfaces/users.interface.ts +5 -0
- package/lib/graphql/src/middlewares/auth.middleware.ts +32 -0
- package/lib/graphql/src/middlewares/error.middleware.ts +17 -0
- package/lib/graphql/src/repositories/auth.repository.ts +61 -0
- package/lib/graphql/src/repositories/users.repository.ts +60 -0
- package/lib/graphql/src/resolvers/auth.resolver.ts +32 -0
- package/lib/graphql/src/resolvers/users.resolver.ts +47 -0
- package/lib/graphql/src/server.ts +14 -0
- package/lib/graphql/src/tests/auth.test.ts +52 -0
- package/lib/graphql/src/tests/index.test.ts +18 -0
- package/lib/graphql/src/tests/users.test.ts +71 -0
- package/lib/graphql/src/typedefs/users.type.ts +13 -0
- package/lib/graphql/src/utils/logger.ts +75 -0
- package/lib/graphql/src/utils/util.ts +19 -0
- package/lib/graphql/src/utils/validateEnv.ts +10 -0
- package/lib/graphql/tsconfig.json +39 -0
- package/package.json +3 -1
package/README.kr.md
CHANGED
|
@@ -100,12 +100,12 @@ $ npx typescript-express-starter "project name"
|
|
|
100
100
|
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
101
101
|
| Default | Express 기본 |
|
|
102
102
|
| Routing Controllers | 데코레이터 사용량이 많은 구조화되고 선언적이며 아름답게 구성된 클래스 기반 컨트롤러 생성 |
|
|
103
|
-
|
|
|
103
|
+
| Sequelize | Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원하는 Promise 패턴 기반의 Node.js ORM |
|
|
104
104
|
| Mongoose | Node.js와 MongoDB를 위한 ODM(Object Data Mapping) 라이브러리 |
|
|
105
105
|
| TypeORM | 자바스크립트, 타입스크립트과 함께 사용되어 Node.js, React Native, Expo에서 실행될 수 있는 ORM |
|
|
106
106
|
| Prisma | 데이터베이스에 데이터를 프로그래밍 언어의 객체와 매핑하여 기존에 SQL로 작성하던 데이터를 수정, 테이블 구조 변경등의 작업을 객체를 통해 프로그래밍적으로 할 수 있도록 해주는 ORM |
|
|
107
107
|
| Knex | 쿼리 빌더를 위한 라이브러리 |
|
|
108
|
-
| GraphQL
|
|
108
|
+
| GraphQL | API 용 쿼리 언어이며 기존 데이터로 이러한 쿼리를 수행하기위한 런타임 |
|
|
109
109
|
|
|
110
110
|
## 🛎 Script 명령어
|
|
111
111
|
|
|
@@ -145,24 +145,24 @@ $ npx typescript-express-starter "project name"
|
|
|
145
145
|
|
|
146
146
|
> [Simple Icons](https://simpleicons.org/)
|
|
147
147
|
|
|
148
|
-
### 🐳
|
|
148
|
+
### 🐳 Docker :: 컨테이너 플랫폼
|
|
149
149
|
|
|
150
|
-
[
|
|
150
|
+
[Docker](https://docs.docker.com/)란, 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
|
|
151
151
|
|
|
152
|
-
[
|
|
152
|
+
[설치 홈페이지](https://docs.docker.com/get-docker/)에 접속해서 설치를 해줍니다.
|
|
153
153
|
|
|
154
154
|
- 백그라운드에서 컨테이너를 시작하고 실행 : `docker-compose up -d`
|
|
155
155
|
- 컨테이너를 중지하고 컨테이너, 네트워크, 볼륨 및 이미지를 제거 : `docker-compose down`
|
|
156
156
|
|
|
157
157
|
수정을 원하시면 `docker-compose.yml`과 `Dockerfile`를 수정해주시면 됩니다.
|
|
158
158
|
|
|
159
|
-
### ♻️
|
|
159
|
+
### ♻️ Nginx :: 웹 서버
|
|
160
160
|
|
|
161
|
-
[
|
|
161
|
+
[Nginx](https://www.nginx.com/) 역방향 프록시,로드 밸런서, 메일 프록시 및 HTTP 캐시로도 사용할 수있는 웹 서버입니다.
|
|
162
162
|
|
|
163
163
|
프록시는 일반적으로 여러 서버에로드를 분산하거나, 다른 웹 사이트의 콘텐츠를 원활하게 표시하거나, HTTP 이외의 프로토콜을 통해 처리 요청을 애플리케이션 서버에 전달하는 데 사용됩니다.
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
Nginx 요청을 프록시하면 지정된 프록시 서버로 요청을 보내고 응답을 가져 와서 클라이언트로 다시 보냅니다.
|
|
166
166
|
|
|
167
167
|
수정을 원하시면 `nginx.conf` 파일을 수정해주시면 됩니다.
|
|
168
168
|
|
|
@@ -188,13 +188,13 @@ $ npx typescript-express-starter "project name"
|
|
|
188
188
|
|
|
189
189
|
> 2019년, TSLint 지원이 종료 되어 ESLint를 적용하였습니다.
|
|
190
190
|
|
|
191
|
-
### 📗
|
|
191
|
+
### 📗 Swagger :: API 문서화
|
|
192
192
|
|
|
193
|
-
[
|
|
193
|
+
[Swagger](https://swagger.io/)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다.
|
|
194
194
|
|
|
195
195
|
API를 대규모로 설계하고 문서화하는 데 용이하게 사용합니다.
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
Swagger URL은 `http://localhost:3000/api-docs` 으로 작성했습니다.
|
|
198
198
|
|
|
199
199
|
수정을 원하시면 `swagger.yaml` 파일을 수정해주시면 됩니다.
|
|
200
200
|
|
|
@@ -364,6 +364,8 @@ VSCode Extension에서 [REST Client](https://marketplace.visualstudio.com/items?
|
|
|
364
364
|
|
|
365
365
|
- oricc [https://github.com/oricc](https://github.com/oricc)
|
|
366
366
|
|
|
367
|
+
- Dustin Newbold [https://github.com/dustinnewbold](https://github.com/dustinnewbold)
|
|
368
|
+
|
|
367
369
|
## 💳 라이센스
|
|
368
370
|
|
|
369
371
|
[MIT](LICENSE)
|
package/README.md
CHANGED
|
@@ -100,16 +100,16 @@ Start your typescript-express-starter app in development mode at `http://localho
|
|
|
100
100
|
|
|
101
101
|
#### Template Type
|
|
102
102
|
|
|
103
|
-
| Name
|
|
104
|
-
|
|
|
105
|
-
| Default
|
|
106
|
-
| Routing Controllers
|
|
107
|
-
| Sequelize
|
|
108
|
-
| Mongoose
|
|
109
|
-
| TypeORM
|
|
110
|
-
| Prisma
|
|
111
|
-
| Knex
|
|
112
|
-
| GraphQL
|
|
103
|
+
| Name | Desc |
|
|
104
|
+
| :------------------ | :----------------------------------------------------------------------------------------------------------- |
|
|
105
|
+
| Default | Express Default |
|
|
106
|
+
| Routing Controllers | Create structured, declarative and beautifully organized class-based controllers with heavy decorators usage |
|
|
107
|
+
| Sequelize | Easy to use multi SQL dialect ORM for Node.js |
|
|
108
|
+
| Mongoose | MongoDB Object Modeling(ODM) designed to work in an asynchronous environment |
|
|
109
|
+
| TypeORM | An ORM that can run in Node.js and Others |
|
|
110
|
+
| Prisma | Modern Database Access for TypeScript & Node.js |
|
|
111
|
+
| Knex | SQL query builder for Postgres, MySQL, MariaDB, SQLite3 and Oracle |
|
|
112
|
+
| GraphQL | query language for APIs and a runtime for fulfilling those queries with your existing data |
|
|
113
113
|
|
|
114
114
|
## 🛎 Available Commands for the Server
|
|
115
115
|
|
|
@@ -369,6 +369,8 @@ Modify `.swcrc` file to your source code.
|
|
|
369
369
|
|
|
370
370
|
- oricc [https://github.com/oricc](https://github.com/oricc)
|
|
371
371
|
|
|
372
|
+
- Dustin Newbold [https://github.com/dustinnewbold](https://github.com/dustinnewbold)
|
|
373
|
+
|
|
372
374
|
## 💳 License
|
|
373
375
|
|
|
374
376
|
[MIT](LICENSE)
|
package/lib/graphql/.env
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
PORT=3000
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/dist
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"parser": "@typescript-eslint/parser",
|
|
3
|
+
"extends": ["prettier", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"ecmaVersion": 2018,
|
|
6
|
+
"sourceType": "module"
|
|
7
|
+
},
|
|
8
|
+
"rules": {
|
|
9
|
+
"@typescript-eslint/explicit-member-accessibility": 0,
|
|
10
|
+
"@typescript-eslint/explicit-function-return-type": 0,
|
|
11
|
+
"@typescript-eslint/no-parameter-properties": 0,
|
|
12
|
+
"@typescript-eslint/interface-name-prefix": 0,
|
|
13
|
+
"@typescript-eslint/explicit-module-boundary-types": 0,
|
|
14
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
15
|
+
"@typescript-eslint/ban-types": "off",
|
|
16
|
+
"@typescript-eslint/no-var-requires": "off"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"jsc": {
|
|
3
|
+
"parser": {
|
|
4
|
+
"syntax": "typescript",
|
|
5
|
+
"tsx": false,
|
|
6
|
+
"dynamicImport": true,
|
|
7
|
+
"decorators": true
|
|
8
|
+
},
|
|
9
|
+
"transform": {
|
|
10
|
+
"legacyDecorator": true,
|
|
11
|
+
"decoratorMetadata": true
|
|
12
|
+
},
|
|
13
|
+
"target": "es2017",
|
|
14
|
+
"externalHelpers": false,
|
|
15
|
+
"keepClassNames": true,
|
|
16
|
+
"loose": false,
|
|
17
|
+
"minify": {
|
|
18
|
+
"compress": false,
|
|
19
|
+
"mangle": false
|
|
20
|
+
},
|
|
21
|
+
"baseUrl": "src",
|
|
22
|
+
"paths": {
|
|
23
|
+
"@/*": ["*"],
|
|
24
|
+
"@databases": ["databases"],
|
|
25
|
+
"@dtos/*": ["dtos/*"],
|
|
26
|
+
"@entities/*": ["entities/*"],
|
|
27
|
+
"@exceptions/*": ["exceptions/*"],
|
|
28
|
+
"@interfaces/*": ["interfaces/*"],
|
|
29
|
+
"@middlewares/*": ["middlewares/*"],
|
|
30
|
+
"@repositories/*": ["repositories/*"],
|
|
31
|
+
"@resolvers/*": ["resolvers/*"],
|
|
32
|
+
"@typedefs/*": ["typedefs/*"],
|
|
33
|
+
"@utils/*": ["utils/*"]
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"module": {
|
|
37
|
+
"type": "commonjs"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"type": "node-terminal",
|
|
6
|
+
"request": "launch",
|
|
7
|
+
"name": "Dev typescript-express-starter",
|
|
8
|
+
"command": "npm run dev"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "node-terminal",
|
|
12
|
+
"request": "launch",
|
|
13
|
+
"name": "Start typescript-express-starter",
|
|
14
|
+
"command": "npm run start"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "node-terminal",
|
|
18
|
+
"request": "launch",
|
|
19
|
+
"name": "Test typescript-express-starter",
|
|
20
|
+
"command": "npm run test"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "node-terminal",
|
|
24
|
+
"request": "launch",
|
|
25
|
+
"name": "Lint typescript-express-starter",
|
|
26
|
+
"command": "npm run lint"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "node-terminal",
|
|
30
|
+
"request": "launch",
|
|
31
|
+
"name": "Lint:Fix typescript-express-starter",
|
|
32
|
+
"command": "npm run lint:fix"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Common build stage
|
|
2
|
+
FROM node:14.14.0-alpine3.12 as common-build-stage
|
|
3
|
+
|
|
4
|
+
COPY . ./app
|
|
5
|
+
|
|
6
|
+
WORKDIR /app
|
|
7
|
+
|
|
8
|
+
RUN npm install
|
|
9
|
+
|
|
10
|
+
EXPOSE 3000
|
|
11
|
+
|
|
12
|
+
# Development build stage
|
|
13
|
+
FROM common-build-stage as development-build-stage
|
|
14
|
+
|
|
15
|
+
ENV NODE_ENV development
|
|
16
|
+
|
|
17
|
+
CMD ["npm", "run", "dev"]
|
|
18
|
+
|
|
19
|
+
# Production build stage
|
|
20
|
+
FROM common-build-stage as production-build-stage
|
|
21
|
+
|
|
22
|
+
ENV NODE_ENV production
|
|
23
|
+
|
|
24
|
+
CMD ["npm", "run", "start"]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
version: '3.7'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
proxy:
|
|
5
|
+
image: nginx:alpine
|
|
6
|
+
container_name: proxy
|
|
7
|
+
ports:
|
|
8
|
+
- '80:80'
|
|
9
|
+
volumes:
|
|
10
|
+
- ./nginx.conf:/etc/nginx/nginx.conf
|
|
11
|
+
restart: 'unless-stopped'
|
|
12
|
+
networks:
|
|
13
|
+
- backend
|
|
14
|
+
server:
|
|
15
|
+
build:
|
|
16
|
+
context: ./
|
|
17
|
+
target: development-build-stage
|
|
18
|
+
dockerfile: Dockerfile
|
|
19
|
+
container_name: server
|
|
20
|
+
ports:
|
|
21
|
+
- '3000:3000'
|
|
22
|
+
volumes:
|
|
23
|
+
- ./:/app
|
|
24
|
+
- /app/node_modules
|
|
25
|
+
restart: 'unless-stopped'
|
|
26
|
+
networks:
|
|
27
|
+
- backend
|
|
28
|
+
links:
|
|
29
|
+
- pg
|
|
30
|
+
depends_on:
|
|
31
|
+
- pg
|
|
32
|
+
pg:
|
|
33
|
+
image: bitnami/postgresql:11-debian-9
|
|
34
|
+
container_name: pg
|
|
35
|
+
environment:
|
|
36
|
+
POSTGRESQL_USERNAME: root
|
|
37
|
+
POSTGRESQL_PASSWORD: password
|
|
38
|
+
POSTGRESQL_DATABASE: test
|
|
39
|
+
ports:
|
|
40
|
+
- '5432:5432'
|
|
41
|
+
networks:
|
|
42
|
+
- backend
|
|
43
|
+
|
|
44
|
+
networks:
|
|
45
|
+
backend:
|
|
46
|
+
driver: bridge
|
|
47
|
+
|
|
48
|
+
volumes:
|
|
49
|
+
data:
|
|
50
|
+
driver: local
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description pm2 configuration file.
|
|
3
|
+
* @example
|
|
4
|
+
* production mode :: pm2 start ecosystem.config.js --only prod
|
|
5
|
+
* development mode :: pm2 start ecosystem.config.js --only dev
|
|
6
|
+
*/
|
|
7
|
+
module.exports = {
|
|
8
|
+
apps: [
|
|
9
|
+
{
|
|
10
|
+
name: 'prod', // pm2 start App name
|
|
11
|
+
script: 'dist/server.js',
|
|
12
|
+
exec_mode: 'cluster', // 'cluster' or 'fork'
|
|
13
|
+
instance_var: 'INSTANCE_ID', // instance variable
|
|
14
|
+
instances: 2, // pm2 instance count
|
|
15
|
+
autorestart: true, // auto restart if process crash
|
|
16
|
+
watch: false, // files change automatic restart
|
|
17
|
+
ignore_watch: ['node_modules', 'logs'], // ignore files change
|
|
18
|
+
max_memory_restart: '1G', // restart if process use more than 1G memory
|
|
19
|
+
merge_logs: true, // if true, stdout and stderr will be merged and sent to pm2 log
|
|
20
|
+
output: './logs/access.log', // pm2 log file
|
|
21
|
+
error: './logs/error.log', // pm2 error log file
|
|
22
|
+
env: {
|
|
23
|
+
// environment variable
|
|
24
|
+
PORT: 3000,
|
|
25
|
+
NODE_ENV: 'production',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'dev', // pm2 start App name
|
|
30
|
+
script: 'ts-node', // ts-node
|
|
31
|
+
args: '-r tsconfig-paths/register --transpile-only src/server.ts', // ts-node args
|
|
32
|
+
exec_mode: 'cluster', // 'cluster' or 'fork'
|
|
33
|
+
instance_var: 'INSTANCE_ID', // instance variable
|
|
34
|
+
instances: 2, // pm2 instance count
|
|
35
|
+
autorestart: true, // auto restart if process crash
|
|
36
|
+
watch: false, // files change automatic restart
|
|
37
|
+
ignore_watch: ['node_modules', 'logs'], // ignore files change
|
|
38
|
+
max_memory_restart: '1G', // restart if process use more than 1G memory
|
|
39
|
+
merge_logs: true, // if true, stdout and stderr will be merged and sent to pm2 log
|
|
40
|
+
output: './logs/access.log', // pm2 log file
|
|
41
|
+
error: './logs/error.log', // pm2 error log file
|
|
42
|
+
env: {
|
|
43
|
+
// environment variable
|
|
44
|
+
PORT: 3000,
|
|
45
|
+
NODE_ENV: 'development',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
deploy: {
|
|
50
|
+
production: {
|
|
51
|
+
user: 'user',
|
|
52
|
+
host: '0.0.0.0',
|
|
53
|
+
ref: 'origin/master',
|
|
54
|
+
repo: 'git@github.com:repo.git',
|
|
55
|
+
path: 'dist/server.js',
|
|
56
|
+
'post-deploy': 'npm install && npm run build && pm2 reload ecosystem.config.js --only prod',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const { pathsToModuleNameMapper } = require('ts-jest/utils');
|
|
2
|
+
const { compilerOptions } = require('./tsconfig.json');
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
preset: 'ts-jest',
|
|
6
|
+
testEnvironment: 'node',
|
|
7
|
+
roots: ['<rootDir>/src'],
|
|
8
|
+
transform: {
|
|
9
|
+
'^.+\\.tsx?$': 'ts-jest',
|
|
10
|
+
},
|
|
11
|
+
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/src' }),
|
|
12
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
user nginx;
|
|
2
|
+
worker_processes 1;
|
|
3
|
+
|
|
4
|
+
error_log /var/log/nginx/error.log warn;
|
|
5
|
+
pid /var/run/nginx.pid;
|
|
6
|
+
|
|
7
|
+
events {
|
|
8
|
+
worker_connections 1024;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
http {
|
|
12
|
+
include /etc/nginx/mime.types;
|
|
13
|
+
default_type application/octet-stream;
|
|
14
|
+
|
|
15
|
+
upstream api-server {
|
|
16
|
+
server server:3000;
|
|
17
|
+
keepalive 100;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
server {
|
|
21
|
+
listen 80;
|
|
22
|
+
server_name localhost;
|
|
23
|
+
|
|
24
|
+
location / {
|
|
25
|
+
proxy_http_version 1.1;
|
|
26
|
+
proxy_pass http://api-server;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
32
|
+
'$status $body_bytes_sent "$http_referer" '
|
|
33
|
+
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
34
|
+
|
|
35
|
+
access_log /var/log/nginx/access.log main;
|
|
36
|
+
|
|
37
|
+
sendfile on;
|
|
38
|
+
keepalive_timeout 65;
|
|
39
|
+
include /etc/nginx/conf.d/*.conf;
|
|
40
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "graphql",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "TypeScript + GraphQL + TypeORM + Express API Server",
|
|
5
|
+
"author": "",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "npm run build && cross-env NODE_ENV=production node dist/server.js",
|
|
9
|
+
"dev": "cross-env NODE_ENV=development nodemon",
|
|
10
|
+
"build": "swc src -d dist --source-maps --copy-files",
|
|
11
|
+
"build:tsc": "tsc && tsc-alias",
|
|
12
|
+
"test": "jest --forceExit --detectOpenHandles",
|
|
13
|
+
"lint": "eslint --ignore-path .gitignore --ext .ts src/",
|
|
14
|
+
"lint:fix": "npm run lint -- --fix",
|
|
15
|
+
"deploy:prod": "npm run build && pm2 start ecosystem.config.js --only prod",
|
|
16
|
+
"deploy:dev": "pm2 start ecosystem.config.js --only dev"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"apollo-server-core": "^3.5.0",
|
|
20
|
+
"apollo-server-express": "^3.5.0",
|
|
21
|
+
"bcrypt": "^5.0.1",
|
|
22
|
+
"class-validator": "^0.13.1",
|
|
23
|
+
"compression": "^1.7.4",
|
|
24
|
+
"config": "^3.3.6",
|
|
25
|
+
"cookie-parser": "^1.4.5",
|
|
26
|
+
"cors": "^2.8.5",
|
|
27
|
+
"dotenv": "^10.0.0",
|
|
28
|
+
"envalid": "^7.1.0",
|
|
29
|
+
"express": "^4.17.1",
|
|
30
|
+
"graphql": "^15.8.0",
|
|
31
|
+
"helmet": "^4.6.0",
|
|
32
|
+
"hpp": "^0.2.3",
|
|
33
|
+
"jsonwebtoken": "^8.5.1",
|
|
34
|
+
"pg": "^8.7.1",
|
|
35
|
+
"reflect-metadata": "^0.1.13",
|
|
36
|
+
"type-graphql": "^1.1.1",
|
|
37
|
+
"typeorm": "^0.2.34",
|
|
38
|
+
"winston": "^3.3.3",
|
|
39
|
+
"winston-daily-rotate-file": "^4.5.5"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@swc/cli": "^0.1.51",
|
|
43
|
+
"@swc/core": "^1.2.108",
|
|
44
|
+
"@types/bcrypt": "^5.0.0",
|
|
45
|
+
"@types/compression": "^1.7.1",
|
|
46
|
+
"@types/config": "^0.0.39",
|
|
47
|
+
"@types/cookie-parser": "^1.4.2",
|
|
48
|
+
"@types/cors": "^2.8.11",
|
|
49
|
+
"@types/dotenv": "^8.2.0",
|
|
50
|
+
"@types/express": "^4.17.13",
|
|
51
|
+
"@types/helmet": "^4.0.0",
|
|
52
|
+
"@types/hpp": "^0.2.1",
|
|
53
|
+
"@types/jest": "^26.0.24",
|
|
54
|
+
"@types/jsonwebtoken": "^8.5.4",
|
|
55
|
+
"@types/node": "^16.0.1",
|
|
56
|
+
"@types/supertest": "^2.0.11",
|
|
57
|
+
"@types/winston": "^2.4.4",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^4.28.2",
|
|
59
|
+
"@typescript-eslint/parser": "^4.28.2",
|
|
60
|
+
"cross-env": "^7.0.3",
|
|
61
|
+
"eslint": "^7.30.0",
|
|
62
|
+
"eslint-config-prettier": "^8.3.0",
|
|
63
|
+
"eslint-plugin-prettier": "^3.4.0",
|
|
64
|
+
"husky": "^7.0.1",
|
|
65
|
+
"jest": "^27.0.6",
|
|
66
|
+
"lint-staged": "^11.0.0",
|
|
67
|
+
"node-config": "^0.0.2",
|
|
68
|
+
"node-gyp": "^8.1.0",
|
|
69
|
+
"nodemon": "^2.0.9",
|
|
70
|
+
"pm2": "^5.1.0",
|
|
71
|
+
"prettier": "^2.3.2",
|
|
72
|
+
"supertest": "^6.1.3",
|
|
73
|
+
"ts-jest": "^27.0.7",
|
|
74
|
+
"ts-node": "^10.4.0",
|
|
75
|
+
"tsc-alias": "^1.4.1",
|
|
76
|
+
"tsconfig-paths": "^3.10.1",
|
|
77
|
+
"typescript": "^4.5.2"
|
|
78
|
+
}
|
|
79
|
+
}
|