Compare commits

...

578 Commits

Author SHA1 Message Date
Kamil Myśliwiec
43d2068828 chore(@nestjs) publish v6.3.2 release 2019-06-22 23:40:29 +02:00
Kamil Mysliwiec
564d43d6d8 Merge pull request #2431 from tychota/fix/grpc-credentials-client
Fix "Channel options must be an object with (...) string values"
2019-06-22 23:38:36 +02:00
Kamil Myśliwiec
41dae583fb fix(common): add type guard to isNil util #2418 2019-06-22 23:37:52 +02:00
Kamil Myśliwiec
5166629ea8 fix(microservices): add missing user option to NATS #2426 2019-06-22 23:37:33 +02:00
TychoTa
44126e9636 bugfix(microservices) remove credentials from options to fix TypeError
I use to have the following exception:
```
(node:19) UnhandledPromiseRejectionWarning: TypeError: Channel options must be an object with string keys and integer or string values
```
I was passing down a credential object to the options like this:
```
const credentials = grpc.credentials.createSsl(
  readFileSync('/srv/certs/rootCA.pem'),
  readFileSync('/srv/certs/server.key'),
  readFileSync('/srv/certs/server.crt')
  );

// later
  @Client({
    transport: Transport.GRPC,
    options: {
      url: 'ms-proxy:50051',
      package: 'hero',
      protoPath: join(__dirname, '..', 'proto/hero.proto'),
      credentials,
    },
  })
``
2019-06-22 17:18:53 +02:00
Kamil Mysliwiec
ae904fd85b Merge pull request #2380 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.10
2019-06-22 17:08:05 +02:00
Renovate Bot
2f1c6f20da chore(deps): update dependency @types/node to v10.14.10 2019-06-22 15:07:34 +00:00
Kamil Mysliwiec
cae1633010 Merge pull request #2364 from nestjs/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.3.4
2019-06-22 17:00:54 +02:00
Kamil Mysliwiec
86c723c730 Merge pull request #2371 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.15.0
2019-06-22 17:00:22 +02:00
Kamil Mysliwiec
9a622ea33c Merge pull request #2423 from nestjs/renovate/ts-loader-6.x
chore(deps): update dependency ts-loader to v6.0.4
2019-06-22 16:59:52 +02:00
Kamil Mysliwiec
317f642c3e Merge pull request #2424 from nestjs/renovate/graphql-tools-4.x
fix(deps): update dependency graphql-tools to v4.0.5
2019-06-22 16:59:37 +02:00
Kamil Mysliwiec
d69542238c Merge pull request #2425 from nestjs/renovate/pug-2.x
fix(deps): update dependency pug to v2.0.4
2019-06-22 16:59:06 +02:00
Kamil Mysliwiec
b54a1b311d Merge pull request #2427 from nestjs/renovate/ws-7.x
fix(deps): update dependency ws to v7.0.1
2019-06-22 16:57:42 +02:00
Kamil Mysliwiec
520977d0d2 Merge pull request #2429 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.18.0
2019-06-22 16:57:31 +02:00
Kamil Mysliwiec
81dd385aaf Merge pull request #2430 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.12
2019-06-22 16:57:09 +02:00
Kamil Mysliwiec
cb2ca9efeb Merge pull request #2363 from nestjs/renovate/prettier-1.x
chore(deps): update dependency prettier to v1.18.2
2019-06-22 16:56:53 +02:00
Renovate Bot
de260afda0 fix(deps): update dependency sequelize to v5.8.12 2019-06-22 14:05:35 +00:00
Kamil Mysliwiec
6625bfda89 Update Readme.md 2019-06-22 13:51:09 +02:00
Renovate Bot
144a5306f0 chore(deps): update dependency tslint to v5.18.0 2019-06-21 15:29:33 +00:00
Renovate Bot
ef782ff98e chore(deps): update dependency ts-loader to v6.0.4 2019-06-21 10:43:15 +00:00
Renovate Bot
18d020b201 fix(deps): update dependency ws to v7.0.1 2019-06-21 09:57:09 +00:00
Renovate Bot
6af9fad092 chore(deps): update dependency webpack-cli to v3.3.4 2019-06-21 08:34:42 +00:00
Renovate Bot
49ebc2b4cd chore(deps): update dependency prettier to v1.18.2 2019-06-21 08:33:57 +00:00
Renovate Bot
eb3b1766b2 chore(deps): update dependency lerna to v3.15.0 2019-06-21 08:32:00 +00:00
Renovate Bot
8b0db0d19f fix(deps): update dependency pug to v2.0.4 2019-06-21 08:06:33 +00:00
Renovate Bot
b6c80a0113 fix(deps): update dependency graphql-tools to v4.0.5 2019-06-21 08:05:59 +00:00
Kamil Mysliwiec
0a4b29a5eb Merge pull request #2362 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.4
2019-06-21 09:59:09 +02:00
Kamil Mysliwiec
1400f18b14 Merge pull request #2365 from nestjs/renovate/iterare-1.x
fix(deps): update dependency iterare to v1.2.0
2019-06-21 09:58:56 +02:00
Kamil Mysliwiec
2c5de9e3c8 Merge pull request #2367 from nestjs/renovate/nats-1.x
fix(deps): update dependency nats to v1.3.0
2019-06-21 09:58:39 +02:00
Kamil Mysliwiec
aa855df73b Merge pull request #2370 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.0
2019-06-21 09:58:13 +02:00
Kamil Mysliwiec
4a94436a85 Merge pull request #2372 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.11
2019-06-21 09:58:02 +02:00
Kamil Mysliwiec
7afc3f78d1 Merge pull request #2382 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.5.0
2019-06-21 09:57:46 +02:00
Kamil Mysliwiec
3f68e239da Merge pull request #2385 from nestjs/renovate/sinon-7.x
chore(deps): update dependency @types/sinon to v7.0.13
2019-06-21 09:57:20 +02:00
Kamil Mysliwiec
96fd31d73f Merge pull request #2386 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.35.0
2019-06-21 09:57:11 +02:00
Kamil Mysliwiec
645080ef1d Merge pull request #2388 from nestjs/renovate/jest-24.x
chore(deps): update dependency @types/jest to v24.0.15
2019-06-21 09:56:07 +02:00
Kamil Mysliwiec
c3c736ec4e Merge pull request #2391 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.5.2
2019-06-21 09:55:51 +02:00
Kamil Mysliwiec
c14322116e Merge pull request #2392 from nestjs/renovate/lint-staged-8.x
chore(deps): update dependency lint-staged to v8.2.1
2019-06-21 09:55:36 +02:00
Kamil Mysliwiec
2ce5c57e9a Merge pull request #2402 from nestjs/renovate/ts-node-8.x
chore(deps): update dependency ts-node to v8.3.0
2019-06-21 09:55:18 +02:00
Kamil Mysliwiec
6343ca569e Merge pull request #2403 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.4
2019-06-21 09:55:07 +02:00
Kamil Mysliwiec
caa08567be Merge pull request #2409 from nestjs/renovate/fastify-static-2.x
chore(deps): update dependency fastify-static to v2.5.0
2019-06-21 09:54:13 +02:00
Renovate Bot
93d9c5ce1e fix(deps): update dependency sequelize to v5.8.11 2019-06-21 05:41:53 +00:00
Renovate Bot
8d52b9f942 fix(deps): update dependency apollo-server-express to v2.6.4 2019-06-20 21:00:49 +00:00
Renovate Bot
7ffad07595 chore(deps): update dependency webpack to v4.35.0 2019-06-20 04:53:32 +00:00
Renovate Bot
2e4e6f398a chore(deps): update dependency fastify-static to v2.5.0 2019-06-17 11:02:56 +00:00
Kamil Myśliwiec
a3304441f8 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-17 10:50:17 +02:00
Kamil Myśliwiec
82513b0c96 sample(): fix microservice sample code 2019-06-17 10:49:40 +02:00
Renovate Bot
c0b4c4a0a6 chore(deps): update dependency @types/jest to v24.0.15 2019-06-16 06:26:01 +00:00
Renovate Bot
a99ded1e16 chore(deps): update dependency core-js to v3.1.4 2019-06-15 12:04:30 +00:00
Renovate Bot
d60d171633 chore(deps): update dependency ts-node to v8.3.0 2019-06-15 01:05:29 +00:00
Renovate Bot
1dcf047474 fix(deps): update dependency mongoose to v5.6.0 2019-06-14 21:17:15 +00:00
Renovate Bot
0683cc7823 chore(deps): update dependency lint-staged to v8.2.1 2019-06-13 18:54:30 +00:00
Renovate Bot
ffd38c534d fix(deps): update dependency typescript to v3.5.2 2019-06-13 17:54:23 +00:00
Renovate Bot
91e88e8e89 chore(deps): update dependency @types/sinon to v7.0.13 2019-06-12 19:16:42 +00:00
Renovate Bot
8452e068dd fix(deps): update dependency fastify to v2.5.0 2019-06-12 10:52:29 +00:00
Renovate Bot
2296f129b7 fix(deps): update dependency nats to v1.3.0 2019-06-07 15:39:06 +00:00
Renovate Bot
ef42ca91a3 fix(deps): update dependency iterare to v1.2.0 2019-06-07 12:37:49 +00:00
Kamil Mysliwiec
56071d0765 Merge pull request #2351 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.3.1
2019-06-06 21:33:53 +02:00
Renovate Bot
fe89046b79 fix(deps): update nest monorepo to v6.3.1 2019-06-06 19:16:45 +00:00
Kamil Mysliwiec
7041d05e4a Merge pull request #2352 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.4
2019-06-06 21:12:45 +02:00
Kamil Mysliwiec
7a313e4425 Merge pull request #2353 from nestjs/renovate/lint-staged-8.x
chore(deps): update dependency lint-staged to v8.2.0
2019-06-06 21:08:55 +02:00
Kamil Mysliwiec
4e1590d0a0 Update package.json 2019-06-06 21:05:32 +02:00
Kamil Mysliwiec
70b7cc083b Merge pull request #2358 from mkaufmaner/patch-1
chore(): fix github sponsor link
2019-06-06 15:56:36 +02:00
Michael Kaufman
1068aa33d6 Fixes Funding Link
chore() Fixes broken funding link for open collective
2019-06-06 09:20:03 -04:00
Renovate Bot
7e8ebeafc8 chore(deps): update dependency lint-staged to v8.2.0 2019-06-06 08:52:01 +00:00
Renovate Bot
440587a0fb fix(deps): update dependency @nestjs/graphql to v6.2.4 2019-06-06 08:21:58 +00:00
Kamil Mysliwiec
6f9fcaf52f Update package.json 2019-06-06 09:23:13 +02:00
Kamil Mysliwiec
f6aa7b233a Merge pull request #2349 from nestjs/renovate/coveralls-3.x
chore(deps): update dependency coveralls to v3.0.4
2019-06-06 09:18:33 +02:00
Kamil Mysliwiec
5b22f54939 Merge pull request #2340 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.3
2019-06-06 09:18:27 +02:00
Kamil Mysliwiec
e0af8d5d3a Merge pull request #2342 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.13
2019-06-06 09:18:19 +02:00
Kamil Myśliwiec
4be19db0ec chore(@nestjs) publish v6.3.1 release 2019-06-06 09:14:19 +02:00
Kamil Myśliwiec
78f9800088 update lerna.json 2019-06-06 09:12:17 +02:00
Kamil Myśliwiec
a3a016e57a Merge branch 'master' of https://github.com/nestjs/nest 2019-06-06 09:10:52 +02:00
Kamil Myśliwiec
bbb3f9475c chore(@nestjs) publish v6.3.1 release 2019-06-06 09:10:11 +02:00
Renovate Bot
6e14da40ad chore(deps): update dependency coveralls to v3.0.4 2019-06-05 23:56:50 +00:00
Kamil Myśliwiec
f210ebca2f fix(core): invalid scopes on module re-export #2341 2019-06-05 22:21:55 +02:00
Renovate Bot
b113d3257e fix(deps): update dependency mongoose to v5.5.13 2019-06-05 15:39:11 +00:00
Renovate Bot
936f7dd283 fix(deps): update dependency @nestjs/graphql to v6.2.3 2019-06-05 11:24:11 +00:00
Kamil Mysliwiec
5c84a78f02 Merge pull request #2339 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.3.0
2019-06-05 10:53:55 +02:00
Renovate Bot
020c0fce0d fix(deps): update nest monorepo to v6.3.0 2019-06-05 08:40:18 +00:00
Kamil Myśliwiec
1167450310 chore(): publish 6.3.0 release 2019-06-05 10:37:01 +02:00
Kamil Myśliwiec
13feee14ab chore(@nestjs) publish v6.3.0 release 2019-06-05 10:35:48 +02:00
Kamil Myśliwiec
3ea9193708 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-05 10:34:17 +02:00
Kamil Myśliwiec
2016fd04ab chore(): publish 6.3.0 release 2019-06-05 10:34:07 +02:00
Kamil Mysliwiec
99eb93d88e Merge pull request #2314 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.8
2019-06-05 09:58:13 +02:00
Renovate Bot
90fe90f158 chore(deps): update dependency @types/node to v10.14.8 2019-06-05 07:56:52 +00:00
Kamil Mysliwiec
366bcaf432 Merge pull request #2311 from nestjs/renovate/axios-0.x
fix(deps): update dependency axios to v0.19.0
2019-06-05 09:51:59 +02:00
Kamil Mysliwiec
1824a9fe59 Merge pull request #2262 from underfin/provider-useExisting
feat(core): support useExisting provider #2415
2019-06-05 09:51:44 +02:00
Kamil Mysliwiec
6a606b027f Merge pull request #2332 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.5.5
2019-06-05 09:49:29 +02:00
Kamil Mysliwiec
da854518fd Merge pull request #2333 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.7
2019-06-05 09:49:20 +02:00
Kamil Mysliwiec
b8fb5edd8d Merge pull request #2334 from nestjs/renovate/typeorm-0.x
fix(deps): update dependency typeorm to v0.2.18
2019-06-05 09:48:58 +02:00
Kamil Mysliwiec
cf1a911525 Merge pull request #2335 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.33.0
2019-06-05 09:48:45 +02:00
Kamil Mysliwiec
ff39013882 Merge pull request #2336 from nestjs/renovate/express-4.x
chore(deps): update dependency @types/express to v4.17.0
2019-06-05 09:48:36 +02:00
Kamil Myśliwiec
d856a5570c feature(microservices): add RequestContext to request scoped 2019-06-05 09:48:03 +02:00
Kamil Myśliwiec
999da7655d refactor(common): simplify isUUID helper function 2019-06-05 09:47:40 +02:00
Renovate Bot
7db09f0679 chore(deps): update dependency @types/express to v4.17.0 2019-06-04 20:51:51 +00:00
Renovate Bot
7957a63930 chore(deps): update dependency webpack to v4.33.0 2019-06-04 19:49:06 +00:00
Renovate Bot
f0d49435c1 fix(deps): update dependency typeorm to v0.2.18 2019-06-04 18:42:17 +00:00
Renovate Bot
1565d85e66 fix(deps): update dependency mongodb to v3.2.7 2019-06-04 18:18:09 +00:00
Renovate Bot
355cde1d52 chore(deps): update dependency @types/mongoose to v5.5.5 2019-06-03 23:53:45 +00:00
Renovate Bot
250c3d0099 fix(deps): update dependency axios to v0.19.0 2019-06-03 20:38:20 +00:00
Kamil Mysliwiec
4624a24199 Merge pull request #2313 from nestjs/renovate/mocha-5.x
chore(deps): update dependency @types/mocha to v5.2.7
2019-06-03 22:29:17 +02:00
Kamil Mysliwiec
75f391a536 Merge pull request #2318 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.3
2019-06-03 22:28:44 +02:00
Kamil Mysliwiec
ca021b9390 Merge pull request #2319 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.17.0
2019-06-03 22:27:03 +02:00
Kamil Mysliwiec
7b669e3668 Merge pull request #2321 from nestjs/renovate/ts-loader-6.x
chore(deps): update dependency ts-loader to v6.0.2
2019-06-03 22:26:45 +02:00
Kamil Mysliwiec
b7e2bb7663 Merge pull request #2324 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.12
2019-06-03 22:26:28 +02:00
Kamil Mysliwiec
4d11d1fbf5 Merge pull request #2325 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.1
2019-06-03 22:26:19 +02:00
Kamil Mysliwiec
354793c272 Merge pull request #2330 from nestjs/renovate/nestjs-typeorm-6.x
fix(deps): update dependency @nestjs/typeorm to v6.1.2
2019-06-03 21:52:33 +02:00
Renovate Bot
bff1199255 fix(deps): update dependency @nestjs/typeorm to v6.1.2 2019-06-03 19:41:40 +00:00
Renovate Bot
f94d3a43c9 fix(deps): update dependency apollo-server-express to v2.6.1 2019-05-31 23:56:13 +00:00
Renovate Bot
8f80407b91 fix(deps): update dependency mongoose to v5.5.12 2019-05-31 10:51:39 +00:00
Renovate Bot
61e0b27200 chore(deps): update dependency ts-loader to v6.0.2 2019-05-31 04:45:39 +00:00
likui
0ff1612111 feat(@nestjs/core): support useExisting provider #2415 2019-05-31 11:13:14 +08:00
Renovate Bot
44198f1dd0 chore(deps): update dependency tslint to v5.17.0 2019-05-30 20:23:35 +00:00
Renovate Bot
1d26de5fd4 chore(deps): update dependency @types/sequelize to v4.28.3 2019-05-30 19:53:45 +00:00
Renovate Bot
6618b43019 chore(deps): update dependency @types/mocha to v5.2.7 2019-05-30 18:27:52 +00:00
Kamil Myśliwiec
343fb310ce Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:45:20 +02:00
Kamil Myśliwiec
d4f1bc7bb7 Merge branch 'Hossein-s-fix-create-param-decorator' 2019-05-30 16:44:45 +02:00
Kamil Mysliwiec
d1189a7348 Merge pull request #2106 from nestjs/renovate/ts-morph-2.x
fix(deps): update dependency ts-morph to v2.3.0
2019-05-30 16:42:48 +02:00
Kamil Myśliwiec
3ee0650433 merge changes 2019-05-30 16:41:54 +02:00
Kamil Myśliwiec
8d367c415b Merge branch 'underfin-rmq-options-noack' 2019-05-30 16:40:24 +02:00
Kamil Myśliwiec
1981830bbe refactor(microservices): adjust code style (ClientRMQ) 2019-05-30 16:39:56 +02:00
Kamil Myśliwiec
19e55fe2df Merge branch 'rmq-options-noack' of https://github.com/underfin/nest into underfin-rmq-options-noack 2019-05-30 16:38:20 +02:00
Kamil Myśliwiec
4de5400083 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:35:33 +02:00
Kamil Mysliwiec
ee487dbfc3 Merge pull request #2254 from FSM1/fsm1-allow-class-transformer-enableImplicitConversion
class-transformer enableImplicitConversion flag added
2019-05-30 16:34:53 +02:00
Kamil Mysliwiec
31d53cda6c Merge pull request #2304 from TheNoim/allow-validation-for-custom-decorators
feature(common): add option to allow validation of custom decorators
2019-05-30 16:33:58 +02:00
Kamil Myśliwiec
e6a19c37f1 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:32:51 +02:00
Kamil Myśliwiec
cd65de5d31 Merge branch 'gperdomor-uuid-pipes' 2019-05-30 16:32:08 +02:00
Kamil Myśliwiec
336c9b44c5 refactor(common): adjust code style (ParseUUIDPipe) 2019-05-30 16:31:24 +02:00
Kamil Myśliwiec
bbc53dc28b Merge branch 'uuid-pipes' of https://github.com/gperdomor/nest into gperdomor-uuid-pipes 2019-05-30 16:21:25 +02:00
Kamil Mysliwiec
dddf7b9a00 Merge pull request #2240 from BrunnerLivio/feature/client-proxy-factory-overload
feature(microservices): Return correct client type in ClientProxyFactory
2019-05-30 15:39:34 +02:00
Kamil Mysliwiec
524e78f362 Merge pull request #2272 from reegnz/bugfix/disable-opencollective-message-in-ci
bugfix(core): Upgrade opencollective dependency
2019-05-30 15:39:00 +02:00
Kamil Mysliwiec
19bafaeceb Merge pull request #2307 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.5.1
2019-05-30 15:38:12 +02:00
Kamil Myśliwiec
d88b920dba refactor(microservices): move client options for every client 2019-05-30 15:36:34 +02:00
Renovate Bot
230ae4da95 fix(deps): update dependency apollo-server-express to v2.5.1 2019-05-30 13:24:58 +00:00
Kamil Myśliwiec
8664505d82 refactor(core): provider types refactor 2019-05-30 15:12:33 +02:00
Kamil Myśliwiec
275a97a84d feat(grpc): add more options to grpcClient (max message length) 2019-05-30 14:53:19 +02:00
Kamil Myśliwiec
aed28959b8 bugfix(core): ensure that injectables array is a set of unique values 2019-05-30 14:52:46 +02:00
Kamil Myśliwiec
9acb208dbe fix(): remove duplicated isInitalized property of NestApplication 2019-05-30 14:08:43 +02:00
Kamil Myśliwiec
fd45cdca46 Merge branch 'BrunnerLivio-feature/public-init' 2019-05-30 13:58:20 +02:00
Kamil Myśliwiec
6d2a8c8861 refactor(): resolve conflicts, remove duplicated init() 2019-05-30 13:57:59 +02:00
Kamil Myśliwiec
637ada0600 Merge branch 'AlexDaSoul-master' 2019-05-30 13:49:47 +02:00
Kamil Myśliwiec
9d07884c0c feat(grpc): add catchError to duplex method factory 2019-05-30 13:49:30 +02:00
Nils Bergmann
971d92e7fd feature(common): add option to allow validation of custom decorators
No matter what the reason is to not validate custom decorators, you should be able to at least provide an option
2019-05-30 13:38:14 +02:00
Kamil Myśliwiec
67dacc31a0 integration(): fix grpc port conflict 2019-05-30 13:06:39 +02:00
Kamil Myśliwiec
fca5411430 Merge branch 'grpc-proto-tests-upgrade' of https://github.com/anton-alation/nest into anton-alation-grpc-proto-tests-upgrade 2019-05-30 12:18:34 +02:00
Kamil Myśliwiec
a3ad69df40 Merge branch 'anton-alation-grpc-stream-duplex-decorator' 2019-05-30 11:45:51 +02:00
Kamil Myśliwiec
3264196c4c Merge branch '6.3.0' into anton-alation-grpc-stream-duplex-decorator 2019-05-30 11:41:46 +02:00
Kamil Mysliwiec
31525dff26 Merge pull request #2300 from nestjs/renovate/nestjs-jwt-6.x
fix(deps): update dependency @nestjs/jwt to v6.1.1
2019-05-30 08:38:20 +02:00
Kamil Mysliwiec
efb8a1ea3b Merge pull request #2301 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.5.1
2019-05-30 08:38:04 +02:00
Renovate Bot
47326e7a5d fix(deps): update dependency ts-morph to v2.3.0 2019-05-30 01:00:33 +00:00
Renovate Bot
4f8b216c85 fix(deps): update dependency typescript to v3.5.1 2019-05-29 16:39:42 +00:00
Renovate Bot
b8db3bbeb8 fix(deps): update dependency @nestjs/jwt to v6.1.1 2019-05-29 15:52:47 +00:00
Kamil Mysliwiec
bca3268a89 Merge pull request #2297 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2.8.13
2019-05-29 11:52:20 +02:00
Kamil Mysliwiec
01f4a3bae5 Merge pull request #2298 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.7
2019-05-29 11:51:42 +02:00
Kamil Mysliwiec
ab592581b9 Merge pull request #2265 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.3.1
2019-05-29 11:47:29 +02:00
Kamil Mysliwiec
ae8aee6bb5 Merge pull request #2275 from nestjs/renovate/ts-node-8.x
chore(deps): update dependency ts-node to v8.2.0
2019-05-29 11:44:28 +02:00
Kamil Mysliwiec
b937c1dd2b Merge pull request #2280 from nestjs/renovate/express-4.x
fix(deps): update dependency express to v4.17.1
2019-05-29 11:44:07 +02:00
Renovate Bot
2141e118e7 fix(deps): update dependency sequelize to v5.8.7 2019-05-29 02:31:40 +00:00
Renovate Bot
19e2c73bcc chore(deps): update dependency @types/redis to v2.8.13 2019-05-28 19:19:30 +00:00
Renovate Bot
82a983a1c7 fix(deps): update dependency graphql to v14.3.1 2019-05-28 18:36:17 +00:00
Renovate Bot
a486245c8d chore(deps): update dependency ts-node to v8.2.0 2019-05-28 18:32:55 +00:00
Renovate Bot
a7342eed59 fix(deps): update dependency express to v4.17.1 2019-05-28 18:26:51 +00:00
Kamil Mysliwiec
069ccb1b46 Merge pull request #2258 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.32.2
2019-05-28 20:22:49 +02:00
Kamil Mysliwiec
3aeeab39eb Merge pull request #2257 from nestjs/renovate/fastify-multipart-1.x
fix(deps): update dependency fastify-multipart to v1
2019-05-28 20:22:26 +02:00
Kamil Mysliwiec
c7adccfa7c Merge pull request #2263 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.11
2019-05-28 20:22:16 +02:00
Kamil Mysliwiec
4baa96e649 Merge pull request #2266 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.21.1
2019-05-28 20:21:54 +02:00
Kamil Mysliwiec
509592f3c1 Merge pull request #2267 from mfazer/master
bugfix(@nestjs/nest): Update gitter URL in CONTRIBUTING.md
2019-05-28 20:21:20 +02:00
Kamil Mysliwiec
57b405a3a1 Merge pull request #2269 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.6
2019-05-28 20:21:03 +02:00
Kamil Mysliwiec
d5b8ea2444 Merge pull request #2276 from nestjs/renovate/prisma-binding-2.x
fix(deps): update dependency prisma-binding to v2.3.11
2019-05-28 20:20:52 +02:00
Kamil Mysliwiec
bab2d383b4 Merge pull request #2273 from nestjs/renovate/amqplib-0.x
chore(deps): update dependency @types/amqplib to v0.5.12
2019-05-28 20:20:41 +02:00
Kamil Mysliwiec
3164eebb11 Merge pull request #2274 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.2
2019-05-28 20:20:32 +02:00
Kamil Mysliwiec
5f42b03234 Merge pull request #2287 from nestjs/renovate/point-of-view-3.x
fix(deps): update dependency point-of-view to v3.5.0
2019-05-28 20:20:18 +02:00
Kamil Mysliwiec
9b362a067e Merge pull request #2278 from nestjs/renovate/nodemon-1.x
chore(deps): update dependency nodemon to v1.19.1
2019-05-28 20:20:02 +02:00
Kamil Mysliwiec
c386487dae Merge pull request #2279 from nestjs/renovate/sinon-7.x
chore(deps): update dependency @types/sinon to v7.0.12
2019-05-28 20:19:36 +02:00
Kamil Mysliwiec
f64827ed1b Merge pull request #2284 from nestjs/renovate/mqtt-3.x
fix(deps): update dependency mqtt to v3
2019-05-28 20:19:23 +02:00
Kamil Mysliwiec
e8d4888e89 Merge pull request #2288 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.3
2019-05-28 20:19:05 +02:00
Kamil Mysliwiec
7c9a548125 Merge pull request #2294 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.15.3
2019-05-28 20:18:55 +02:00
Kamil Mysliwiec
95bb4cd711 Merge pull request #2296 from nestjs/renovate/cache-manager-2.x
fix(deps): update dependency cache-manager to v2.9.1
2019-05-28 20:18:42 +02:00
Renovate Bot
151f0edbed fix(deps): update dependency cache-manager to v2.9.1 2019-05-28 16:59:33 +00:00
Renovate Bot
885ac139b4 fix(deps): update dependency fast-json-stringify to v1.15.3 2019-05-28 12:16:21 +00:00
Renovate Bot
d78ecb4c59 chore(deps): update dependency core-js to v3.1.3 2019-05-27 13:11:38 +00:00
Renovate Bot
2869253468 fix(deps): update dependency point-of-view to v3.5.0 2019-05-27 12:31:16 +00:00
Renovate Bot
fadc1797fd fix(deps): update dependency mqtt to v3 2019-05-27 08:33:59 +00:00
Renovate Bot
910fb31d04 chore(deps): update dependency @types/sinon to v7.0.12 2019-05-25 21:40:33 +00:00
Renovate Bot
ca91e01426 chore(deps): update dependency nodemon to v1.19.1 2019-05-25 18:41:04 +00:00
Kamil Mysliwiec
f3e3679793 Update package.json 2019-05-25 12:27:53 +02:00
Kamil Mysliwiec
90487cc9a3 Update package.json 2019-05-25 12:25:40 +02:00
Renovate Bot
40ad3e418c fix(deps): update dependency prisma-binding to v2.3.11 2019-05-25 03:49:34 +00:00
Renovate Bot
79076b139e fix(deps): update dependency mongoose to v5.5.11 2019-05-24 23:08:59 +00:00
Renovate Bot
267ee1004c chore(deps): update dependency @types/sequelize to v4.28.2 2019-05-24 21:13:45 +00:00
Renovate Bot
c385e88e2a chore(deps): update dependency @types/amqplib to v0.5.12 2019-05-24 21:06:31 +00:00
Renovate Bot
5e6b10b9c7 fix(deps): update dependency grpc to v1.21.1 2019-05-24 19:55:02 +00:00
Zoltán Reegn
7276451fc9 bugfix(core): Upgrade opencollective dependency
In v0.2.2 it is now possible to suppress the opencollective message
properly with multiple kinds of environment variables.

Fixes #2264
2019-05-24 16:35:24 +02:00
Kamil Myśliwiec
e01111d9e3 chore(): add FUNDING.yml 2019-05-24 11:06:54 +02:00
Kamil Myśliwiec
d85a6ff15c chore(): remove .github funding 2019-05-24 11:06:35 +02:00
Kamil Myśliwiec
fbb6147303 chore(): hotfix 2019-05-24 09:59:42 +02:00
Kamil Myśliwiec
a23b5bd793 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-24 09:59:08 +02:00
Kamil Myśliwiec
2fe8081c68 chore(): add FUNDING.md 2019-05-24 09:58:27 +02:00
Kamil Mysliwiec
b04f1f4cfd Update Bug_report.md 2019-05-24 08:56:14 +02:00
Renovate Bot
a24391fcca fix(deps): update dependency mongodb to v3.2.6 2019-05-24 00:22:26 +00:00
Mateusz
15f11c95a2 Fix: Update gitter URL in CONTRIBUTING.md
Mistake fixed.
2019-05-24 00:05:20 +02:00
Renovate Bot
e866a8f423 chore(deps): update dependency webpack to v4.32.2 2019-05-22 23:20:23 +00:00
Kamil Mysliwiec
09bba36e58 Merge pull request #2245 from BrunnerLivio/feature/issue-templates
chore(): add issue templates
2019-05-22 21:29:24 +02:00
Renovate Bot
322af6494d fix(deps): update dependency fastify-multipart to v1 2019-05-22 18:34:53 +00:00
Livio
17cb7ff2a4 feature(microservices): ClientProxyFactory return GRPC client type
Add overload to the ClientProxyFactory for better type security.
This allows the user to not cast the GRPC client to any
after creating it using the factory.
2019-05-22 18:45:42 +02:00
Livio
f9d70391e1 chore(): Add needs triage label to issue templates
Adds the 'need triage' label automatically
when creating an issue from the
issue templates
2019-05-22 18:42:31 +02:00
Gustavo Perdomo
8d42c0d3d0 add exception factory 2019-05-22 11:33:20 -04:00
Kamil Mysliwiec
8ac98630e1 Merge pull request #2243 from saarw/fix-jwt-deprecation
fix(sample): update sample to avoid deprecated secretOrPrivateKey
2019-05-22 13:35:33 +02:00
william
416f710573 fix(sample): Update sample to avoid deprecated secretOrPrivateKey 2019-05-22 13:27:30 +02:00
Kamil Mysliwiec
fdf3d8942d Merge pull request #2255 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.4.1
2019-05-22 12:26:57 +02:00
Renovate Bot
22a299b195 fix(deps): update dependency fastify to v2.4.1 2019-05-22 10:07:07 +00:00
Michael Yankelev
cd86c5b66b enableImplicitConversion flag added 2019-05-22 11:56:11 +02:00
Kamil Mysliwiec
a144121463 Merge pull request #2231 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.2
2019-05-22 11:34:06 +02:00
Kamil Mysliwiec
1bb39c15b9 Merge pull request #2233 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.2.4
2019-05-22 11:33:15 +02:00
Kamil Mysliwiec
845a615cf6 Merge pull request #2251 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.4.0
2019-05-22 11:32:50 +02:00
Renovate Bot
7a38d5bdca fix(deps): update nest monorepo to v6.2.4 2019-05-22 09:31:26 +00:00
Kamil Mysliwiec
bbaa1d523c Merge pull request #2242 from nestjs/renovate/class-transformer-0.x
fix(deps): update dependency class-transformer to v0.2.3
2019-05-22 11:27:52 +02:00
Renovate Bot
c1cd3e87d7 fix(deps): update dependency fastify to v2.4.0 2019-05-22 08:55:10 +00:00
Renovate Bot
1b24762cab fix(deps): update dependency class-transformer to v0.2.3 2019-05-22 08:53:40 +00:00
Renovate Bot
e5b80381d7 chore(deps): update dependency core-js to v3.1.2 2019-05-22 08:51:41 +00:00
Kamil Mysliwiec
43cf264026 Merge pull request #2114 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.20.3
2019-05-22 10:36:40 +02:00
Kamil Mysliwiec
06a9b2252e Merge pull request #2234 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.32.1
2019-05-22 10:35:53 +02:00
Kamil Mysliwiec
49cae3abb7 Merge pull request #2241 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.10
2019-05-22 10:35:42 +02:00
Kamil Mysliwiec
fc1d4f0395 Merge pull request #2247 from nestjs/renovate/amqp-connection-manager-2.x
fix(deps): update dependency amqp-connection-manager to v2.3.2
2019-05-22 10:31:14 +02:00
Renovate Bot
0305a693d7 chore(deps): update dependency webpack to v4.32.1 2019-05-22 07:44:50 +00:00
Kamil Myśliwiec
c687b5bcda chore(@nestjs) publish v6.2.4 release 2019-05-21 23:05:30 +02:00
Kamil Myśliwiec
eca9a486e1 chore(): publish 6.2.4 release 2019-05-21 23:04:37 +02:00
Kamil Myśliwiec
72edae181e Merge branch 'SeWaS-fix-validation-pipe-bug' 2019-05-21 23:04:05 +02:00
Kamil Myśliwiec
e2f93ef226 refactor(): move condition to filter function 2019-05-21 23:03:46 +02:00
Renovate Bot
a5832be647 fix(deps): update dependency amqp-connection-manager to v2.3.2 2019-05-21 19:49:38 +00:00
Livio
418da4f097 chore(): Add issue templates 2019-05-21 17:16:21 +02:00
Renovate Bot
4242531b27 fix(deps): update dependency mongoose to v5.5.10 2019-05-20 18:31:10 +00:00
Sebastian Walter
4b73ca638e bugfix(common) Stripping proto properties works with null values
If an optional property has an allowed null value it is now considered when stripping proto props.
2019-05-20 16:32:21 +02:00
Kamil Myśliwiec
1425635190 chore(@nestjs) publish v6.2.3 release 2019-05-20 10:43:19 +02:00
Kamil Myśliwiec
ded6710d37 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-20 10:42:10 +02:00
Kamil Myśliwiec
b3f51cc9c1 hotfix(): fix validation pipe (strip proto properties) 2019-05-20 10:41:56 +02:00
Kamil Mysliwiec
d7f2e4abbf Merge pull request #2228 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.2.2
2019-05-19 18:25:47 +02:00
Renovate Bot
3b06632a37 fix(deps): update nest monorepo to v6.2.2 2019-05-19 16:12:56 +00:00
Kamil Myśliwiec
f3330223e8 chore(): publish 6.2.2 release 2019-05-19 18:11:10 +02:00
Kamil Myśliwiec
1ce763b167 chore(): publish 6.2.2 release 2019-05-19 18:09:55 +02:00
Kamil Myśliwiec
ab8e02e33e chore(@nestjs) publish v6.2.2 release 2019-05-19 18:09:22 +02:00
Kamil Myśliwiec
79056a0483 fix(core): hotfix - override factory provider in e2e tests 2019-05-19 18:08:21 +02:00
Kamil Myśliwiec
eda8065e02 test(): fix unit tests (module replace) 2019-05-19 15:18:27 +02:00
Kamil Myśliwiec
fb72dcc0fe Merge branch 'master' of https://github.com/nestjs/nest 2019-05-19 14:02:20 +02:00
Kamil Myśliwiec
cc0bc31bd4 chore(): bump version to 6.2.1 2019-05-19 14:02:15 +02:00
Kamil Myśliwiec
11a85cd254 chore(@nestjs) publish v6.2.1 release 2019-05-19 14:00:53 +02:00
Kamil Myśliwiec
fc40f218a4 fix(platform-ws): trigger client disconnected hook #2226 2019-05-19 13:59:11 +02:00
Kamil Myśliwiec
d6b31c3490 fix(): fix interceptors in combination with events #2209 2019-05-19 13:58:43 +02:00
Kamil Myśliwiec
97afee965c fix(core): fix override and replace logic #2070 2019-05-19 13:58:18 +02:00
Kamil Mysliwiec
7f5fac66e9 Update Readme.md 2019-05-19 12:26:39 +02:00
Kamil Mysliwiec
b920eb6641 Merge pull request #2221 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.7
2019-05-19 11:38:26 +02:00
Renovate Bot
a20d06239c chore(deps): update dependency @types/node to v10.14.7 2019-05-19 09:22:35 +00:00
Kamil Mysliwiec
33c3a4ce9b Merge pull request #2212 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.9
2019-05-19 11:15:19 +02:00
Kamil Mysliwiec
b4759ad00f Merge pull request #2215 from nestjs/renovate/express-4.x
fix(deps): update dependency express to v4.17.0
2019-05-19 11:15:07 +02:00
Kamil Mysliwiec
7fcb4d524d Merge pull request #2220 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.5
2019-05-19 11:14:49 +02:00
Kamil Mysliwiec
fd5d28a2de Merge pull request #2222 from nestjs/renovate/connect-3.x
fix(deps): update dependency connect to v3.7.0
2019-05-19 11:14:37 +02:00
Kamil Mysliwiec
1e6600b482 Merge pull request #2223 from nestjs/renovate/sequelize-typescript-0.x
fix(deps): update dependency sequelize-typescript to v0.6.11
2019-05-19 11:14:28 +02:00
Kamil Mysliwiec
f6176378f4 Merge pull request #2224 from nestjs/renovate/ts-loader-6.x
chore(deps): update dependency ts-loader to v6.0.1
2019-05-19 11:14:19 +02:00
Renovate Bot
b8b7a5d3f9 chore(deps): update dependency ts-loader to v6.0.1 2019-05-19 02:19:29 +00:00
Renovate Bot
2aa9f2fbeb fix(deps): update dependency sequelize-typescript to v0.6.11 2019-05-18 16:43:08 +00:00
Renovate Bot
6ed25e4102 fix(deps): update dependency connect to v3.7.0 2019-05-18 01:05:27 +00:00
Renovate Bot
b3f1dc0e8c fix(deps): update dependency mongodb to v3.2.5 2019-05-17 18:08:37 +00:00
Renovate Bot
8db96f3545 fix(deps): update dependency express to v4.17.0 2019-05-17 02:10:37 +00:00
Renovate Bot
2d12dd7219 fix(deps): update dependency mongoose to v5.5.9 2019-05-16 18:16:54 +00:00
Kamil Mysliwiec
472fe76701 Merge pull request #2204 from nestjs/renovate/point-of-view-3.x
fix(deps): update dependency point-of-view to v3.4.0
2019-05-16 11:16:33 +02:00
Kamil Mysliwiec
54bc519b06 Merge pull request #2205 from nestjs/renovate/fastify-multipart-0.x
fix(deps): update dependency fastify-multipart to v0.8.2
2019-05-16 11:16:21 +02:00
Kamil Mysliwiec
628ec3279e Merge pull request #2206 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.14.1
2019-05-16 11:16:03 +02:00
Renovate Bot
8d21314273 chore(deps): update dependency lerna to v3.14.1 2019-05-15 18:15:59 +00:00
Renovate Bot
d058c9fc4b fix(deps): update dependency fastify-multipart to v0.8.2 2019-05-15 17:40:43 +00:00
Renovate Bot
8a45e55352 fix(deps): update dependency point-of-view to v3.4.0 2019-05-15 17:24:57 +00:00
Kamil Mysliwiec
cfc1874d9b Merge pull request #2200 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.1
2019-05-15 10:35:19 +02:00
Kamil Mysliwiec
53203ef378 Merge pull request #2201 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.14.0
2019-05-15 10:35:10 +02:00
Renovate Bot
7058acf0ca chore(deps): update dependency lerna to v3.14.0 2019-05-15 08:33:05 +00:00
Kamil Mysliwiec
caf2322a96 Merge pull request #2202 from nestjs/renovate/lint-staged-8.x
chore(deps): update dependency lint-staged to v8.1.7
2019-05-15 10:26:55 +02:00
Renovate Bot
4214fa8103 chore(deps): update dependency lint-staged to v8.1.7 2019-05-15 05:22:12 +00:00
Renovate Bot
9b6a9a0d2f chore(deps): update dependency @types/sequelize to v4.28.1 2019-05-14 22:02:45 +00:00
Kamil Mysliwiec
ed1d3e1539 Merge pull request #2198 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.1
2019-05-14 21:59:22 +02:00
Renovate Bot
6263ff75b9 fix(deps): update dependency @nestjs/graphql to v6.2.1 2019-05-14 16:09:54 +00:00
Kamil Mysliwiec
e0cc9fb6ac Merge pull request #2194 from nestjs/renovate/nestjs-passport-6.x
fix(deps): update dependency @nestjs/passport to v6.1.0
2019-05-14 14:25:22 +02:00
Renovate Bot
9741885f5d fix(deps): update dependency @nestjs/passport to v6.1.0 2019-05-14 12:12:17 +00:00
Kamil Mysliwiec
f2fd6d72df Merge pull request #2188 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.0
2019-05-14 12:55:14 +02:00
Kamil Mysliwiec
043ce9b04f Merge pull request #2186 from nestjs/renovate/jest-24.x
chore(deps): update dependency @types/jest to v24.0.13
2019-05-14 12:55:06 +02:00
Kamil Mysliwiec
8be5181e67 Merge pull request #2185 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.5.1
2019-05-14 12:54:57 +02:00
Kamil Mysliwiec
43ca7fb5b1 Merge pull request #2191 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.0
2019-05-14 12:54:34 +02:00
Kamil Mysliwiec
5134f6f6ba Merge pull request #2192 from nestjs/renovate/nestjs-jwt-6.x
fix(deps): update dependency @nestjs/jwt to v6.1.0
2019-05-14 12:54:21 +02:00
Renovate Bot
d64274ff96 fix(deps): update dependency @nestjs/jwt to v6.1.0 2019-05-14 10:44:29 +00:00
Renovate Bot
0ec4becd24 fix(deps): update dependency @nestjs/graphql to v6.2.0 2019-05-14 09:57:53 +00:00
Renovate Bot
1a4837fa04 chore(deps): update dependency @types/sequelize to v4.28.0 2019-05-14 00:54:11 +00:00
Renovate Bot
56951d15de chore(deps): update dependency @types/jest to v24.0.13 2019-05-13 23:34:48 +00:00
Renovate Bot
178d34c831 chore(deps): update dependency @types/mongoose to v5.5.1 2019-05-13 23:12:47 +00:00
Kamil Mysliwiec
0137ebce00 Merge pull request #2180 from nestjs/renovate/type-graphql-0.x
fix(deps): update dependency type-graphql to v0.17.4
2019-05-13 20:06:02 +02:00
Kamil Mysliwiec
039d32271e Merge pull request #2182 from nestjs/renovate/prettier-1.x
chore(deps): update dependency prettier to v1.17.1
2019-05-13 20:05:44 +02:00
Kamil Mysliwiec
390b214c24 Merge pull request #2183 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.8
2019-05-13 20:05:34 +02:00
Renovate Bot
a3500f4047 fix(deps): update dependency mongoose to v5.5.8 2019-05-13 18:03:55 +00:00
Renovate Bot
c2c3dab5aa chore(deps): update dependency prettier to v1.17.1 2019-05-13 14:23:35 +00:00
Renovate Bot
43e5bdd93b fix(deps): update dependency type-graphql to v0.17.4 2019-05-12 20:28:31 +00:00
Kamil Mysliwiec
1e29999ba7 Merge pull request #2179 from nestjs/renovate/nestjs-typeorm-6.x
fix(deps): update dependency @nestjs/typeorm to v6.1.1
2019-05-12 14:58:27 +02:00
Renovate Bot
b201ac34ed fix(deps): update dependency @nestjs/typeorm to v6.1.1 2019-05-12 11:15:11 +00:00
Kamil Mysliwiec
e664830d5e Update Readme.md 2019-05-12 12:36:46 +02:00
Kamil Myśliwiec
c60b1ace78 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-12 12:26:12 +02:00
Kamil Myśliwiec
8bbf9419a3 test(): cover missing branches in module testing file 2019-05-12 12:25:58 +02:00
Kamil Mysliwiec
ad81b4e4d7 Merge pull request #2166 from nestjs/renovate/rxjs-6.x
fix(deps): update dependency rxjs to v6.5.2
2019-05-12 11:30:01 +02:00
Kamil Myśliwiec
ae5e7ca728 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-12 11:29:33 +02:00
Kamil Myśliwiec
c6e9b23e45 test(): update unit tests to increase coverage 2019-05-12 11:29:14 +02:00
Kamil Mysliwiec
e5a7de868d Merge pull request #2177 from zuohuadong/patch-2
chore(renovate):  use semanticCommits
2019-05-12 11:24:26 +02:00
huadong zuo
aaed3d1c14 chore(renovate): use semanticCommits 2019-05-12 17:16:33 +08:00
Renovate Bot
e5dd459a88 Update dependency rxjs to v6.5.2 2019-05-12 09:10:17 +00:00
Kamil Mysliwiec
3403ae7c54 Merge pull request #2168 from nestjs/renovate/nyc-14.x
chore(deps): update dependency nyc to v14.1.1
2019-05-12 10:58:20 +02:00
Kamil Mysliwiec
65de083b6a Merge pull request #2167 from nestjs/renovate/rxjs-compat-6.x
fix(deps): update dependency rxjs-compat to v6.5.2
2019-05-12 10:58:07 +02:00
Kamil Mysliwiec
228d43f9d6 Merge pull request #2171 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.2.0
2019-05-12 10:57:57 +02:00
Kamil Mysliwiec
74d9ad9fb4 Merge pull request #2176 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.6
2019-05-12 10:57:35 +02:00
Renovate Bot
e50f65e866 fix(deps): update dependency sequelize to v5.8.6 2019-05-12 04:33:44 +00:00
Renovate Bot
cbbbc9d257 Update nest monorepo to v6.2.0 2019-05-11 11:59:32 +00:00
Kamil Myśliwiec
5e2727bf90 chore(): publish 6.2.0 release 2019-05-11 13:56:09 +02:00
Kamil Myśliwiec
5fce020f08 chore(@nestjs) publish v6.2.0 release 2019-05-11 13:55:32 +02:00
Renovate Bot
7a6c9c5a9d Update dependency nyc to v14.1.1 2019-05-10 02:37:13 +00:00
Renovate Bot
335dee25cb Update dependency rxjs-compat to v6.5.2 2019-05-10 00:40:44 +00:00
Kamil Myśliwiec
6c9bd5a58c Merge branch 'master' of https://github.com/nestjs/nest 2019-05-10 00:16:34 +02:00
Kamil Mysliwiec
2a9183f4da Merge pull request #2158 from nestjs/renovate/apollo-server-monorepo
Update dependency apollo-server-express to v2.5.0
2019-05-09 23:51:47 +02:00
Kamil Mysliwiec
d8188306a5 Merge pull request #2165 from nestjs/renovate/mongoose-5.x
Update dependency mongoose to v5.5.7
2019-05-09 23:51:18 +02:00
Renovate Bot
61d699ead2 Update dependency mongoose to v5.5.7 2019-05-09 16:54:45 +00:00
Kamil Mysliwiec
fab531c991 Merge pull request #2164 from nestjs/renovate/webpack-4.x
Update dependency webpack to v4.31.0
2019-05-09 10:22:53 +02:00
Renovate Bot
6c397ba344 Update dependency webpack to v4.31.0 2019-05-09 08:03:20 +00:00
Renovate Bot
6aff08a643 Update dependency grpc to v1.20.3 2019-05-09 08:01:33 +00:00
Renovate Bot
67572b7eb7 Update dependency apollo-server-express to v2.5.0 2019-05-09 07:59:18 +00:00
Kamil Mysliwiec
e910ef7751 Merge pull request #2148 from nestjs/renovate/ts-loader-6.x
Update dependency ts-loader to v6
2019-05-09 09:55:59 +02:00
Kamil Mysliwiec
99af074f9d Merge pull request #2152 from nestjs/renovate/mongoose-5.x
Update dependency mongoose to v5.5.6
2019-05-09 09:55:50 +02:00
Kamil Mysliwiec
111deb3191 Merge pull request #2156 from nestjs/renovate/graphql-14.x
Update dependency graphql to v14.3.0
2019-05-09 09:55:34 +02:00
Kamil Mysliwiec
662213b003 Merge pull request #2160 from nestjs/renovate/class-transformer-0.x
Update dependency class-transformer to v0.2.2
2019-05-09 09:55:21 +02:00
Kamil Mysliwiec
21f9486f3e Merge pull request #2162 from nestjs/renovate/mongodb-3.x
Update dependency mongodb to v3.2.4
2019-05-09 09:54:21 +02:00
Renovate Bot
9d5a777d80 Update dependency mongodb to v3.2.4 2019-05-08 23:51:35 +00:00
Kamil Mysliwiec
932f5d5d02 Update Readme.md 2019-05-08 13:49:32 +02:00
Renovate Bot
b183f1c783 Update dependency class-transformer to v0.2.2 2019-05-08 00:36:27 +00:00
Renovate Bot
89c7a3e1aa Update dependency mongoose to v5.5.6 2019-05-07 17:58:07 +00:00
Renovate Bot
4c8ed7f295 Update dependency graphql to v14.3.0 2019-05-07 10:24:37 +00:00
Gustavo Perdomo
b2cd7507b6 revert package lock 2019-05-06 21:37:10 -04:00
Renovate Bot
74b4a13442 Update dependency ts-loader to v6 2019-05-06 17:24:32 +00:00
Gustavo Perdomo
7440d946ca remove validator deps 2019-05-06 08:49:47 -04:00
Kamil Mysliwiec
297eb65823 Update Readme.md 2019-05-05 19:42:51 +02:00
Kamil Mysliwiec
451e2ca7ea Merge pull request #2057 from nestjs/renovate/rxjs-6.x
fix(deps): update dependency rxjs to v6.5.1
2019-05-05 19:37:32 +02:00
Renovate Bot
6338782546 fix(deps): update dependency rxjs to v6.5.1 2019-05-05 17:35:42 +00:00
Kamil Mysliwiec
783467b25a Merge pull request #2124 from nestjs/renovate/nodemon-1.x
chore(deps): update dependency nodemon to v1.19.0
2019-05-05 19:33:25 +02:00
Renovate Bot
0bc04142dd chore(deps): update dependency nodemon to v1.19.0 2019-05-05 17:32:27 +00:00
Kamil Mysliwiec
8ab031784e Merge pull request #2141 from nestjs/renovate/conventional-changelog-3.x
chore(deps): update dependency conventional-changelog to v3.1.8
2019-05-05 19:28:50 +02:00
Kamil Mysliwiec
bcf2fc49b8 Merge pull request #2105 from nestjs/renovate/artillery-1.x
chore(deps): update dependency artillery to v1.6.0-28
2019-05-05 19:28:31 +02:00
Kamil Mysliwiec
d86c57eeea Merge pull request #2113 from nestjs/renovate/sequelize-5.x
Update dependency sequelize to v5.8.5
2019-05-05 19:28:20 +02:00
Kamil Mysliwiec
91cfc62032 Merge pull request #2107 from nestjs/renovate/jest-24.x
chore(deps): update dependency @types/jest to v24.0.12
2019-05-05 19:28:04 +02:00
Kamil Mysliwiec
64ed7ebc55 Merge pull request #2117 from nestjs/renovate/node-7.x
chore(deps): update dependency @types/node to v7.10.6
2019-05-05 19:27:55 +02:00
Renovate Bot
bf1de49dcd chore(deps): update dependency conventional-changelog to v3.1.8 2019-05-05 17:27:48 +00:00
Kamil Mysliwiec
24e34a62d5 Merge pull request #2118 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.48
2019-05-05 19:25:27 +02:00
Kamil Mysliwiec
4592401c7d Merge pull request #2121 from nestjs/renovate/mongoose-5.x
Update dependency mongoose to v5.5.5
2019-05-05 19:25:18 +02:00
Kamil Mysliwiec
0ddf5b0060 Merge pull request #2120 from nestjs/renovate/ws-7.x
Update dependency ws to v7
2019-05-05 19:25:12 +02:00
Kamil Mysliwiec
1e9c3139b5 Merge pull request #2123 from nestjs/renovate/ts-loader-5.x
Update dependency ts-loader to v5.4.5
2019-05-05 19:25:03 +02:00
Kamil Mysliwiec
223501cb94 Merge pull request #2126 from nestjs/renovate/fastify-cors-2.x
Update dependency fastify-cors to v2.1.3
2019-05-05 19:24:54 +02:00
Kamil Mysliwiec
3c92750465 Merge pull request #2127 from nestjs/renovate/typeorm-0.x
Update dependency typeorm to v0.2.17
2019-05-05 19:24:37 +02:00
Kamil Mysliwiec
4b2fd75cf3 Merge pull request #2133 from nestjs/renovate/lint-staged-8.x
Update dependency lint-staged to v8.1.6
2019-05-05 19:24:27 +02:00
Kamil Mysliwiec
0f72500966 Merge pull request #2129 from nestjs/renovate/nyc-14.x
Update dependency nyc to v14.1.0
2019-05-05 19:24:15 +02:00
Kamil Mysliwiec
06ac009bb4 Merge pull request #2132 from nestjs/renovate/sequelize-4.x
Update dependency @types/sequelize to v4.27.49
2019-05-05 19:24:04 +02:00
Kamil Mysliwiec
b355af9914 Merge pull request #2138 from nestjs/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.2
2019-05-05 19:23:54 +02:00
Kamil Mysliwiec
405bc9bd1b Merge pull request #2139 from nestjs/renovate/jest-monorepo
Update dependency jest to v24.8.0
2019-05-05 19:23:42 +02:00
Kamil Mysliwiec
9325059885 Update Readme.md 2019-05-05 17:12:01 +02:00
Kamil Mysliwiec
8649c33030 Update Readme.md 2019-05-05 16:01:33 +02:00
Kamil Mysliwiec
9c3e7033bb Update Readme.md 2019-05-05 15:59:25 +02:00
Kamil Mysliwiec
3b2c740bd7 Update Readme.md 2019-05-05 15:54:50 +02:00
Kamil Mysliwiec
035d7d4d05 Update Readme.md 2019-05-05 15:53:53 +02:00
Renovate Bot
a9dcb9b33e fix(deps): update dependency sequelize to v5.8.5 2019-05-05 02:45:58 +00:00
Renovate Bot
06e9720186 chore(deps): update dependency jest to v24.8.0 2019-05-05 02:32:23 +00:00
Renovate Bot
d1b42e29c5 chore(deps): update dependency webpack-cli to v3.3.2 2019-05-04 20:21:33 +00:00
Renovate Bot
8a1eb31255 chore(deps): update dependency lint-staged to v8.1.6 2019-05-03 07:48:44 +00:00
Renovate Bot
555dadeb36 chore(deps): update dependency @types/sequelize to v4.27.49 2019-05-03 03:07:45 +00:00
Renovate Bot
27315975d3 chore(deps): update dependency nyc to v14.1.0 2019-05-02 13:02:40 +00:00
Renovate Bot
7b2b74dcc6 fix(deps): update dependency typeorm to v0.2.17 2019-05-01 19:35:03 +00:00
Renovate Bot
c944ef8816 fix(deps): update dependency fastify-cors to v2.1.3 2019-05-01 18:36:56 +00:00
Renovate Bot
efa5d5886c chore(deps): update dependency ts-loader to v5.4.5 2019-05-01 05:20:06 +00:00
Renovate Bot
f440366f3d fix(deps): update dependency mongoose to v5.5.5 2019-04-30 17:07:44 +00:00
Renovate Bot
4f1888f9a0 fix(deps): update dependency ws to v7 2019-04-30 16:18:24 +00:00
Renovate Bot
a50ec037ee chore(deps): update dependency @types/node to v8.10.48 2019-04-30 00:03:20 +00:00
Renovate Bot
3735556603 chore(deps): update dependency @types/node to v7.10.6 2019-04-30 00:02:46 +00:00
Renovate Bot
6754b96039 chore(deps): update dependency @types/jest to v24.0.12 2019-04-29 06:33:11 +00:00
Renovate Bot
a48257c968 chore(deps): update dependency artillery to v1.6.0-28 2019-04-28 21:24:19 +00:00
Kamil Mysliwiec
f472852d44 Merge pull request #2098 from nestjs/renovate/nestjs-typeorm-6.x
fix(deps): update dependency @nestjs/typeorm to v6.1.0
2019-04-28 21:23:49 +02:00
Renovate Bot
49e028c4fe fix(deps): update dependency @nestjs/typeorm to v6.1.0 2019-04-27 13:26:51 +00:00
Kamil Mysliwiec
f5d286b556 Merge pull request #2091 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.6
2019-04-27 14:59:46 +02:00
Renovate Bot
6966fd7df2 chore(deps): update dependency @types/node to v10.14.6 2019-04-27 12:44:12 +00:00
Kamil Mysliwiec
ce6110cf32 Merge pull request #2092 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.47
2019-04-27 14:35:51 +02:00
Kamil Mysliwiec
b1ecb73da6 Merge pull request #2090 from nestjs/renovate/ts-loader-5.x
chore(deps): update dependency ts-loader to v5.4.4
2019-04-27 14:35:43 +02:00
Kamil Mysliwiec
efaeb40e52 Merge pull request #2093 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.3.27
2019-04-27 14:35:25 +02:00
Renovate Bot
1ad68cc0bc chore(deps): update dependency @types/mongoose to v5.3.27 2019-04-26 20:01:07 +00:00
Renovate Bot
73b27cafa9 chore(deps): update dependency @types/node to v8.10.47 2019-04-26 19:50:37 +00:00
Renovate Bot
db616f7cee chore(deps): update dependency ts-loader to v5.4.4 2019-04-26 17:41:41 +00:00
Kamil Mysliwiec
83afa42ee0 Merge pull request #2063 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.4.5
2019-04-26 08:12:36 +02:00
Kamil Mysliwiec
a5086dcb27 Merge pull request #2082 from nestjs/renovate/cors-2.x
chore(deps): update dependency @types/cors to v2.8.5
2019-04-26 08:09:32 +02:00
Kamil Mysliwiec
526445ab00 Merge pull request #2084 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.7.6
2019-04-26 08:09:25 +02:00
Kamil Mysliwiec
8206917d0e Merge pull request #2085 from nestjs/renovate/body-parser-1.x
fix(deps): update dependency body-parser to v1.19.0
2019-04-26 08:09:13 +02:00
Renovate Bot
a92c57e53b fix(deps): update dependency body-parser to v1.19.0 2019-04-26 03:37:12 +00:00
Renovate Bot
27a02a7745 fix(deps): update dependency sequelize to v5.7.6 2019-04-26 02:31:52 +00:00
Renovate Bot
78a58ac69c chore(deps): update dependency @types/cors to v2.8.5 2019-04-25 22:30:51 +00:00
Renovate Bot
ae4216361e fix(deps): update dependency typescript to v3.4.5 2019-04-25 22:20:15 +00:00
Kamil Mysliwiec
c472a7556a Merge pull request #2047 from nestjs/renovate/gulp-4.x
Update dependency gulp to v4.0.1
2019-04-26 00:09:55 +02:00
Kamil Mysliwiec
e48c90e69e Merge pull request #2054 from nestjs/renovate/ts-loader-5.x
Update dependency ts-loader to v5.4.3
2019-04-26 00:09:20 +02:00
Kamil Mysliwiec
2f96c8568d Merge pull request #2048 from nestjs/renovate/webpack-cli-3.x
Update dependency webpack-cli to v3.3.1
2019-04-26 00:09:09 +02:00
Kamil Mysliwiec
803b408f0f Merge pull request #2051 from nestjs/renovate/sequelize-5.x
Update dependency sequelize to v5.7.5
2019-04-26 00:09:02 +02:00
Kamil Mysliwiec
6cdc31abd2 Merge pull request #2055 from nestjs/renovate/mongoose-5.x
Update dependency mongoose to v5.5.4
2019-04-26 00:08:47 +02:00
Kamil Mysliwiec
5c06f1528f Merge pull request #2056 from nestjs/renovate/fast-json-stringify-1.x
Update dependency fast-json-stringify to v1.15.2
2019-04-26 00:08:38 +02:00
Kamil Mysliwiec
cbb7022dc2 Merge pull request #2058 from nestjs/renovate/rxjs-compat-6.x
Update dependency rxjs-compat to v6.5.1
2019-04-26 00:05:50 +02:00
Kamil Mysliwiec
4a69ddefac Merge pull request #2064 from nestjs/renovate/type-graphql-0.x
Update dependency type-graphql to v0.17.3
2019-04-26 00:05:30 +02:00
Kamil Mysliwiec
e33ed082f0 Merge pull request #2074 from nestjs/renovate/conventional-changelog-3.x
Update dependency conventional-changelog to v3.1.4
2019-04-26 00:05:16 +02:00
Kamil Mysliwiec
7f49452516 Merge pull request #2076 from nestjs/renovate/lerna-monorepo
Update dependency lerna to v3.13.4
2019-04-26 00:04:22 +02:00
Kamil Mysliwiec
f58e87ef4f Merge pull request #2077 from nestjs/renovate/docker-mysql-5.x
Update mysql Docker tag to v5.7.26
2019-04-26 00:03:13 +02:00
Kamil Mysliwiec
94b884a0fa Merge pull request #2078 from nestjs/renovate/point-of-view-3.x
Update dependency point-of-view to v3.3.0
2019-04-26 00:03:01 +02:00
Renovate Bot
5a2216e58b Update dependency mongoose to v5.5.4 2019-04-25 19:32:12 +00:00
Renovate Bot
4c9eb5a4ac Update dependency point-of-view to v3.3.0 2019-04-25 05:56:57 +00:00
Renovate Bot
6e4b19d0f7 Update mysql Docker tag to v5.7.26 2019-04-25 01:43:43 +00:00
Renovate Bot
dcb0ca77e8 Update dependency lerna to v3.13.4 2019-04-25 00:11:25 +00:00
Renovate Bot
c7e1d8e293 Update dependency conventional-changelog to v3.1.4 2019-04-24 22:04:21 +00:00
Renovate Bot
a026e4b564 Update dependency type-graphql to v0.17.3 2019-04-24 17:50:50 +00:00
Renovate Bot
21a2bdaee9 Update dependency sequelize to v5.7.5 2019-04-24 06:02:25 +00:00
Gustavo Perdomo
3319e62d62 uuid pipes 2019-04-23 13:10:02 -04:00
Kamil Mysliwiec
e4f1a1dde2 Update Readme.md 2019-04-23 09:05:53 +02:00
Renovate Bot
54530247d4 fix(deps): update dependency rxjs-compat to v6.5.1 2019-04-23 04:43:17 +00:00
Renovate Bot
cbc9b987fb fix(deps): update dependency fast-json-stringify to v1.15.2 2019-04-23 03:00:20 +00:00
Anton Repin
bf17608fd7 Handler added for test GRPC Call for Advamced GRPC protobuf case 2019-04-22 14:16:31 -07:00
Anton Repin
ad7da8f493 GRPC controller definition for advanced proto case updated 2019-04-22 14:14:10 -07:00
Renovate Bot
eeb260acde chore(deps): update dependency ts-loader to v5.4.3 2019-04-22 19:09:58 +00:00
Anton Repin
62dc446a60 E2E test added to support advanced GRPC + Protobuf case 2019-04-21 23:59:38 -07:00
Anton Repin
81eaca0193 Controller for advanced GRPC tests added 2019-04-21 23:59:04 -07:00
Anton Repin
8f7aad1a84 Set of namespaced proto files added 2019-04-21 23:58:40 -07:00
Renovate Bot
85fb17b32b chore(deps): update dependency webpack-cli to v3.3.1 2019-04-21 19:54:35 +00:00
Renovate Bot
78732403b8 chore(deps): update dependency gulp to v4.0.1 2019-04-21 17:54:15 +00:00
Kamil Mysliwiec
4608b6e8e3 Merge pull request #2031 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.7.1
2019-04-21 12:45:54 +02:00
Kamil Mysliwiec
d01497c0cb Merge pull request #2033 from nestjs/renovate/mysql-2.x
fix(deps): update dependency mysql to v2.17.1
2019-04-21 12:45:48 +02:00
Kamil Mysliwiec
ef6591674a Merge pull request #2034 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.4.4
2019-04-21 12:45:40 +02:00
Kamil Mysliwiec
808b6d0627 Merge pull request #2038 from nestjs/renovate/fastify-multipart-0.x
fix(deps): update dependency fastify-multipart to v0.8.1
2019-04-21 12:45:32 +02:00
Kamil Mysliwiec
b36b0f0f03 Merge pull request #2039 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.5
2019-04-21 12:45:22 +02:00
Kamil Mysliwiec
8b6dd09ca5 Merge pull request #2040 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.46
2019-04-21 12:44:41 +02:00
Kamil Mysliwiec
f9a42cf442 Merge pull request #2043 from nestjs/renovate/ts-morph-2.x
fix(deps): update dependency ts-morph to v2
2019-04-21 12:44:34 +02:00
Renovate Bot
6cd93a9918 fix(deps): update dependency ts-morph to v2 2019-04-20 23:30:36 +00:00
Renovate Bot
95e2f7e9ed fix(deps): update dependency sequelize to v5.7.1 2019-04-20 09:39:55 +00:00
likui
675fd079ac refromat code
I does not consciousness change code with `import`.
2019-04-20 15:48:05 +08:00
likui
102a345077 feat(@nestjs/microservices): ack queue message make option in rabbitMQ microservice #1583 2019-04-20 11:39:58 +08:00
Renovate Bot
4a4fd2e0e0 chore(deps): update dependency @types/node to v8.10.46 2019-04-19 20:51:58 +00:00
Renovate Bot
980f98d6b9 chore(deps): update dependency @types/node to v10.14.5 2019-04-19 20:51:37 +00:00
Renovate Bot
1283fd3201 fix(deps): update dependency fastify-multipart to v0.8.1 2019-04-19 18:45:22 +00:00
Renovate Bot
e59eb97585 fix(deps): update dependency typescript to v3.4.4 2019-04-18 23:47:30 +00:00
Renovate Bot
13697371a4 fix(deps): update dependency mysql to v2.17.1 2019-04-18 20:49:37 +00:00
Kamil Mysliwiec
ec14c921ad Merge pull request #2024 from nestjs/renovate/mysql-2.x
fix(deps): update dependency mysql to v2.17.0
2019-04-18 13:37:28 +02:00
Kamil Mysliwiec
b12328d0b8 Merge pull request #2026 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.3.0
2019-04-18 13:37:20 +02:00
Renovate Bot
9783ac2437 fix(deps): update dependency fastify to v2.3.0 2019-04-18 08:09:43 +00:00
Renovate Bot
7d463c64a4 fix(deps): update dependency mysql to v2.17.0 2019-04-18 02:17:58 +00:00
Kamil Mysliwiec
5e8fd1e690 Merge pull request #2021 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.6.1
2019-04-17 22:35:05 +02:00
Kamil Mysliwiec
71c4bf31cb Merge pull request #2023 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.20.0
2019-04-17 22:34:27 +02:00
Kamil Mysliwiec
7149f96e11 Merge pull request #2022 from nestjs/renovate/sinon-7.x
chore(deps): update dependency sinon to v7.3.2
2019-04-17 22:34:20 +02:00
Renovate Bot
68f33be063 fix(deps): update dependency grpc to v1.20.0 2019-04-17 19:34:32 +00:00
Renovate Bot
4259eb409e chore(deps): update dependency sinon to v7.3.2 2019-04-17 16:23:41 +00:00
Renovate Bot
1d0a9fdc01 fix(deps): update dependency sequelize to v5.6.1 2019-04-17 10:54:59 +00:00
Kamil Mysliwiec
c7ef4c8778 Merge pull request #2011 from nestjs/renovate/nestjs-mongoose-6.x
fix(deps): update dependency @nestjs/mongoose to v6.1.2
2019-04-17 11:58:45 +02:00
Renovate Bot
fb02c35e57 fix(deps): update dependency @nestjs/mongoose to v6.1.2 2019-04-17 09:58:24 +00:00
Kamil Mysliwiec
d78cd72164 Merge pull request #2008 from nestjs/renovate/point-of-view-3.x
fix(deps): update dependency point-of-view to v3.2.0
2019-04-17 11:57:56 +02:00
Kamil Mysliwiec
fb96560cba Merge pull request #2009 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.6.0
2019-04-17 11:57:49 +02:00
Kamil Mysliwiec
c6e84b6ce3 Merge pull request #2012 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.15.1
2019-04-17 11:57:30 +02:00
Kamil Mysliwiec
371554a00e Merge pull request #2013 from nestjs/renovate/nyc-14.x
chore(deps): update dependency nyc to v14
2019-04-17 11:57:19 +02:00
Kamil Mysliwiec
a9658634e0 Merge pull request #2016 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.2
2019-04-17 11:57:05 +02:00
Kamil Mysliwiec
cdd38dc018 Merge pull request #2017 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.27.48
2019-04-17 11:56:55 +02:00
Kamil Mysliwiec
bab370cf6d Merge pull request #2018 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.16.0
2019-04-17 11:56:35 +02:00
Kamil Mysliwiec
981a64ebae Merge pull request #2019 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.13.3
2019-04-17 11:56:20 +02:00
Renovate Bot
7f3f022d1c chore(deps): update dependency lerna to v3.13.3 2019-04-17 01:18:41 +00:00
Renovate Bot
685a1ff2c6 chore(deps): update dependency tslint to v5.16.0 2019-04-16 22:23:04 +00:00
Renovate Bot
4a66e75d62 chore(deps): update dependency @types/sequelize to v4.27.48 2019-04-16 20:34:54 +00:00
Renovate Bot
4c775b7e24 fix(deps): update dependency mongoose to v5.5.2 2019-04-16 14:41:03 +00:00
Renovate Bot
7f1dd41cc6 chore(deps): update dependency nyc to v14 2019-04-16 10:21:22 +00:00
Renovate Bot
8a7f4df9cb fix(deps): update dependency fast-json-stringify to v1.15.1 2019-04-16 09:57:26 +00:00
Renovate Bot
960dafcd33 fix(deps): update dependency sequelize to v5.6.0 2019-04-16 08:04:18 +00:00
Renovate Bot
dbe952bb1b fix(deps): update dependency point-of-view to v3.2.0 2019-04-15 21:51:32 +00:00
Kamil Mysliwiec
1847f14840 Merge pull request #2006 from nestjs/renovate/nestjs-mongoose-6.x
fix(deps): update dependency @nestjs/mongoose to v6.1.1
2019-04-15 23:14:48 +02:00
Renovate Bot
57a7b7325d fix(deps): update dependency @nestjs/mongoose to v6.1.1 2019-04-15 15:43:53 +00:00
Kamil Mysliwiec
09eb4c14e3 Merge pull request #2004 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.5.0
2019-04-15 17:00:14 +02:00
Renovate Bot
f6252a49ac fix(deps): update dependency sequelize to v5.5.0 2019-04-15 14:53:42 +00:00
Kamil Myśliwiec
9a3c8af62c fix(): fix invalid mysql image 2019-04-15 14:22:36 +02:00
Kamil Mysliwiec
1f790a6f4c Merge pull request #2003 from nestjs/renovate/nestjs-mongoose-6.x
fix(deps): update dependency @nestjs/mongoose to v6.1.0
2019-04-15 13:43:28 +02:00
Renovate Bot
2f4c842c01 fix(deps): update dependency @nestjs/mongoose to v6.1.0 2019-04-15 11:33:35 +00:00
Kamil Mysliwiec
dfd87b43f7 Merge pull request #2002 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.1.1
2019-04-15 12:22:08 +02:00
Renovate Bot
c6d52e5be6 fix(deps): update nest monorepo to v6.1.1 2019-04-15 10:13:44 +00:00
Kamil Myśliwiec
8d7375fa1c chore(@nestjs) publish v6.1.1 release 2019-04-15 12:03:45 +02:00
Kamil Myśliwiec
c5c4bf314e chore(): publish 6.1.1 release 2019-04-15 12:02:49 +02:00
Kamil Mysliwiec
e888b65106 Merge pull request #1970 from rokerkony/bug/fix-bc-on-http-exception
bugfix(common): fix breaking change on http exception
2019-04-15 12:01:44 +02:00
Kamil Myśliwiec
37fa9d529e Merge branch 'master' of https://github.com/nestjs/nest 2019-04-15 12:01:29 +02:00
Kamil Myśliwiec
5922e7ed9c bugfix(core): invalid injection context #1987 2019-04-15 12:01:08 +02:00
Kamil Mysliwiec
efb4421280 Merge pull request #2000 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.4.0
2019-04-15 11:50:48 +02:00
Renovate Bot
85c2483d60 fix(deps): update dependency sequelize to v5.4.0 2019-04-15 08:32:39 +00:00
Kamil Mysliwiec
313bc08cda Merge pull request #1982 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.1
2019-04-15 09:39:38 +02:00
Kamil Mysliwiec
ce5d3793f8 Merge pull request #1984 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.3.5
2019-04-15 09:38:26 +02:00
Kamil Mysliwiec
5cd03dc720 Merge pull request #1991 from nestjs/renovate/prettier-1.x
chore(deps): update dependency prettier to v1.17.0
2019-04-15 09:38:20 +02:00
Kamil Mysliwiec
baa475a98e Merge pull request #1999 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.15.0
2019-04-15 09:38:10 +02:00
Renovate Bot
9775b2c74a fix(deps): update dependency fast-json-stringify to v1.15.0 2019-04-15 07:07:40 +00:00
Renovate Bot
7b1f2b92fa fix(deps): update dependency sequelize to v5.3.5 2019-04-15 06:47:30 +00:00
Renovate Bot
669c110d45 chore(deps): update dependency prettier to v1.17.0 2019-04-15 06:47:16 +00:00
Kamil Mysliwiec
348c1caa3e Merge pull request #1983 from nestjs/renovate/conventional-changelog-3.x
chore(deps): update dependency conventional-changelog to v3.1.3
2019-04-15 08:41:23 +02:00
Kamil Mysliwiec
026bb027a9 Merge pull request #1990 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.30.0
2019-04-15 08:41:11 +02:00
Kamil Mysliwiec
9a6f2a96ad Merge pull request #1992 from nestjs/renovate/handlebars-4.x
fix(deps): update dependency handlebars to v4.1.2
2019-04-15 08:41:01 +02:00
Kamil Mysliwiec
03fa137dc6 Merge pull request #1995 from nestjs/renovate/sequelize-typescript-0.x
fix(deps): update dependency sequelize-typescript to v0.6.10
2019-04-15 08:40:48 +02:00
Kamil Mysliwiec
5e935e8aae Merge pull request #1996 from nestjs/renovate/ts-node-8.x
chore(deps): update dependency ts-node to v8.1.0
2019-04-15 08:40:39 +02:00
Kamil Mysliwiec
cf6ce1f31c Merge pull request #1997 from nestjs/renovate/hbs-4.x
fix(deps): update dependency hbs to v4.0.4
2019-04-15 08:40:28 +02:00
Kamil Myśliwiec
0c4818281f Merge branch 'master' of https://github.com/nestjs/nest 2019-04-15 08:33:25 +02:00
Kamil Myśliwiec
7311b956a5 sample(): fix typeorm configuration (production start) 2019-04-15 08:30:07 +02:00
Renovate Bot
f045eb2b09 fix(deps): update dependency hbs to v4.0.4 2019-04-15 02:10:40 +00:00
Renovate Bot
71b35c1b63 chore(deps): update dependency ts-node to v8.1.0 2019-04-15 02:01:21 +00:00
Renovate Bot
5eb65422da fix(deps): update dependency sequelize-typescript to v0.6.10 2019-04-14 17:59:44 +00:00
Renovate Bot
3fd5e90b84 fix(deps): update dependency handlebars to v4.1.2 2019-04-13 14:23:50 +00:00
Renovate Bot
e7804eb8d8 chore(deps): update dependency webpack to v4.30.0 2019-04-12 20:22:27 +00:00
Kamil Mysliwiec
292b9fbb25 Merge pull request #1985 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.27.47
2019-04-12 10:12:20 +02:00
Kamil Myśliwiec
c70f42c5ac Merge branch 'master' of https://github.com/nestjs/nest 2019-04-12 10:11:39 +02:00
Kamil Myśliwiec
18288965ca test(): reorder unit tests in client-proxy 2019-04-12 10:11:29 +02:00
Renovate Bot
4ba700af7e chore(deps): update dependency @types/sequelize to v4.27.47 2019-04-12 00:27:01 +00:00
Renovate Bot
10ea259ba0 chore(deps): update dependency conventional-changelog to v3.1.3 2019-04-11 23:10:57 +00:00
Renovate Bot
c434a80e75 fix(deps): update dependency mongoose to v5.5.1 2019-04-11 16:15:38 +00:00
Kamil Mysliwiec
536f4db3c0 Merge pull request #1971 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.1.0
2019-04-11 09:01:55 +02:00
Kamil Mysliwiec
3898d4f199 Merge pull request #1972 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.3.1
2019-04-11 09:01:42 +02:00
Kamil Mysliwiec
9d44042d0b Merge pull request #1976 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.3.26
2019-04-11 09:01:35 +02:00
Kamil Mysliwiec
44c54ed93e Merge pull request #1979 from nestjs/renovate/nats-1.x
fix(deps): update dependency nats to v1.2.10
2019-04-11 09:00:55 +02:00
Renovate Bot
1b6e07c907 fix(deps): update dependency sequelize to v5.3.1 2019-04-11 04:45:05 +00:00
Renovate Bot
e41a025fc5 fix(deps): update dependency nats to v1.2.10 2019-04-10 23:23:51 +00:00
Renovate Bot
d9e96208fb chore(deps): update dependency @types/mongoose to v5.3.26 2019-04-10 17:45:26 +00:00
Konrad Cerny
0ef55c0b65 Added another test case when a message is undefined 2019-04-10 13:48:07 +02:00
Renovate Bot
7a72c1d4ec fix(deps): update nest monorepo to v6.1.0 2019-04-10 11:14:39 +00:00
Kamil Myśliwiec
22a54d714f chore(@nestjs) publish v6.1.0 release 2019-04-10 13:08:16 +02:00
Kamil Myśliwiec
1dcb7aefbe chore(): publish 6.1.0 release 2019-04-10 13:06:33 +02:00
Kamil Myśliwiec
82e52fc3e8 Merge branch 'Upperfoot-feature/socket-options' 2019-04-10 12:59:58 +02:00
Kamil Myśliwiec
ea2d32669e refactor(): remove generic type 2019-04-10 12:59:43 +02:00
Kamil Myśliwiec
d2cadc12c1 Merge branch 'master' into Upperfoot-feature/socket-options 2019-04-10 12:58:13 +02:00
Kamil Myśliwiec
0363108120 Merge branch 'feature/socket-options' of https://github.com/Upperfoot/nest into Upperfoot-feature/socket-options 2019-04-10 12:57:44 +02:00
Kamil Mysliwiec
107b243c8b Merge pull request #1891 from jiayihu/patch-1
fix(microservices): export ClientRMQ and ServerRMQ with correct types
2019-04-10 12:56:54 +02:00
Kamil Mysliwiec
758201cf94 Merge branch 'master' into patch-1 2019-04-10 12:54:13 +02:00
Kamil Myśliwiec
205d737214 Merge branch 'master' of https://github.com/nestjs/nest 2019-04-10 12:53:38 +02:00
Kamil Myśliwiec
b83357e2e9 Merge branch 'ToonvanStrijp-feature/change-http-code-interceptor' 2019-04-10 12:53:10 +02:00
Kamil Mysliwiec
d465d1b8eb Merge pull request #1963 from nestjs/renovate/nats-1.x
fix(deps): update dependency nats to v1.2.8
2019-04-10 12:48:16 +02:00
Kamil Mysliwiec
f5f0ff48bd Merge pull request #1968 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.4.3
2019-04-10 12:48:02 +02:00
Kamil Mysliwiec
22ec505ff6 Merge pull request #1961 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.13.2
2019-04-10 12:37:27 +02:00
Kamil Mysliwiec
868aa2d07d Merge pull request #1960 from nestjs/renovate/nodemon-1.x
chore(deps): update dependency nodemon to v1.18.11
2019-04-10 12:36:26 +02:00
Kamil Mysliwiec
d8c241e64f Merge pull request #1958 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.2.15
2019-04-10 12:36:21 +02:00
Kamil Mysliwiec
bed8e0a7f5 Merge pull request #1956 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.0
2019-04-10 12:36:12 +02:00
Konrad Cerny
547615afd7 bugfix(common): fix breaking change on http exception 2019-04-10 11:38:36 +02:00
Renovate Bot
f8a335dc11 fix(deps): update dependency typescript to v3.4.3 2019-04-09 23:52:00 +00:00
Renovate Bot
32aa7f1507 fix(deps): update dependency sequelize to v5.2.15 2019-04-09 15:39:59 +00:00
Renovate Bot
85c290dda5 fix(deps): update dependency nats to v1.2.8 2019-04-08 22:59:23 +00:00
Renovate Bot
0ba5424af1 chore(deps): update dependency lerna to v3.13.2 2019-04-08 21:41:44 +00:00
Renovate Bot
9e76f416c1 chore(deps): update dependency nodemon to v1.18.11 2019-04-08 21:23:57 +00:00
Renovate Bot
4d267f643c Update dependency mongoose to v5.5.0 2019-04-08 16:40:24 +00:00
Jiayi Hu
ee8b112504 fix(microservices): use correct server options type 2019-04-06 16:10:54 +02:00
Jiayi Hu
2fa9989072 fix(microservices): export ClientRMQ and ServerRMQ 2019-04-06 15:50:52 +02:00
Kamil Myśliwiec
769d7559d0 test(): add missing unit tests, resolve conflicts 2019-03-31 17:11:50 +02:00
Hossein Sadeghi
f4488781e4 bugfix(common) allow classes as data parameter in createParamDecorator function 2019-03-20 15:44:09 +03:30
Craig Whiteside
b0088db764 Removed reference to class var 2019-03-20 10:49:18 +00:00
Craig Whiteside
22889735cf Removed class variable for socketOptions 2019-03-20 10:48:42 +00:00
Craig Whiteside
92068f302c Removed RQM_DEFAULT_SOCKET_OPTIONS from Constants 2019-03-20 10:47:44 +00:00
Craig Whiteside
a09e8260cd Removed class var and default socket options. 2019-03-20 10:46:55 +00:00
Anton Repin
c26bbbb9bc Updated tests for Pattern decorator 2019-03-11 11:13:59 -07:00
Anton Repin
0e9dbee56d GRPC Streaming tests updated with support both Streaming decorators
- RX Streaming test
- Call streaming test
2019-03-10 23:39:08 -07:00
Anton Repin
9f10e08abb Pattern decorator test updated with additional naming 2019-03-10 23:38:11 -07:00
Anton Repin
8dbb31a0b8 Test for Server GRPC updated to handle Streaming cases 2019-03-10 23:37:34 -07:00
Anton Repin
487309c12b GRPC Server now updated with support of both GrpcStream and GrpcStreamCall
- Pattern updated
- Handler selector updated
- Duplex RX dispatch added
- Duplex call dispatch added
2019-03-10 23:36:38 -07:00
Anton Repin
a1d23d6af8 Pattern decorators updated to have new naming and additional decorator
- GrpcStream now renamed to GrpcStreamMethod
- Grpc call passthrough now GrpcStreamCall
2019-03-10 23:31:51 -07:00
Livio
6c5108bf1e feat(@nestjs/core): Add init function on NestApplicationContext to API 2019-03-01 20:16:15 +01:00
Anton Repin
2e7f9cbe2e GRPC Server unit-test updated
Create pattern signature test updated to handle new signature for patterns.
2019-02-17 22:53:03 -08:00
Anton Repin
ac994fdda3 Integration test for GRPC Stream handle updated
- Result calculation updated for Controller
- Test file updated with Test and expectations
- GRPC Raw Stream connection added to test
2019-02-17 19:02:55 -08:00
Anton Repin
cf733999d2 GRPC integration test Proto and Controller updated with streaming definitions to test 2019-02-13 18:26:08 -08:00
Anton Repin
da240312fa Pattern decorator test updated with new Pattern signature 2019-02-13 18:24:23 -08:00
Anton Repin
78cac3a086 GRPC server support for Streaming call handlers added
- createService method updated to differentiate handler depending on type of GRPC method definition
- stream pass-through method added
- explanatory comments added
2019-02-13 13:04:54 -08:00
Anton Repin
5721aab084 GRPC patterns expanded with Streaming annotation
- GRPC Method added with definition of streaming parameter for mapping it to appropriate service
- GRPC Stream annotation added
- Commentary added
2019-02-13 13:02:14 -08:00
Craig Whiteside
c5acf28c4b Add socket options to Server 2019-02-12 12:12:28 +00:00
Craig Whiteside
a833d08d1f Added socketOptions to RmqOptions Interface 2019-02-12 12:01:05 +00:00
Craig Whiteside
5103278f0a Add socket options to interface for RMQ 2019-02-12 11:50:22 +00:00
Craig Whiteside
3a757698ba Pass socketOptions to connect method 2019-02-12 11:33:48 +00:00
Craig Whiteside
8765b989c4 Add socketOptions to RMQ sum test 2019-02-12 11:25:48 +00:00
Craig Whiteside
a301e95e82 Add socketOptions to RMQ controller test 2019-02-12 11:25:01 +00:00
Craig Whiteside
a56896e7ba Add socketOptions to RMQ broadcast test 2019-02-12 11:24:32 +00:00
Craig Whiteside
2bd7346bb8 Pass socket options to connect method 2019-02-12 11:22:58 +00:00
Craig Whiteside
672dd499c3 Added Default Socket Options for RMQ 2019-02-12 11:17:56 +00:00
Anton Repin
21a6b5e4fd Merge pull request #1 from nestjs/master
Up to date with the latest master release
2019-02-05 21:59:54 -08:00
165 changed files with 12236 additions and 11940 deletions

3
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# These are supported funding model platforms
open_collective: nest

View File

@@ -1,46 +0,0 @@
<!--
PLEASE HELP US PROCESS GITHUB ISSUES FASTER BY PROVIDING THE FOLLOWING INFORMATION.
ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION.
-->
## I'm submitting a...
<!--
Please search GitHub for a similar issue or PR before submitting.
Check one of the following options with "x" -->
<pre><code>
[ ] Regression <!--(a behavior that used to work and stopped working in a new release)-->
[ ] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
</code></pre>
## Current behavior
<!-- Describe how the issue manifests. -->
## Expected behavior
<!-- Describe what the desired behavior would be. -->
## Minimal reproduction of the problem with instructions
<!-- Please share a repo, a gist, or step-by-step instructions. -->
## What is the motivation / use case for changing the behavior?
<!-- Describe the motivation or the concrete use case. -->
## Environment
<pre><code>
Nest version: X.Y.Z
<!-- Check whether this is still an issue in the most recent Nest version -->
For Tooling issues:
- Node version: XX <!-- run `node --version` -->
- Platform: <!-- Mac, Linux, Windows -->
Others:
<!-- Anything else relevant? Operating system version, IDE, package manager, ... -->
</code></pre>

41
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,41 @@
---
name: "\U0001F41B Bug Report"
about: "If something isn't working as expected \U0001F914."
title: ''
labels: 'type: potential issue :broken_heart:,needs triage'
assignees: ''
---
## Bug Report
## Current behavior
<!-- Describe how the issue manifests. -->
## Input Code
<!-- REPL or Repo link if applicable: -->
```ts
const your = (code) => here;
```
## Expected behavior
<!-- A clear and concise description of what you expected to happen (or code). -->
## Possible Solution
<!--- Only if you have suggestions on a fix for the bug -->
## Environment
<pre><code>
Nest version: X.Y.Z
<!-- Check whether this is still an issue in the most recent Nest version -->
For Tooling issues:
- Node version: XX <!-- run `node --version` -->
- Platform: <!-- Mac, Linux, Windows -->
Others:
<!-- Anything else relevant? Operating system version, IDE, package manager, ... -->
</code></pre>

View File

@@ -0,0 +1,22 @@
---
name: "\U0001F680 Feature Request"
about: "I have a suggestion \U0001F63B!"
title: ''
labels: 'type: enhancement :wolf:,needs triage'
assignees: ''
---
## Feature Request
## Is your feature request related to a problem? Please describe.
<!-- A clear and concise description of what the problem is. Ex. I have an issue when [...] -->
## Describe the solution you'd like
<!-- A clear and concise description of what you want to happen. Add any considered drawbacks. -->
## Teachability, Documentation, Adoption, Migration Strategy
<!-- If you can, explain how users will be able to use this and possibly write out a version the docs. Maybe a screenshot or design? -->
## What is the motivation / use case for changing the behavior?
<!-- Describe the motivation or the concrete use case. -->

40
.github/ISSUE_TEMPLATE/Regression.md vendored Normal file
View File

@@ -0,0 +1,40 @@
---
name: "\U0001F4A5 Regression"
about: Report an unexpected while upgrading your Nest application!
title: ''
labels: 'type: bug :sob:,needs triage'
assignees: ''
---
## Regression
<!-- First check out: https://docs.nestjs.com/migration-guide -->
## Potential Commit/PR that introduced the regression**
<!-- If you have time to investigate, what PR/date introduced this issue. -->
## Describe the regression
<!-- A clear and concise description of what the regression is. -->
## Input Code
<!--- If you have link to our REPL or a standalone repo please link that! -->
```ts
const your = (code) => here;
```
## Expected behavior/code
<!-- A clear and concise description of what you expected to happen (or code). -->
## Environment
<pre><code>
Nest version: A.B.C -> X.Y.Z
For Tooling issues:
- Node version: XX <!-- run `node --version` -->
- Platform: <!-- Mac, Linux, Windows -->
Others:
<!-- Anything else relevant? Operating system version, IDE, package manager, ... -->
</code></pre>

View File

@@ -0,0 +1,14 @@
---
name: "\U0001F917 Support Question"
about: "If you have a question \U0001F4AC, please check out our Discord or StackOverflow!"
title: ''
labels: 'type: question 🙌,needs triage'
assignees: ''
---
<!-- We primarily use GitHub as an issue tracker; for usage and support questions, please check out these resources below. Thanks! 😁. -->
* Discord Community Chat: https://discord.gg/G7Qnnhy
* StackOverflow: https://stackoverflow.com/questions/tagged/nestjs using the tag `nestjs`
* Twitter: If it's just a quick question you can ping our Twitter: https://twitter.com/nestframework

View File

@@ -320,7 +320,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
[corporate-cla]: http://code.google.com/legal/corporate-cla-v1.0.html
[dev-doc]: https://github.com/nestjs/nest/blob/master/docs/DEVELOPER.md
[github]: https://github.com/nestjs/nest
[gitter]: https://gitter.im/nestjs/nest
[gitter]: https://gitter.im/nestjs/nestjs
[individual-cla]: http://code.google.com/legal/individual-cla-v1.0.html
[js-style-guide]: https://google.github.io/styleguide/jsguide.html
[jsfiddle]: http://jsfiddle.net

View File

@@ -14,7 +14,7 @@
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
@@ -53,30 +53,33 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
#### Base Sponsor
<a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="300" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="200" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/" target="_blank"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" valign="middle" /></a> &nbsp;
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp; <a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" valign="middle" /> </a> &nbsp; &nbsp;
<a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="100" valign="middle" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a>
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="150" valign="middle" /></a>
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a> &nbsp;
<a href="http://www.leogistics.com" target="_blank"><img src="https://nestjs.com/img/leogistics-logo.jpeg" width="150" valign="middle" /></a>
#### Sponsors
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a> &nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp;
<a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="125" valign="middle" /> </a> &nbsp; <a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="180" valign="middle" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="130" valign="middle" /></a> &nbsp;
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="100" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a>
<a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
&nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp; <a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
<a href="https://ever.co/" target="_blank"><img src="https://nestjs.com/img/ever-logo.png" height="20" valign="middle" /></a> &nbsp;
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a>
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a> &nbsp;
<a href="https://blokt.com" target="_blank"><img src="https://nestjs.com/img/blokt-logo.png" height="31" valign="middle" /></a> &nbsp;
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="https://firesticktricks.com" target="_blank"><img src="https://nestjs.com/img/firesticktricks-logo.png" width="145" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>
## Backers
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=1600"></a>
## Stay in touch

View File

@@ -23,7 +23,7 @@ services:
- "9001:9001"
restart: always
mysql:
image: mysql:5.7.25
image: mysql:5.7.26
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test

File diff suppressed because it is too large Load Diff

View File

@@ -9,21 +9,21 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/graphql": "6.0.5",
"apollo-server-express": "2.4.8",
"graphql": "14.2.1",
"graphql-tools": "4.0.4",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.4",
"graphql": "14.3.1",
"graphql-tools": "4.0.5",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"rxjs": "6.5.2",
"subscriptions-transport-ws": "0.9.16",
"typescript": "3.4.2",
"ws": "6.2.1"
"typescript": "3.5.2",
"ws": "7.0.1"
},
"devDependencies": {
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
"@types/node": "7.10.6",
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,9 +28,9 @@
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.1.tgz",
"integrity": "sha512-vujz9lczXBnkw8H7vY/7V6Je0zcCUvpbgwLNGa5Dm/+SzUKTdSk5qjGgt3TiczXZY2PSuOdsTY0qUFHYK7B5yA==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
@@ -38,25 +38,25 @@
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.1.tgz",
"integrity": "sha512-2eTZhFzrl61I3+bmvh2jZvk7elah+P+ndVfHCzJzKA8jKNGOqdTjvj2beqxhjOsE4o8BsqOQm2eUXUzItjoHRg==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.1.tgz",
"integrity": "sha512-kkzDn2oULL7RpBUZ9Fh755rebXe9pqp67Pn84/1OMErLpk3XMSMXcfABomFNHKY2pbevxOk4ojpnm5WZdw3S9w==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -64,9 +64,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"abstract-logging": {
@@ -134,26 +134,21 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -171,9 +166,9 @@
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -226,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -254,7 +249,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -271,15 +265,15 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -352,9 +346,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.14.0.tgz",
"integrity": "sha512-3VSblXsVxIE46E/YzRYHapyIeM3/igeA/kyzdL5xfAIYNnCLd8Oy+scrURnqZIRXMmtx0hfyp+okN5+r4W+GMQ==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -371,23 +365,23 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.2.0.tgz",
"integrity": "sha512-U6W101N+8Hyz2uiN3XqdSdTiaWYiJ0lCJmC3tO42PNttjCZQp8EPIhZ0QkVQWLrrP0ijjgomwaYrj9eMzqWyDw==",
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.5.0.tgz",
"integrity": "sha512-51z51VlbGw+ZJp8MJeZVqLtwAMMUiobo/YcAgyA7guRzflDa5tyw7yhZUDLfOng2YQIrVWZzWX7jPPvbQPQBxg==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.11.2",
"fast-json-stringify": "^1.15.0",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"flatstr": "^1.0.12",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"secure-json-parse": "^1.0.0",
"tiny-lru": "^6.0.1"
}
},
@@ -410,31 +404,16 @@
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -475,14 +454,14 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -581,8 +560,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"next-tick": {
"version": "1.0.0",
@@ -590,9 +568,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -610,9 +588,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -623,9 +601,9 @@
}
},
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
"integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
"integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ=="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -634,12 +612,12 @@
"dev": true
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
"ipaddr.js": "1.9.0"
}
},
"punycode": {
@@ -659,9 +637,9 @@
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -684,14 +662,14 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -709,15 +687,20 @@
"ret": "~0.2.0"
}
},
"secure-json-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-1.0.0.tgz",
"integrity": "sha512-kMg4jXttRQzVyLebIDc+MRxCueJ/zsmHpCn59BRd0mZUCd+V02wNd7/Pds8Nyhv7jfLHo1KkUOzdIF7cRMU4LQ=="
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.4.tgz",
"integrity": "sha512-8JRAJg0RxZtFLQMxolwETvWd2JSlH3ZGo/Z4xPxMbpqF14xCgVYPVeFCFOR3zyr3pcfG82QDVj6537Sx5ZWdNw==",
"requires": {
"flatstr": "^1.0.9"
}
@@ -729,9 +712,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -829,13 +812,13 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -847,9 +830,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uri-js": {
"version": "4.2.2",
@@ -875,9 +858,9 @@
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/microservices": "6.3.1",
"@nestjs/testing": "6.3.1",
"@nestjs/websockets": "6.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.2.0",
"fastify": "2.5.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,9 +28,9 @@
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -38,9 +38,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"ansi-regex": {
@@ -69,12 +69,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -94,9 +94,9 @@
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -149,9 +149,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -177,6 +177,7 @@
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -188,15 +189,15 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -259,11 +260,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -300,9 +316,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -373,7 +389,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -381,9 +398,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -413,9 +430,9 @@
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -433,9 +450,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -520,13 +537,13 @@
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -538,9 +555,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -559,9 +576,9 @@
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -7,17 +7,17 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,9 +28,9 @@
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.1.tgz",
"integrity": "sha512-vujz9lczXBnkw8H7vY/7V6Je0zcCUvpbgwLNGa5Dm/+SzUKTdSk5qjGgt3TiczXZY2PSuOdsTY0qUFHYK7B5yA==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
@@ -38,25 +38,25 @@
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.1.tgz",
"integrity": "sha512-2eTZhFzrl61I3+bmvh2jZvk7elah+P+ndVfHCzJzKA8jKNGOqdTjvj2beqxhjOsE4o8BsqOQm2eUXUzItjoHRg==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.1.tgz",
"integrity": "sha512-kkzDn2oULL7RpBUZ9Fh755rebXe9pqp67Pn84/1OMErLpk3XMSMXcfABomFNHKY2pbevxOk4ojpnm5WZdw3S9w==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -64,9 +64,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"ansi-regex": {
@@ -95,12 +95,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -120,9 +120,9 @@
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -203,6 +203,7 @@
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -214,15 +215,15 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -285,11 +286,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -326,9 +342,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -404,7 +420,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -412,9 +429,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -444,9 +461,9 @@
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -464,9 +481,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -551,13 +568,13 @@
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -569,9 +586,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -590,9 +607,9 @@
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/microservices": "6.3.1",
"@nestjs/testing": "6.3.1",
"@nestjs/websockets": "6.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -0,0 +1,169 @@
import * as ProtoLoader from '@grpc/proto-loader';
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { ExpressAdapter } from '@nestjs/platform-express';
import { Test } from '@nestjs/testing';
import { fail } from 'assert';
import { expect } from 'chai';
import * as express from 'express';
import * as GRPC from 'grpc';
import { join } from 'path';
import * as request from 'supertest';
import { AdvancedGrpcController } from '../src/grpc-advanced/advanced.grpc.controller';
describe('Advanced GRPC transport', () => {
let server;
let app: INestApplication;
let client: any;
before(async () => {
const module = await Test.createTestingModule({
controllers: [AdvancedGrpcController],
}).compile();
// Create gRPC + HTTP server
server = express();
app = module.createNestApplication(new ExpressAdapter(server));
/*
* Create microservice configuration
*/
app.connectMicroservice({
transport: Transport.GRPC,
options: {
url: 'localhost:5001',
package: 'proto_example',
protoPath: 'root.proto',
loader: {
includeDirs: [join(__dirname, '../src/grpc-advanced/proto')],
keepCase: true,
},
},
});
// Start gRPC microservice
await app.startAllMicroservicesAsync();
await app.init();
// Load proto-buffers for test gRPC dispatch
const proto = ProtoLoader.loadSync('root.proto', {
includeDirs: [join(__dirname, '../src/grpc-advanced/proto')],
}) as any;
// Create Raw gRPC client object
const protoGRPC = GRPC.loadPackageDefinition(proto) as any;
// Create client connected to started services at standard 5000 port
client = new protoGRPC.proto_example.orders.OrderService(
'localhost:5001',
GRPC.credentials.createInsecure(),
);
});
it(`GRPC Sending and Receiving HTTP POST`, () => {
return request(server)
.post('/')
.send('1')
.expect(200, {
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
});
it('GRPC Sending and receiving message', async () => {
// Execute find in Promise
return new Promise(resolve => {
client.find(
{
id: 1,
},
(err, result) => {
// Compare results
expect(err).to.be.null;
expect(result).to.eql({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
// Resolve after checkups
resolve();
},
);
});
});
it('GRPC Sending and receiving Stream from RX handler', async () => {
const callHandler = client.sync();
callHandler.on('data', (msg: number) => {
// Do deep comparison (to.eql)
expect(msg).to.eql({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
});
callHandler.on('error', (err: any) => {
// We want to fail only on real errors while Cancellation error
// is expected
if (
String(err)
.toLowerCase()
.indexOf('cancelled') === -1
) {
fail('gRPC Stream error happened, error: ' + err);
}
});
return new Promise((resolve, reject) => {
callHandler.write({
id: 1,
});
setTimeout(() => resolve(), 1000);
});
});
it('GRPC Sending and receiving Stream from Call handler', async () => {
const callHandler = client.syncCall();
callHandler.on('data', (msg: number) => {
// Do deep comparison (to.eql)
expect(msg).to.eql({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
});
callHandler.on('error', (err: any) => {
// We want to fail only on real errors while Cancellation error
// is expected
if (
String(err)
.toLowerCase()
.indexOf('cancelled') === -1
) {
fail('gRPC Stream error happened, error: ' + err);
}
});
return new Promise((resolve, reject) => {
callHandler.write({
id: 1,
});
setTimeout(() => resolve(), 1000);
});
});
});

View File

@@ -1,6 +1,10 @@
import * as ProtoLoader from '@grpc/proto-loader';
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import { fail } from 'assert';
import { expect } from 'chai';
import * as GRPC from 'grpc';
import { join } from 'path';
import * as request from 'supertest';
import { GrpcController } from '../src/grpc/grpc.controller';
@@ -8,8 +12,9 @@ import { GrpcController } from '../src/grpc/grpc.controller';
describe('GRPC transport', () => {
let server;
let app: INestApplication;
let client: any;
beforeEach(async () => {
before(async () => {
const module = await Test.createTestingModule({
controllers: [GrpcController],
}).compile();
@@ -24,18 +29,83 @@ describe('GRPC transport', () => {
protoPath: join(__dirname, '../src/grpc/math.proto'),
},
});
// Start gRPC microservice
await app.startAllMicroservicesAsync();
await app.init();
// Load proto-buffers for test gRPC dispatch
const proto = ProtoLoader.loadSync(
join(__dirname, '../src/grpc/math.proto'),
) as any;
// Create Raw gRPC client object
const protoGRPC = GRPC.loadPackageDefinition(proto) as any;
// Create client connected to started services at standard 5000 port
client = new protoGRPC.math.Math(
'localhost:5000',
GRPC.credentials.createInsecure(),
);
});
it(`/POST`, () => {
it(`GRPC Sending and Receiving HTTP POST`, () => {
return request(server)
.post('/')
.send([1, 2, 3, 4, 5])
.expect(200, { result: 15 });
});
afterEach(async () => {
it('GRPC Sending and receiving Stream from RX handler', async () => {
const callHandler = client.SumStream();
callHandler.on('data', (msg: number) => {
expect(msg).to.eql({ result: 15 });
callHandler.cancel();
});
callHandler.on('error', (err: any) => {
// We want to fail only on real errors while Cancellation error
// is expected
if (
String(err)
.toLowerCase()
.indexOf('cancelled') === -1
) {
fail('gRPC Stream error happened, error: ' + err);
}
});
return new Promise((resolve, reject) => {
callHandler.write({ data: [1, 2, 3, 4, 5] });
setTimeout(() => resolve(), 1000);
});
});
it('GRPC Sending and receiving Stream from Call Passthrough handler', async () => {
const callHandler = client.SumStreamPass();
callHandler.on('data', (msg: number) => {
expect(msg).to.eql({ result: 15 });
callHandler.cancel();
});
callHandler.on('error', (err: any) => {
// We want to fail only on real errors while Cancellation error
// is expected
if (
String(err)
.toLowerCase()
.indexOf('cancelled') === -1
) {
fail('gRPC Stream error happened, error: ' + err);
}
});
return new Promise((resolve, reject) => {
callHandler.write({ data: [1, 2, 3, 4, 5] });
setTimeout(() => resolve(), 1000);
});
});
after(async () => {
await app.close();
client.close();
});
});

View File

@@ -23,6 +23,7 @@ describe('RabbitMQ transport', () => {
urls: [`amqp://localhost:5672`],
queue: 'test',
queueOptions: { durable: false },
socketOptions: { noDelay: true },
},
});
await app.startAllMicroservicesAsync();

File diff suppressed because it is too large Load Diff

View File

@@ -7,21 +7,22 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"amqp-connection-manager": "2.3.1",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/microservices": "6.3.1",
"@nestjs/platform-express": "6.3.1",
"@nestjs/testing": "6.3.1",
"@nestjs/websockets": "6.3.1",
"amqp-connection-manager": "2.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -0,0 +1,100 @@
import { Body, Controller, HttpCode, Post } from '@nestjs/common';
import {
Client,
ClientGrpc,
GrpcMethod,
GrpcStreamCall,
GrpcStreamMethod,
Transport,
} from '@nestjs/microservices';
import { join } from 'path';
import { Observable, of, Subject } from 'rxjs';
@Controller()
export class AdvancedGrpcController {
/*
* HTTP Proxy Client defines loading pattern
*/
@Client({
transport: Transport.GRPC,
options: {
url: 'localhost:5001',
package: 'proto_example.orders',
protoPath: 'root.proto',
loader: {
includeDirs: [join(__dirname, './proto')],
keepCase: true,
},
},
})
client: ClientGrpc;
/**
* HTTP Proxy entry for support non-stream find method
* @param id
*/
@Post()
@HttpCode(200)
call(@Body() id: number): Observable<number> {
const svc = this.client.getService<any>('OrderService');
return svc.find({ id });
}
/**
* GRPC stub for Find method
* @param id
*/
@GrpcMethod('orders.OrderService')
async find({ id }: { id: number }): Promise<any> {
return of({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
}
/**
* GRPC stub implementation for sync stream method
* @param messages
*/
@GrpcStreamMethod('orders.OrderService')
async sync(messages: Observable<any>): Promise<any> {
const s = new Subject();
const o = s.asObservable();
messages.subscribe(msg => {
s.next({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
});
return o;
}
/**
* GRPC stub implementation for syncCall stream method (implemented through call)
* @param stream
*/
@GrpcStreamCall('orders.OrderService')
async syncCall(stream: any) {
stream.on('data', (msg: any) => {
stream.write({
id: 1,
itemTypes: [1],
shipmentType: {
from: 'test',
to: 'test1',
carrier: 'test-carrier',
},
});
});
}
}

View File

@@ -0,0 +1,8 @@
syntax = "proto3";
package proto_example.common.items;
enum ItemType {
DEFAULT = 0;
SUPERIOR = 1;
FLAWLESS = 2;
}

View File

@@ -0,0 +1,8 @@
syntax = "proto3";
package proto_example.common.shipments;
message ShipmentType {
string from = 1;
string to = 2;
string carrier = 3;
}

View File

@@ -0,0 +1,11 @@
syntax = "proto3";
package proto_example.orders;
import public "common/item_types.proto";
import public "common/shipment_types.proto";
message Order {
int32 id = 1;
repeated common.items.ItemType itemTypes = 2;
common.shipments.ShipmentType shipmentType = 3;
}

View File

@@ -0,0 +1,9 @@
syntax = "proto3";
import "orders/message.proto";
package proto_example.orders;
service OrderService {
rpc Find(Order) returns (Order);
rpc Sync(stream Order) returns (stream Order);
rpc SyncCall(stream Order) returns (stream Order);
}

View File

@@ -0,0 +1,3 @@
syntax = "proto3";
package proto_example;
import public "orders/service.proto";

View File

@@ -1,5 +1,12 @@
import { Body, Controller, HttpCode, Post } from '@nestjs/common';
import { Client, ClientGrpc, GrpcMethod, Transport } from '@nestjs/microservices';
import {
Client,
ClientGrpc,
GrpcMethod,
GrpcStreamCall,
GrpcStreamMethod,
Transport,
} from '@nestjs/microservices';
import { join } from 'path';
import { Observable, of } from 'rxjs';
@@ -27,4 +34,27 @@ export class GrpcController {
result: data.reduce((a, b) => a + b),
});
}
@GrpcStreamMethod('Math')
async sumStream(messages: Observable<any>): Promise<any> {
return new Promise<any>((resolve, reject) => {
messages.subscribe(
msg => {
resolve({
result: msg.data.reduce((a, b) => a + b),
});
},
err => {
reject(err);
},
);
});
}
@GrpcStreamCall('Math')
async sumStreamPass(stream: any) {
stream.on('data', (msg: any) => {
stream.write({ result: msg.data.reduce((a, b) => a + b) });
});
}
}

View File

@@ -3,7 +3,9 @@ syntax = "proto3";
package math;
service Math {
rpc Sum (RequestSum) returns (SumResult) {}
rpc Sum (RequestSum) returns (SumResult);
rpc SumStream(stream RequestSum) returns(stream SumResult);
rpc SumStreamPass(stream RequestSum) returns(stream SumResult);
}
message SumResult {

View File

@@ -19,6 +19,7 @@ export class RMQBroadcastController {
urls: [`amqp://localhost:5672`],
queue: 'test_broadcast',
queueOptions: { durable: false },
socketOptions: { noDelay: true },
},
});
}

View File

@@ -22,6 +22,7 @@ export class RMQController {
urls: [`amqp://localhost:5672`],
queue: 'test',
queueOptions: { durable: false },
socketOptions: { noDelay: true },
},
});
}

View File

@@ -4,22 +4,42 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
"axios": "0.18.0",
"@babel/highlight": "^7.0.0"
}
},
"@babel/highlight": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"@nestjs/common": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,14 +48,14 @@
}
},
"@nestjs/mongoose": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-6.0.0.tgz",
"integrity": "sha512-2iag6pGVAQ5ww92KRsVZmtpkcQ1LgaKyLs3LlUFDRXNfXqTvcHdpK0H4nVR19X9IMm0N57+MbQosvTFJDkbK+A=="
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-6.1.2.tgz",
"integrity": "sha512-BkbkguvaPPGbL/41lK6P22DaQodBC9Yv9rUAmNlQVShChtwss7/cGj68AKC3jEoidrx75wCyDO3P8Tp6pggE4w=="
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -52,9 +72,9 @@
}
},
"@types/mongodb": {
"version": "3.1.22",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.22.tgz",
"integrity": "sha512-hvNR0txBlJJAy1eZOeIDshW4dnQaC694COou4eHHaMdIcteCfoCQATD7sYNlXxNxfTc1iIbHUi7A8CAhQe08uA==",
"version": "3.1.28",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.28.tgz",
"integrity": "sha512-tG+QqJ/hir2p0069ee28t2O9tlGRJKDq1WFZC2QYMlU47LGdldLL8tepfTq6aFLvP58OpwSoxaJ/qjW93ob1NQ==",
"dev": true,
"requires": {
"@types/bson": "*",
@@ -62,9 +82,9 @@
}
},
"@types/mongoose": {
"version": "5.3.24",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.3.24.tgz",
"integrity": "sha512-Txa5C/veUJJG2o1sRbl8z1M7GhPjJz6J3JJQV76eYN0PyI9F2NO3gbVUj059ND5nlbvQjRhXuFLaqN6NH8nMNQ==",
"version": "5.5.6",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.5.6.tgz",
"integrity": "sha512-Duco8iiwOEGB756eIyafsrFbsAxjXQPkb/nplZtbxGOhfmsA90rXjO/GbDsBYbUz5nkGOCRHuNfxOJzoVAMHMg==",
"dev": true,
"requires": {
"@types/mongodb": "*",
@@ -72,9 +92,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"ansi-regex": {
@@ -106,58 +126,20 @@
}
},
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
"integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
"requires": {
"lodash": "^4.17.10"
"lodash": "^4.17.11"
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
"js-tokens": "^3.0.2"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"balanced-match": {
@@ -187,9 +169,9 @@
"integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
},
"buffer-from": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
"integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"builtin-modules": {
@@ -235,9 +217,9 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"commander": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
},
"concat-map": {
@@ -247,9 +229,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"d": {
"version": "1.0.0",
@@ -260,11 +242,18 @@
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "^2.1.1"
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"diff": {
@@ -274,9 +263,9 @@
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -345,11 +334,11 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
}
},
"fs.realpath": {
@@ -359,9 +348,9 @@
"dev": true
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -372,15 +361,6 @@
"path-is-absolute": "^1.0.0"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -397,15 +377,15 @@
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -418,15 +398,15 @@
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"js-yaml": {
"version": "3.13.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz",
"integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==",
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -503,41 +483,42 @@
}
},
"mongodb": {
"version": "3.1.13",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.13.tgz",
"integrity": "sha512-sz2dhvBZQWf3LRNDhbd30KHVzdjZx9IKC0L+kSZ/gzYquCF5zPOgGqRz6sSCqYZtKP2ekB4nfLxhGtzGHnIKxA==",
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.7.tgz",
"integrity": "sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==",
"requires": {
"mongodb-core": "3.1.11",
"mongodb-core": "3.2.7",
"safe-buffer": "^5.1.2"
}
},
"mongodb-core": {
"version": "3.1.11",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.11.tgz",
"integrity": "sha512-rD2US2s5qk/ckbiiGFHeu+yKYDXdJ1G87F6CG3YdaZpzdOm5zpoAZd/EKbPmFO6cQZ+XVXBXBJ660sSI0gc6qg==",
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz",
"integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==",
"requires": {
"bson": "^1.1.0",
"bson": "^1.1.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2",
"saslprep": "^1.0.0"
}
},
"mongoose": {
"version": "5.4.22",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.4.22.tgz",
"integrity": "sha512-rbtmFmXe5YJfBrVfOpSW2xeSAKFtnJ5RLQjl4ULzT1icmY/SUHtJ5b+mW4SMCEk7whm/w+2oHO9qMBr8UI1xIw==",
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.6.0.tgz",
"integrity": "sha512-bhevx8u4NfZf2Un+CcKWRsiNekrLH7dSI8mBC49FcY2SUXQPZf3w+Yby+cgDrpZA46nkqRW9Qaqhs7PT0XCtYQ==",
"requires": {
"async": "2.6.1",
"bson": "~1.1.0",
"async": "2.6.2",
"bson": "~1.1.1",
"kareem": "2.3.0",
"mongodb": "3.1.13",
"mongodb-core": "3.1.11",
"mongodb": "3.2.7",
"mongodb-core": "3.2.7",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.5.1",
"mquery": "3.2.0",
"ms": "2.1.1",
"regexp-clone": "0.0.1",
"mpath": "0.6.0",
"mquery": "3.2.1",
"ms": "2.1.2",
"regexp-clone": "1.0.0",
"safe-buffer": "5.1.2",
"sift": "7.0.1",
"sliced": "1.0.1"
}
},
@@ -547,41 +528,26 @@
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"mpath": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.5.1.tgz",
"integrity": "sha512-H8OVQ+QEz82sch4wbODFOz+3YQ61FYz/z3eJ5pIdbMEaUzDqA268Wd+Vt4Paw9TJfvDgVKaayC0gBzMIw2jhsg=="
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz",
"integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw=="
},
"mquery": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.0.tgz",
"integrity": "sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg==",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.1.tgz",
"integrity": "sha512-kY/K8QToZWTTocm0U+r8rqcJCp5PRl6e8tPmoDs5OeSO3DInZE2rAL6AYH+V406JTo8305LdASOQcxRDqHojyw==",
"requires": {
"bluebird": "3.5.1",
"debug": "3.1.0",
"regexp-clone": "0.0.1",
"regexp-clone": "^1.0.0",
"safe-buffer": "5.1.2",
"sliced": "1.0.1"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"next-tick": {
"version": "1.0.0",
@@ -589,9 +555,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -630,9 +596,9 @@
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"regexp-clone": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
"integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
},
"require_optional": {
"version": "1.0.1",
@@ -644,9 +610,9 @@
}
},
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -658,9 +624,9 @@
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -671,9 +637,9 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"saslprep": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz",
"integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
"optional": true,
"requires": {
"sparse-bitfield": "^3.0.3"
@@ -684,6 +650,11 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
},
"sift": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
"integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
},
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
@@ -696,9 +667,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -720,15 +691,6 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -747,16 +709,24 @@
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslib": {
@@ -765,18 +735,18 @@
"integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg=="
},
"tslint": {
"version": "5.15.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.15.0.tgz",
"integrity": "sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"dev": true,
"requires": {
"babel-code-frame": "^6.22.0",
"@babel/code-frame": "^7.0.0",
"builtin-modules": "^1.1.1",
"chalk": "^2.3.0",
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.13.0",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"resolve": "^1.3.2",
@@ -795,9 +765,9 @@
}
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uuid": {
"version": "3.3.2",
@@ -811,9 +781,9 @@
"dev": true
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/mongoose": "6.0.0",
"mongoose": "5.4.22",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/mongoose": "6.1.2",
"mongoose": "5.6.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/mongoose": "5.3.24",
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
"@types/mongoose": "5.5.6",
"@types/node": "7.10.6",
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,9 +28,9 @@
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.1.tgz",
"integrity": "sha512-vujz9lczXBnkw8H7vY/7V6Je0zcCUvpbgwLNGa5Dm/+SzUKTdSk5qjGgt3TiczXZY2PSuOdsTY0qUFHYK7B5yA==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
@@ -38,25 +38,25 @@
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.1.tgz",
"integrity": "sha512-2eTZhFzrl61I3+bmvh2jZvk7elah+P+ndVfHCzJzKA8jKNGOqdTjvj2beqxhjOsE4o8BsqOQm2eUXUzItjoHRg==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.1.tgz",
"integrity": "sha512-kkzDn2oULL7RpBUZ9Fh755rebXe9pqp67Pn84/1OMErLpk3XMSMXcfABomFNHKY2pbevxOk4ojpnm5WZdw3S9w==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -64,9 +64,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"abstract-logging": {
@@ -134,26 +134,21 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -171,9 +166,9 @@
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -226,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -254,7 +249,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -271,15 +265,15 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -352,9 +346,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.14.0.tgz",
"integrity": "sha512-3VSblXsVxIE46E/YzRYHapyIeM3/igeA/kyzdL5xfAIYNnCLd8Oy+scrURnqZIRXMmtx0hfyp+okN5+r4W+GMQ==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -371,23 +365,23 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.2.0.tgz",
"integrity": "sha512-U6W101N+8Hyz2uiN3XqdSdTiaWYiJ0lCJmC3tO42PNttjCZQp8EPIhZ0QkVQWLrrP0ijjgomwaYrj9eMzqWyDw==",
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.5.0.tgz",
"integrity": "sha512-51z51VlbGw+ZJp8MJeZVqLtwAMMUiobo/YcAgyA7guRzflDa5tyw7yhZUDLfOng2YQIrVWZzWX7jPPvbQPQBxg==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.11.2",
"fast-json-stringify": "^1.15.0",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"flatstr": "^1.0.12",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"secure-json-parse": "^1.0.0",
"tiny-lru": "^6.0.1"
}
},
@@ -410,31 +404,16 @@
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -475,14 +454,14 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -581,8 +560,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"next-tick": {
"version": "1.0.0",
@@ -590,9 +568,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -610,9 +588,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -623,9 +601,9 @@
}
},
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
"integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
"integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ=="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -634,12 +612,12 @@
"dev": true
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
"ipaddr.js": "1.9.0"
}
},
"punycode": {
@@ -659,9 +637,9 @@
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -684,14 +662,14 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -709,15 +687,20 @@
"ret": "~0.2.0"
}
},
"secure-json-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-1.0.0.tgz",
"integrity": "sha512-kMg4jXttRQzVyLebIDc+MRxCueJ/zsmHpCn59BRd0mZUCd+V02wNd7/Pds8Nyhv7jfLHo1KkUOzdIF7cRMU4LQ=="
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.4.tgz",
"integrity": "sha512-8JRAJg0RxZtFLQMxolwETvWd2JSlH3ZGo/Z4xPxMbpqF14xCgVYPVeFCFOR3zyr3pcfG82QDVj6537Sx5ZWdNw==",
"requires": {
"flatstr": "^1.0.9"
}
@@ -729,9 +712,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -829,13 +812,13 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -847,9 +830,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uri-js": {
"version": "4.2.2",
@@ -875,9 +858,9 @@
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/microservices": "6.3.1",
"@nestjs/testing": "6.3.1",
"@nestjs/websockets": "6.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.2.0",
"fastify": "2.5.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -3,7 +3,7 @@ import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { ApplicationModule } from '../src/app.module';
describe('GraphQL - Pipes', () => {
describe('GraphQL Pipes', () => {
let app: INestApplication;
beforeEach(async () => {
@@ -32,20 +32,24 @@ describe('GraphQL - Pipes', () => {
extensions: {
code: 'INTERNAL_SERVER_ERROR',
exception: {
message: [
{
children: [],
constraints: {
length:
'description must be longer than or equal to 30 characters',
message: {
error: 'Bad Request',
message: [
{
children: [],
constraints: {
length:
'description must be longer than or equal to 30 characters',
},
property: 'description',
target: {
ingredients: [],
title: 'test',
},
},
property: 'description',
target: {
ingredients: [],
title: 'test',
},
},
],
],
statusCode: 400,
},
response: {
error: 'Bad Request',
message: [
@@ -73,20 +77,24 @@ describe('GraphQL - Pipes', () => {
line: 2,
},
],
message: [
{
children: [],
constraints: {
length:
'description must be longer than or equal to 30 characters',
message: {
error: 'Bad Request',
message: [
{
children: [],
constraints: {
length:
'description must be longer than or equal to 30 characters',
},
property: 'description',
target: {
ingredients: [],
title: 'test',
},
},
property: 'description',
target: {
ingredients: [],
title: 'test',
},
},
],
],
statusCode: 400,
},
path: ['addRecipe'],
},
],

File diff suppressed because it is too large Load Diff

View File

@@ -9,24 +9,24 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/graphql": "6.0.5",
"apollo-server-express": "2.4.8",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.4",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"graphql": "14.2.1",
"graphql-tools": "4.0.4",
"graphql": "14.3.1",
"graphql-tools": "4.0.5",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"rxjs": "6.5.2",
"subscriptions-transport-ws": "0.9.16",
"type-graphql": "0.17.1",
"typescript": "3.4.2",
"ws": "6.2.1"
"type-graphql": "0.17.4",
"typescript": "3.5.2",
"ws": "7.0.1"
},
"devDependencies": {
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
"@types/node": "7.10.6",
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/typeorm": "6.0.0",
"mysql": "2.16.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/typeorm": "6.1.2",
"mysql": "2.17.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typeorm": "0.2.16",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typeorm": "0.2.18",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
"@types/node": "7.10.6",
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.1.tgz",
"integrity": "sha512-uuI/CCe6MFISMX+fSpkRvvQ6CBlXW89+5wfiveQ22AzAxgqGLAyWvNVHUE8F+zev7QDbxbY9vfPtm8CE5kiJVQ==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.1.tgz",
"integrity": "sha512-GiH64nX5Z/HrHESo0huiSFH894/hzs0qRuSVNSq4MWIgHgTjdFlqu/VcXlPz21pJXhoimegpk1x1wsm2hu+WUw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
@@ -28,9 +28,9 @@
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.1.tgz",
"integrity": "sha512-vujz9lczXBnkw8H7vY/7V6Je0zcCUvpbgwLNGa5Dm/+SzUKTdSk5qjGgt3TiczXZY2PSuOdsTY0qUFHYK7B5yA==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
@@ -38,25 +38,25 @@
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.1.tgz",
"integrity": "sha512-2eTZhFzrl61I3+bmvh2jZvk7elah+P+ndVfHCzJzKA8jKNGOqdTjvj2beqxhjOsE4o8BsqOQm2eUXUzItjoHRg==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.1.tgz",
"integrity": "sha512-kkzDn2oULL7RpBUZ9Fh755rebXe9pqp67Pn84/1OMErLpk3XMSMXcfABomFNHKY2pbevxOk4ojpnm5WZdw3S9w==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -64,9 +64,9 @@
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"version": "7.10.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.6.tgz",
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"ansi-regex": {
@@ -95,12 +95,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -120,9 +120,9 @@
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.7.1.tgz",
"integrity": "sha512-u7JYs+HnMbZPD2cEuS1XHsLeqtazA0kd5lAk8r8DnnGdgNhOdb7DSubJ+QLdQkbtpmmxgp7gs8Ug44sCyY4FCQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -203,6 +203,7 @@
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -214,15 +215,15 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
"integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -285,11 +286,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -326,9 +342,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -404,7 +420,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -412,9 +429,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -444,9 +461,9 @@
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
"integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"requires": {
"tslib": "^1.9.0"
}
@@ -464,9 +481,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -551,13 +568,13 @@
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -569,9 +586,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -590,9 +607,9 @@
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
"integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
"dev": true
}
}

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"@nestjs/common": "6.3.1",
"@nestjs/core": "6.3.1",
"@nestjs/microservices": "6.3.1",
"@nestjs/testing": "6.3.1",
"@nestjs/websockets": "6.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
"rxjs": "6.5.2",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.0.3"
"ts-node": "8.3.0"
}
}

View File

@@ -3,5 +3,5 @@
"packages": [
"packages/*"
],
"version": "6.0.5"
"version": "6.3.2"
}

4864
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "nestjs",
"version": "6.0.5",
"name": "@nestjs/core",
"version": "6.3.0",
"description": "Modern, fast, powerful node.js web framework",
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
@@ -31,80 +31,80 @@
"license": "MIT",
"dependencies": {
"@grpc/proto-loader": "0.3.0",
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"@nuxtjs/opencollective": "0.2.1",
"amqp-connection-manager": "2.3.1",
"@nestjs/common": "6.1.1",
"@nestjs/core": "6.1.1",
"@nestjs/microservices": "6.1.1",
"@nestjs/testing": "6.1.1",
"@nestjs/websockets": "6.1.1",
"@nuxtjs/opencollective": "0.2.2",
"amqp-connection-manager": "2.3.2",
"amqplib": "0.5.3",
"apollo-server-express": "2.4.8",
"axios": "0.18.0",
"cache-manager": "2.9.0",
"class-transformer": "0.2.0",
"apollo-server-express": "2.6.4",
"axios": "0.19.0",
"cache-manager": "2.9.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"cli-color": "1.4.0",
"connect": "3.6.6",
"connect": "3.7.0",
"cors": "2.8.5",
"engine.io-client": "3.3.2",
"express": "4.16.4",
"fast-json-stringify": "1.14.0",
"express": "4.17.1",
"fast-json-stringify": "1.15.3",
"fast-safe-stringify": "2.0.6",
"fastify": "2.2.0",
"fastify-cors": "2.1.2",
"fastify": "2.5.0",
"fastify-cors": "2.1.3",
"fastify-formbody": "3.1.0",
"fastify-multipart": "0.8.0",
"graphql": "14.2.1",
"grpc": "1.19.0",
"fastify-multipart": "1.0.0",
"graphql": "14.3.1",
"grpc": "1.21.1",
"http2": "3.3.7",
"iterare": "1.1.2",
"iterare": "1.2.0",
"merge-graphql-schemas": "1.5.8",
"mqtt": "2.18.8",
"mqtt": "3.0.0",
"multer": "1.4.1",
"nats": "1.2.6",
"nats": "1.3.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"path-to-regexp": "3.0.0",
"pump": "3.0.0",
"redis": "2.8.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"rxjs-compat": "6.4.0",
"rxjs": "6.5.2",
"rxjs-compat": "6.5.2",
"socket.io": "2.2.0",
"ts-morph": "1.3.3",
"ts-morph": "2.3.0",
"uuid": "3.3.2"
},
"devDependencies": {
"@types/amqplib": "0.5.11",
"@types/amqplib": "0.5.12",
"@types/cache-manager": "1.2.7",
"@types/chai": "4.1.7",
"@types/chai-as-promised": "7.1.0",
"@types/cors": "2.8.4",
"@types/express": "4.16.1",
"@types/cors": "2.8.5",
"@types/express": "4.17.0",
"@types/fastify-cors": "2.1.0",
"@types/kafka-node": "2.0.8",
"@types/mocha": "5.2.6",
"@types/node": "10.14.4",
"@types/redis": "2.8.12",
"@types/mocha": "5.2.7",
"@types/node": "10.14.10",
"@types/redis": "2.8.13",
"@types/reflect-metadata": "0.0.5",
"@types/sinon": "7.0.11",
"@types/sinon": "7.0.13",
"@types/socket.io": "2.1.2",
"@types/ws": "6.0.1",
"artillery": "1.6.0-27",
"artillery": "1.6.0-28",
"awesome-typescript-loader": "5.2.1",
"body-parser": "1.18.3",
"body-parser": "1.19.0",
"chai": "4.2.0",
"chai-as-promised": "7.1.1",
"clang-format": "1.2.4",
"concurrently": "4.1.0",
"conventional-changelog": "3.0.6",
"core-js": "3.0.1",
"coveralls": "3.0.3",
"conventional-changelog": "3.1.8",
"core-js": "3.1.4",
"coveralls": "3.0.4",
"csv-write-stream": "2.0.0",
"delete-empty": "2.0.0",
"fastify-static": "2.4.0",
"gulp": "4.0.0",
"fastify-static": "2.5.0",
"gulp": "4.0.1",
"gulp-clang-format": "1.0.27",
"gulp-clean": "0.4.0",
"gulp-sourcemaps": "2.6.5",
@@ -113,20 +113,20 @@
"husky": "1.3.1",
"imports-loader": "0.8.0",
"json-loader": "0.5.7",
"lerna": "3.13.1",
"lint-staged": "8.1.5",
"lerna": "3.15.0",
"lint-staged": "8.2.1",
"memory-usage": "1.2.1",
"mocha": "3.5.3",
"nodemon": "1.18.10",
"nyc": "13.3.0",
"prettier": "1.16.4",
"sinon": "7.3.1",
"nodemon": "1.19.1",
"nyc": "14.1.1",
"prettier": "1.18.2",
"sinon": "7.3.2",
"sinon-chai": "3.3.0",
"socket.io-client": "2.2.0",
"supertest": "4.0.2",
"ts-node": "8.0.3",
"tslint": "5.15.0",
"typescript": "3.4.2"
"ts-node": "8.3.0",
"tslint": "5.18.0",
"typescript": "3.5.2"
},
"collective": {
"type": "opencollective",
@@ -141,9 +141,11 @@
],
"exclude": [
"node_modules/",
"packages/**/test/**",
"packages/**/*.spec.ts",
"packages/**/adapters/*.ts",
"packages/**/nest-*.ts",
"packages/**/test/**/*.ts",
"packages/core/errors/**/*",
"packages/common/exceptions/*.ts",
"packages/common/http/*.ts",

View File

@@ -14,7 +14,7 @@
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
@@ -53,30 +53,32 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
#### Base Sponsor
<a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="300" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="200" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/" target="_blank"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" valign="middle" /></a> &nbsp;
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp; <a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" valign="middle" /> </a> &nbsp; &nbsp;
<a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="100" valign="middle" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a>
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="150" valign="middle" /></a>
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a> &nbsp;
<a href="http://www.leogistics.com" target="_blank"><img src="https://nestjs.com/img/leogistics-logo.jpeg" width="150" valign="middle" /></a>
#### Sponsors
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a> &nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp;
<a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="125" valign="middle" /> </a> &nbsp; <a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="180" valign="middle" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="130" valign="middle" /></a> &nbsp;
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="100" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a>
<a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
&nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp; <a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
<a href="https://ever.co/" target="_blank"><img src="https://nestjs.com/img/ever-logo.png" height="20" valign="middle" /></a> &nbsp;
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a>
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a> &nbsp;
<a href="https://blokt.com" target="_blank"><img src="https://nestjs.com/img/blokt-logo.png" height="31" valign="middle" /></a> &nbsp;
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>
## Backers
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=1600"></a>
## Stay in touch

View File

@@ -48,7 +48,8 @@ export function createParamDecorator(
const isPipe = (pipe: any) =>
pipe &&
((isFunction(pipe) && pipe.prototype) || isFunction(pipe.transform));
((isFunction(pipe) && pipe.prototype && isFunction(pipe.prototype.transform)) ||
isFunction(pipe.transform));
const hasParamData = isNil(data) || !isPipe(data);
const paramData = hasParamData ? data : undefined;

View File

@@ -1,5 +1,3 @@
import { isObject } from '../utils/shared.utils';
export class HttpException extends Error {
public readonly message: any;
@@ -22,9 +20,7 @@ export class HttpException extends Error {
private readonly status: number,
) {
super();
this.message =
(isObject(response) && (response as { message?: string }).message) ||
response;
this.message = response;
}
public getResponse(): string | object {

View File

@@ -38,4 +38,8 @@ export interface ClassTransformOptions {
* This option is useful when you know for sure that your types might have a circular dependency.
*/
enableCircularCheck?: boolean;
/**
* If set to true class-transformer will attempt conversion based on TS reflected type
*/
enableImplicitConversion?: boolean;
}

View File

@@ -72,6 +72,7 @@ export interface NatsOptions {
options?: {
url?: string;
name?: string;
user?: string;
pass?: string;
maxReconnectAttempts?: number;
reconnectTimeWait?: number;
@@ -89,5 +90,6 @@ export interface RmqOptions {
prefetchCount?: number;
isGlobalPrefetchCount?: boolean;
queueOptions?: any;
socketOptions?: any;
};
}

View File

@@ -6,7 +6,8 @@ export type Provider<T = any> =
| Type<any>
| ClassProvider<T>
| ValueProvider<T>
| FactoryProvider<T>;
| FactoryProvider<T>
| ExistingProvider<T>;
export interface ClassProvider<T = any> {
provide: string | symbol | Type<any> | Abstract<any> | Function;
@@ -22,6 +23,11 @@ export interface ValueProvider<T = any> {
export interface FactoryProvider<T = any> {
provide: string | symbol | Type<any> | Abstract<any> | Function;
useFactory: (...args: any[]) => T;
inject?: Array<Type<any> | string | any>;
inject?: Array<Type<any> | string | symbol | Abstract<any> | Function>;
scope?: Scope;
}
export interface ExistingProvider<T = any> {
provide: string | symbol | Type<any> | Abstract<any> | Function;
useExisting: any;
}

View File

@@ -1,7 +1,7 @@
import { ShutdownSignal } from '../enums/shutdown-signal.enum';
import { LoggerService } from '../services/logger.service';
import { Abstract } from './abstract.interface';
import { Type } from './type.interface';
import { ShutdownSignal } from '../enums/shutdown-signal.enum';
export interface INestApplicationContext {
/**
@@ -39,4 +39,13 @@ export interface INestApplicationContext {
* @returns {this} The Nest application context instance
*/
enableShutdownHooks(signals?: ShutdownSignal[] | string[]): this;
/**
* Initalizes the Nest application.
* Calls the Nest lifecycle events.
* It isn't mandatory to call this method directly.
*
* @returns {Promise<this>} The NestApplicationContext instance as Promise
*/
init(): Promise<this>;
}

View File

@@ -8,13 +8,6 @@ import { INestApplicationContext } from './nest-application-context.interface';
import { WebSocketAdapter } from './websockets/web-socket-adapter.interface';
export interface INestApplication extends INestApplicationContext {
/**
* Initializes application. It is not mandatory to call this method directly.
*
* @returns {Promise}
*/
init(): Promise<this>;
/**
* A wrapper function around HTTP adapter method: `adapter.use()`.
* Example `app.use(cors())`

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/common",
"version": "6.0.5",
"version": "6.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@common)",
"author": "Kamil Mysliwiec",
"repository": {
@@ -12,7 +12,7 @@
},
"license": "MIT",
"dependencies": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
},

View File

@@ -1,2 +1,3 @@
export * from './validation.pipe';
export * from './parse-int.pipe';
export * from './parse-uuid.pipe';
export * from './validation.pipe';

View File

@@ -0,0 +1,31 @@
import { Optional } from '../decorators';
import { ArgumentMetadata, BadRequestException, Injectable } from '../index';
import { PipeTransform } from '../interfaces/features/pipe-transform.interface';
import { isUUID } from '../utils/is-uuid';
export interface ParseUUIDPipeOptions {
version?: '3' | '4' | '5';
exceptionFactory?: (errors: string) => any;
}
@Injectable()
export class ParseUUIDPipe implements PipeTransform<string> {
private readonly version: '3' | '4' | '5';
protected exceptionFactory: (errors: string) => any;
constructor(@Optional() options?: ParseUUIDPipeOptions) {
options = options || {};
this.version = options.version;
this.exceptionFactory =
options.exceptionFactory || (error => new BadRequestException(error));
}
async transform(value: string, metadata: ArgumentMetadata): Promise<string> {
if (!isUUID(value, this.version)) {
throw this.exceptionFactory(
`Validation failed (uuid v${this.version} is expected)`,
);
}
return value;
}
}

View File

@@ -1,6 +1,10 @@
import { Optional } from '../decorators';
import { Injectable } from '../decorators/core';
import { ArgumentMetadata, BadRequestException, ValidationError } from '../index';
import {
ArgumentMetadata,
BadRequestException,
ValidationError,
} from '../index';
import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface';
import { ValidatorOptions } from '../interfaces/external/validator-options.interface';
import { PipeTransform } from '../interfaces/features/pipe-transform.interface';
@@ -12,6 +16,7 @@ export interface ValidationPipeOptions extends ValidatorOptions {
disableErrorMessages?: boolean;
transformOptions?: ClassTransformOptions;
exceptionFactory?: (errors: ValidationError[]) => any;
validateCustomDecorators?: boolean;
}
let classValidator: any = {};
@@ -24,6 +29,7 @@ export class ValidationPipe implements PipeTransform<any> {
protected validatorOptions: ValidatorOptions;
protected transformOptions: ClassTransformOptions;
protected exceptionFactory: (errors: ValidationError[]) => any;
protected validateCustomDecorators: boolean;
constructor(@Optional() options?: ValidationPipeOptions) {
options = options || {};
@@ -31,12 +37,14 @@ export class ValidationPipe implements PipeTransform<any> {
transform,
disableErrorMessages,
transformOptions,
validateCustomDecorators,
...validatorOptions
} = options;
this.isTransformEnabled = !!transform;
this.validatorOptions = validatorOptions;
this.transformOptions = transformOptions;
this.isDetailedOutputDisabled = disableErrorMessages;
this.validateCustomDecorators = validateCustomDecorators || false;
this.exceptionFactory =
options.exceptionFactory ||
(errors =>
@@ -57,10 +65,13 @@ export class ValidationPipe implements PipeTransform<any> {
if (!metatype || !this.toValidate(metadata)) {
return value;
}
value = this.toEmptyIfNil(value);
this.stripProtoKeys(value);
const entity = classTransformer.plainToClass(
metatype,
this.toEmptyIfNil(value),
this.transformOptions
value,
this.transformOptions,
);
const errors = await classValidator.validate(entity, this.validatorOptions);
if (errors.length > 0) {
@@ -69,20 +80,28 @@ export class ValidationPipe implements PipeTransform<any> {
return this.isTransformEnabled
? entity
: Object.keys(this.validatorOptions).length > 0
? classTransformer.classToPlain(entity, this.transformOptions)
: value;
? classTransformer.classToPlain(entity, this.transformOptions)
: value;
}
private toValidate(metadata: ArgumentMetadata): boolean {
const { metatype, type } = metadata;
if (type === 'custom') {
if (type === 'custom' && !this.validateCustomDecorators) {
return false;
}
const types = [String, Boolean, Number, Array, Object];
return !types.some(t => metatype === t) && !isNil(metatype);
}
toEmptyIfNil<T = any, R = any>(value: T): R | {} {
private toEmptyIfNil<T = any, R = any>(value: T): R | {} {
return isNil(value) ? {} : value;
}
private stripProtoKeys(value: Record<string, any>) {
delete value.__proto__;
const keys = Object.keys(value);
keys
.filter(key => typeof value[key] === 'object' && value[key])
.forEach(key => this.stripProtoKeys(value[key]));
}
}

View File

@@ -88,5 +88,24 @@ describe('createParamDecorator', () => {
});
});
});
describe('when class type passed as data', () => {
class Data { }
class Test {
public test(
@Decorator(Data) prop,
) { }
}
it('should return class type as data parameter', () => {
const metadata = Reflect.getMetadata(
ROUTE_ARGS_METADATA,
Test,
'test',
);
const key = Object.keys(metadata)[0];
expect(metadata[key].data).to.equal(Data);
});
});
});
});

View File

@@ -0,0 +1,47 @@
import { expect } from 'chai';
import { BadRequestException, HttpException, NotFoundException } from '../../exceptions';
describe('HttpException', () => {
it('should return a message as a string when input is a string', () => {
const message: string = 'My error message';
expect(new HttpException(message, 404).message).to.be.eql('My error message');
});
it('should return a message as an object when input is an object', () => {
const message: object = {
msg: 'My error message',
reason: 'this can be a human readable reason',
anything: 'else',
};
expect(new HttpException(message, 404).message).to.be.eql(message);
});
it('should return a message from a built-in exception as an object', () => {
const message: string = 'My error message';
expect(new BadRequestException(message).message).to.be.eql({
statusCode: 400,
error: 'Bad Request',
message: 'My error message',
});
});
it('should return an object even when the message is undefined', () => {
expect(new BadRequestException().message).to.be.eql({statusCode: 400, error: 'Bad Request'});
});
it('should return a status code', () => {
expect(new BadRequestException().getStatus()).to.be.eql(400);
expect(new NotFoundException().getStatus()).to.be.eql(404);
});
it('should return a response', () => {
expect(new BadRequestException().getResponse()).to.be.eql({
error: 'Bad Request',
statusCode: 400,
});
expect(new NotFoundException().getResponse()).to.be.eql({
error: 'Not Found',
statusCode: 404,
});
});
});

View File

@@ -0,0 +1,66 @@
import { expect } from 'chai';
import * as sinon from 'sinon';
import { ArgumentMetadata } from '../../interfaces';
import { ParseUUIDPipe } from '../../pipes/parse-uuid.pipe';
describe('ParseUUIDPipe', () => {
let target: ParseUUIDPipe;
describe('transform', () => {
const v3 = 'e8b5a51d-11c8-3310-a6ab-367563f20686';
const v4 = '10ba038e-48da-487b-96e8-8d3b99b6d18a';
const v5 = '630eb68f-e0fa-5ecc-887a-7c7a62614681';
describe('when validation passes', () => {
it('should return string if value is uuid v3, v4 or v5', async () => {
target = new ParseUUIDPipe();
expect(await target.transform(v3, {} as ArgumentMetadata)).to.equal(v3);
expect(await target.transform(v4, {} as ArgumentMetadata)).to.equal(v4);
expect(await target.transform(v5, {} as ArgumentMetadata)).to.equal(v5);
});
it('should return string if value is uuid v3', async () => {
target = new ParseUUIDPipe({ version: '3' });
expect(await target.transform(v3, {} as ArgumentMetadata)).to.equal(v3);
});
it('should return string if value is uuid v4', async () => {
target = new ParseUUIDPipe({ version: '4' });
expect(await target.transform(v4, {} as ArgumentMetadata)).to.equal(v4);
});
it('should return string if value is uuid v5', async () => {
target = new ParseUUIDPipe({ version: '5' });
expect(await target.transform(v5, {} as ArgumentMetadata)).to.equal(v5);
});
});
describe('when validation fails', () => {
it('should throw an error', async () => {
target = new ParseUUIDPipe();
expect(target.transform('123a', {} as ArgumentMetadata)).to.be.rejected;
});
it('should throw an error - v3', async () => {
target = new ParseUUIDPipe({ version: '3' });
expect(target.transform('123a', {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v4, {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v5, {} as ArgumentMetadata)).to.be.rejected;
});
it('should throw an error - v4', async () => {
target = new ParseUUIDPipe({ version: '4' });
expect(target.transform('123a', {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v3, {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v5, {} as ArgumentMetadata)).to.be.rejected;
});
it('should throw an error - v5 ', async () => {
target = new ParseUUIDPipe({ version: '4' });
expect(target.transform('123a', {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v3, {} as ArgumentMetadata)).to.be.rejected;
expect(target.transform(v4, {} as ArgumentMetadata)).to.be.rejected;
});
});
});
});

View File

@@ -26,6 +26,10 @@ class TestModel {
@IsString() public prop1: string;
@IsString() public prop2: string;
@IsOptional()
@IsString()
public optionalProp: string;
}
describe('ValidationPipe', () => {
@@ -46,13 +50,34 @@ describe('ValidationPipe', () => {
beforeEach(() => {
target = new ValidationPipe();
});
it('should return the value unchanged', async () => {
it('should return the value unchanged if optional value is not defined', async () => {
const testObj = { prop1: 'value1', prop2: 'value2' };
expect(await target.transform(testObj, {} as any)).to.equal(testObj);
expect(
await target.transform(testObj, metadata as any),
).to.not.be.instanceOf(TestModel);
});
it('should return the value unchanged if optional value is set undefined', async () => {
const testObj = { prop1: 'value1', prop2: 'value2', optionalProp: undefined };
expect(await target.transform(testObj, {} as any)).to.equal(testObj);
expect(
await target.transform(testObj, metadata as any),
).to.not.be.instanceOf(TestModel);
});
it('should return the value unchanged if optional value is null', async () => {
const testObj = { prop1: 'value1', prop2: 'value2', optionalProp: null };
expect(await target.transform(testObj, {} as any)).to.equal(testObj);
expect(
await target.transform(testObj, metadata as any),
).to.not.be.instanceOf(TestModel);
});
it('should return the value unchanged if optional value is set', async () => {
const testObj = { prop1: 'value1', prop2: 'value2', optionalProp: 'optional value' };
expect(await target.transform(testObj, {} as any)).to.equal(testObj);
expect(
await target.transform(testObj, metadata as any),
).to.not.be.instanceOf(TestModel);
});
});
describe('when validation fails', () => {
beforeEach(() => {
@@ -134,6 +159,48 @@ describe('ValidationPipe', () => {
expect(
await target.transform(testObj, metadata),
).to.not.have.property('prop3');
expect(
await target.transform(testObj, metadata),
).to.not.have.property('optionalProp');
});
it('should return a plain object without extra properties if optional prop is defined', async () => {
target = new ValidationPipe({ transform: false, whitelist: true });
const testObj = { prop1: 'value1', prop2: 'value2', prop3: 'value3', optionalProp: 'optional value' };
expect(
await target.transform(testObj, metadata),
).to.not.be.instanceOf(TestModel);
expect(
await target.transform(testObj, metadata),
).to.not.have.property('prop3');
expect(
await target.transform(testObj, metadata),
).to.have.property('optionalProp');
});
it('should return a plain object without extra properties if optional prop is undefined', async () => {
target = new ValidationPipe({ transform: false, whitelist: true });
const testObj = { prop1: 'value1', prop2: 'value2', prop3: 'value3', optionalProp: undefined };
expect(
await target.transform(testObj, metadata),
).to.not.be.instanceOf(TestModel);
expect(
await target.transform(testObj, metadata),
).to.not.have.property('prop3');
expect(
await target.transform(testObj, metadata),
).to.have.property('optionalProp');
});
it('should return a plain object without extra properties if optional prop is null', async () => {
target = new ValidationPipe({ transform: false, whitelist: true });
const testObj = { prop1: 'value1', prop2: 'value2', prop3: 'value3', optionalProp: null };
expect(
await target.transform(testObj, metadata),
).to.not.be.instanceOf(TestModel);
expect(
await target.transform(testObj, metadata),
).to.not.have.property('prop3');
expect(
await target.transform(testObj, metadata),
).to.have.property('optionalProp');
});
});
describe('when validation rejects', () => {

View File

@@ -0,0 +1,16 @@
import { BadRequestException } from '../exceptions';
const uuid = {
3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
};
export function isUUID(str: any, version = 'all') {
if (typeof str !== 'string') {
throw new BadRequestException('The value passed as UUID is not a string');
}
const pattern = uuid[version];
return pattern && pattern.test(str);
}

View File

@@ -7,6 +7,7 @@ export const validatePath = (path?: string): string =>
export const isFunction = (fn: any): boolean => typeof fn === 'function';
export const isString = (fn: any): fn is string => typeof fn === 'string';
export const isConstructor = (fn: any): boolean => fn === 'constructor';
export const isNil = (obj: any): boolean => isUndefined(obj) || obj === null;
export const isNil = (obj: any): obj is null | undefined =>
isUndefined(obj) || obj === null;
export const isEmpty = (array: any): boolean => !(array && array.length > 0);
export const isSymbol = (fn: any): fn is symbol => typeof fn === 'symbol';

View File

@@ -14,7 +14,7 @@
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
@@ -53,30 +53,32 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
#### Base Sponsor
<a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="300" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="200" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/" target="_blank"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" valign="middle" /></a> &nbsp;
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp; <a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" valign="middle" /> </a> &nbsp; &nbsp;
<a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="100" valign="middle" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a>
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="150" valign="middle" /></a>
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a> &nbsp;
<a href="http://www.leogistics.com" target="_blank"><img src="https://nestjs.com/img/leogistics-logo.jpeg" width="150" valign="middle" /></a>
#### Sponsors
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a> &nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp;
<a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="125" valign="middle" /> </a> &nbsp; <a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="180" valign="middle" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="130" valign="middle" /></a> &nbsp;
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="100" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a>
<a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
&nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp; <a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
<a href="https://ever.co/" target="_blank"><img src="https://nestjs.com/img/ever-logo.png" height="20" valign="middle" /></a> &nbsp;
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a>
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a> &nbsp;
<a href="https://blokt.com" target="_blank"><img src="https://nestjs.com/img/blokt-logo.png" height="31" valign="middle" /></a> &nbsp;
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>
## Backers
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=1600"></a>
## Stay in touch

View File

@@ -1,24 +1,31 @@
import { ExceptionHandler } from './exception-handler';
import { UNHANDLED_RUNTIME_EXCEPTION } from './messages';
const DEFAULT_TEARDOWN = () => process.exit(1);
export class ExceptionsZone {
private static readonly exceptionHandler = new ExceptionHandler();
public static run(fn: () => void) {
public static run(
callback: () => void,
teardown: (err: any) => void = DEFAULT_TEARDOWN,
) {
try {
fn();
callback();
} catch (e) {
this.exceptionHandler.handle(e);
throw UNHANDLED_RUNTIME_EXCEPTION;
teardown(e);
}
}
public static async asyncRun(fn: () => Promise<void>) {
public static async asyncRun(
callback: () => Promise<void>,
teardown: (err: any) => void = DEFAULT_TEARDOWN,
) {
try {
await fn();
await callback();
} catch (e) {
this.exceptionHandler.handle(e);
throw UNHANDLED_RUNTIME_EXCEPTION;
teardown(e);
}
}
}

View File

@@ -40,6 +40,12 @@ export interface ExternalHandlerMetadata {
) => (ParamProperties & { metatype?: any })[];
}
export interface ExternalContextOptions {
guards?: boolean;
interceptors?: boolean;
filters?: boolean;
}
export class ExternalContextCreator {
private readonly contextUtils = new ContextUtils();
private readonly externalErrorProxy = new ExternalErrorProxy();
@@ -98,6 +104,11 @@ export class ExternalContextCreator {
paramsFactory?: ParamsFactory,
contextId = STATIC_CONTEXT,
inquirerId?: string,
options: ExternalContextOptions = {
interceptors: true,
guards: true,
filters: true,
},
) {
const module = this.findContextModuleName(instance.constructor);
const { argsLength, paramtypes, getParamsMetadata } = this.getMetadata<T>(
@@ -106,7 +117,6 @@ export class ExternalContextCreator {
metadataKey,
paramsFactory,
);
const pipes = this.pipesContextCreator.create(
instance,
callback,
@@ -114,7 +124,6 @@ export class ExternalContextCreator {
contextId,
inquirerId,
);
const guards = this.guardsContextCreator.create(
instance,
callback,
@@ -122,13 +131,6 @@ export class ExternalContextCreator {
contextId,
inquirerId,
);
const interceptors = this.interceptorsContextCreator.create(
instance,
callback,
module,
contextId,
inquirerId,
);
const exceptionFilter = this.filtersContextCreator.create(
instance,
callback,
@@ -136,12 +138,24 @@ export class ExternalContextCreator {
contextId,
inquirerId,
);
const interceptors = options.interceptors
? this.interceptorsContextCreator.create(
instance,
callback,
module,
contextId,
inquirerId,
)
: [];
const paramsMetadata = getParamsMetadata(module, contextId, inquirerId);
const paramsOptions = paramsMetadata
? this.contextUtils.mergeParamsMetatypes(paramsMetadata, paramtypes)
: [];
const fnCanActivate = options.guards
? this.createGuardsFn(guards, instance, callback)
: null;
const fnApplyPipes = this.createPipesFn(pipes, paramsOptions);
const handler = (initialArgs: any[], ...args: any[]) => async () => {
if (fnApplyPipes) {
@@ -153,15 +167,8 @@ export class ExternalContextCreator {
const target = async (...args: any[]) => {
const initialArgs = this.contextUtils.createNullArray(argsLength);
const canActivate = await this.guardsConsumer.tryActivate(
guards,
args,
instance,
callback,
);
if (!canActivate) {
throw new ForbiddenException(FORBIDDEN_MESSAGE);
}
fnCanActivate && (await fnCanActivate(args));
const result = await this.interceptorsConsumer.intercept(
interceptors,
args,
@@ -171,7 +178,9 @@ export class ExternalContextCreator {
);
return this.transformToResult(result);
};
return this.externalErrorProxy.createProxy(target, exceptionFilter);
return options.filters
? this.externalErrorProxy.createProxy(target, exceptionFilter)
: target;
}
public getMetadata<T>(
@@ -328,4 +337,23 @@ export class ExternalContextCreator {
}
return resultOrDeffered;
}
public createGuardsFn(
guards: any[],
instance: Controller,
callback: (...args: any[]) => any,
): Function | null {
const canActivateFn = async (args: any[]) => {
const canActivate = await this.guardsConsumer.tryActivate(
guards,
args,
instance,
callback,
);
if (!canActivate) {
throw new ForbiddenException(FORBIDDEN_MESSAGE);
}
};
return guards.length ? canActivateFn : null;
}
}

View File

@@ -80,7 +80,7 @@ export class Injector {
}
const loadInstance = (instances: any[]) => {
targetWrapper.instance = targetWrapper.isDependencyTreeStatic()
? new metatype(...instances)
? new (metatype as Type<any>)(...instances)
: Object.create(metatype.prototype);
};
await this.resolveConstructorParams(
@@ -190,7 +190,7 @@ export class Injector {
throw new RuntimeException();
}
if (instanceHost.isResolved) {
return;
return done();
}
const callback = async (instances: any[]) => {
const properties = await this.resolveProperties(
@@ -235,10 +235,10 @@ export class Injector {
return callback(deps);
}
const dependencies = isNil(inject)
? this.reflectConstructorParams(wrapper.metatype)
? this.reflectConstructorParams(wrapper.metatype as Type<any>)
: inject;
const optionalDependenciesIds = isNil(inject)
? this.reflectOptionalParams(wrapper.metatype)
? this.reflectOptionalParams(wrapper.metatype as Type<any>)
: [];
let isResolved = true;
@@ -444,12 +444,20 @@ export class Injector {
moduleRegistry: any[] = [],
contextId = STATIC_CONTEXT,
inquirer?: InstanceWrapper,
isTraversing?: boolean,
): Promise<any> {
let instanceWrapperRef: InstanceWrapper = null;
const imports = module.imports || new Set<Module>();
const children = [...imports.values()].filter(item => item);
const identity = (item: any) => item;
let children = [...imports.values()].filter(identity);
if (isTraversing) {
const contextModuleExports = module.exports;
children = children.filter(child =>
contextModuleExports.has(child.metatype && child.metatype.name),
);
}
for (const relatedModule of children) {
if (moduleRegistry.includes(relatedModule.id)) {
continue;
@@ -464,6 +472,7 @@ export class Injector {
moduleRegistry,
contextId,
inquirer,
true,
);
if (instanceRef) {
return instanceRef;
@@ -504,7 +513,7 @@ export class Injector {
if (metadata && contextId !== STATIC_CONTEXT) {
return this.loadPropertiesMetadata(metadata, contextId, inquirer);
}
const properties = this.reflectProperties(wrapper.metatype);
const properties = this.reflectProperties(wrapper.metatype as Type<any>);
const instances = await Promise.all(
properties.map(async (item: PropertyDependency) => {
try {
@@ -588,14 +597,12 @@ export class Injector {
const isInContext = isStatic || isInRequestScope || isLazyTransient;
if (isNil(inject) && isInContext) {
const targetInstance = wrapper.getInstanceByContextId(
contextId,
inquirerId,
);
targetInstance.instance = wrapper.forwardRef
? Object.assign(targetInstance.instance, new metatype(...instances))
: new metatype(...instances);
instanceHost.instance = wrapper.forwardRef
? Object.assign(
instanceHost.instance,
new (metatype as Type<any>)(...instances),
)
: new (metatype as Type<any>)(...instances);
} else if (isInContext) {
const factoryReturnValue = ((targetMetatype.metatype as any) as Function)(
...instances,

View File

@@ -1,4 +1,9 @@
import { Scope, Type } from '@nestjs/common';
import { Provider, Scope, Type } from '@nestjs/common';
import {
ClassProvider,
FactoryProvider,
ValueProvider,
} from '@nestjs/common/interfaces';
import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util';
import { isNil, isUndefined } from '@nestjs/common/utils/shared.utils';
import { STATIC_CONTEXT } from './constants';
@@ -30,11 +35,11 @@ interface InstanceMetadataStore {
export class InstanceWrapper<T = any> {
public readonly name: any;
public readonly metatype: Type<T>;
public readonly inject?: (string | symbol | Function | Type<any>)[];
public readonly async?: boolean;
public readonly host?: Module;
public readonly scope?: Scope = Scope.DEFAULT;
public metatype: Type<T> | Function;
public inject?: (string | symbol | Function | Type<any>)[];
public forwardRef?: boolean;
private readonly values = new WeakMap<ContextId, InstancePerContext<T>>();
@@ -293,6 +298,24 @@ export class InstanceWrapper<T = any> {
.filter(item => !!item);
}
public mergeWith(provider: Provider) {
if ((provider as ValueProvider).useValue) {
this.metatype = null;
this.inject = null;
this.setInstanceByContextId(STATIC_CONTEXT, {
instance: (provider as ValueProvider).useValue,
isResolved: true,
isPending: false,
});
} else if ((provider as ClassProvider).useClass) {
this.inject = null;
this.metatype = (provider as ClassProvider).useClass;
} else if ((provider as FactoryProvider).useFactory) {
this.metatype = (provider as FactoryProvider).useFactory;
this.inject = (provider as FactoryProvider).inject || [];
}
}
private isNewable(): boolean {
return isNil(this.inject) && this.metatype && this.metatype.prototype;
}

View File

@@ -2,10 +2,15 @@ import { Scope } from '@nestjs/common';
import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants';
import {
Abstract,
ClassProvider,
Controller,
DynamicModule,
ExistingProvider,
FactoryProvider,
Injectable,
NestModule,
Provider,
ValueProvider,
} from '@nestjs/common/interfaces';
import { Type } from '@nestjs/common/interfaces/type.interface';
import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util';
@@ -23,32 +28,9 @@ import { NestContainer } from './container';
import { InstanceWrapper } from './instance-wrapper';
import { ModuleRef } from './module-ref';
export interface CustomProvider {
provide: any;
name: string;
interface ProviderName {
name?: string | symbol;
}
export type OpaqueToken =
| string
| symbol
| Type<any>
| Function
| Abstract<any>;
export type CustomClass = CustomProvider & {
useClass: Type<any>;
scope?: Scope;
};
export type CustomFactory = CustomProvider & {
useFactory: (...args: any[]) => any;
inject?: OpaqueToken[];
scope?: Scope;
};
export type CustomValue = CustomProvider & { useValue: any };
export type ProviderMetatype =
| Type<Injectable>
| CustomFactory
| CustomValue
| CustomClass;
export class Module {
private readonly _id: string;
@@ -186,7 +168,7 @@ export class Module {
}
}
public addProvider(provider: ProviderMetatype): string {
public addProvider(provider: Provider): string {
if (this.isCustomProvider(provider)) {
return this.addCustomProvider(provider, this._providers);
}
@@ -205,13 +187,28 @@ export class Module {
}
public isCustomProvider(
provider: ProviderMetatype,
): provider is CustomClass | CustomFactory | CustomValue {
return !isNil((provider as CustomProvider).provide);
provider: Provider,
): provider is
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider {
return !isNil(
(provider as
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider).provide,
);
}
public addCustomProvider(
provider: CustomFactory | CustomValue | CustomClass,
provider: (
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider) &
ProviderName,
collection: Map<string, any>,
): string {
const name = this.getProviderStaticToken(provider.provide) as string;
@@ -225,20 +222,26 @@ export class Module {
this.addCustomValue(provider, collection);
} else if (this.isCustomFactory(provider)) {
this.addCustomFactory(provider, collection);
} else if (this.isCustomUseExisting(provider)) {
this.addCustomUseExisting(provider, collection);
}
return name;
}
public isCustomClass(provider: any): provider is CustomClass {
return !isUndefined((provider as CustomClass).useClass);
public isCustomClass(provider: any): provider is ClassProvider {
return !isUndefined((provider as ClassProvider).useClass);
}
public isCustomValue(provider: any): provider is CustomValue {
return !isUndefined((provider as CustomValue).useValue);
public isCustomValue(provider: any): provider is ValueProvider {
return !isUndefined((provider as ValueProvider).useValue);
}
public isCustomFactory(provider: any): provider is CustomFactory {
return !isUndefined((provider as CustomFactory).useFactory);
public isCustomFactory(provider: any): provider is FactoryProvider {
return !isUndefined((provider as FactoryProvider).useFactory);
}
public isCustomUseExisting(provider: any): provider is ExistingProvider {
return !isUndefined((provider as ExistingProvider).useExisting);
}
public isDynamicModule(exported: any): exported is DynamicModule {
@@ -246,12 +249,12 @@ export class Module {
}
public addCustomClass(
provider: CustomClass,
provider: ClassProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useClass, scope } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: useClass,
@@ -264,12 +267,12 @@ export class Module {
}
public addCustomValue(
provider: CustomValue,
provider: ValueProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useValue: value } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: null,
@@ -282,12 +285,12 @@ export class Module {
}
public addCustomFactory(
provider: CustomFactory,
provider: FactoryProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useFactory: factory, inject, scope } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: factory as any,
@@ -300,8 +303,26 @@ export class Module {
);
}
public addCustomUseExisting(
provider: ExistingProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useExisting } = provider;
collection.set(
name as string,
new InstanceWrapper({
name,
metatype: (instance => instance) as any,
instance: null,
isResolved: false,
inject: [useExisting],
host: this,
}),
);
}
public addExportedProvider(
provider: ProviderMetatype | string | symbol | DynamicModule,
provider: Provider & ProviderName | string | symbol | DynamicModule,
) {
const addExportedUnit = (token: string | symbol) =>
this._exports.add(this.validateExportedProvider(token));
@@ -318,7 +339,11 @@ export class Module {
}
public addCustomExportedProvider(
provider: CustomFactory | CustomValue | CustomClass,
provider:
| FactoryProvider
| ValueProvider
| ClassProvider
| ExistingProvider,
) {
const provide = provider.provide;
if (isString(provide) || isSymbol(provide)) {
@@ -365,9 +390,13 @@ export class Module {
public replace(toReplace: string | symbol | Type<any>, options: any) {
if (options.isProvider && this.hasProvider(toReplace)) {
return this.addProvider({ provide: toReplace, ...options });
const name = this.getProviderStaticToken(toReplace);
const originalProvider = this._providers.get(name);
return originalProvider.mergeWith({ provide: toReplace, ...options });
} else if (!options.isProvider && this.hasInjectable(toReplace)) {
this.addInjectable({
const name = this.getProviderStaticToken(toReplace);
const originalInjectable = this._injectables.get(name);
return originalInjectable.mergeWith({
provide: toReplace,
...options,
});
@@ -385,7 +414,7 @@ export class Module {
}
public getProviderStaticToken(
provider: string | symbol | Type<any>,
provider: string | symbol | Type<any> | Abstract<any>,
): string | symbol {
return isFunction(provider)
? (provider as Function).name
@@ -425,7 +454,7 @@ export class Module {
};
}
private getClassScope(provider: ProviderMetatype): Scope {
private getClassScope(provider: Provider): Scope {
const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider);
return metadata && metadata.scope;
}

View File

@@ -23,6 +23,7 @@ export class NestApplicationContext implements INestApplicationContext {
private readonly moduleTokenFactory = new ModuleTokenFactory();
private readonly containerScanner: ContainerScanner;
private readonly activeShutdownSignals: string[] = new Array<string>();
protected isInitialized: boolean = false;
constructor(
protected readonly container: NestContainer,
@@ -63,9 +64,20 @@ export class NestApplicationContext implements INestApplicationContext {
);
}
/**
* Initalizes the Nest application.
* Calls the Nest lifecycle events.
*
* @returns {Promise<this>} The NestApplicationContext instance as Promise
*/
public async init(): Promise<this> {
// Ignore if is already initialized
if (this.isInitialized) return;
await this.callInitHook();
await this.callBootstrapHook();
this.isInitialized = true;
return this;
}

View File

@@ -45,7 +45,6 @@ export class NestApplication extends NestApplicationContext
private readonly routesResolver: Resolver;
private readonly microservices: any[] = [];
private httpServer: any;
private isInitialized = false;
constructor(
container: NestContainer,

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/core",
"version": "6.0.5",
"version": "6.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@core)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -22,9 +22,9 @@
}
},
"dependencies": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"

View File

@@ -1,6 +1,6 @@
import { BadRequestException, NotFoundException } from '@nestjs/common';
import { MODULE_PATH } from '@nestjs/common/constants';
import { HttpServer } from '@nestjs/common/interfaces';
import { HttpServer, Type } from '@nestjs/common/interfaces';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Logger } from '@nestjs/common/services/logger.service';
import { ApplicationConfig } from '../application-config';
@@ -60,7 +60,10 @@ export class RoutesResolver implements Resolver {
) {
routes.forEach(instanceWrapper => {
const { metatype } = instanceWrapper;
const path = this.routerBuilder.extractRouterPath(metatype, basePath);
const path = this.routerBuilder.extractRouterPath(
metatype as Type<any>,
basePath,
);
const controllerName = metatype.name;
this.logger.log(CONTROLLER_MAPPING_MESSAGE(controllerName, path));

View File

@@ -16,6 +16,7 @@ import {
ClassProvider,
FactoryProvider,
ValueProvider,
ExistingProvider,
} from '@nestjs/common/interfaces';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
@@ -187,14 +188,15 @@ export class DependenciesScanner {
component.prototype,
this.reflectKeyMetadata.bind(this, component, metadataKey),
);
const flattenMethodsInjectables = methodsInjectables.reduce<any[]>(
(a: any[], b) => a.concat(b),
const flattenMethodsInjectables = methodsInjectables.reduce(
(a: any[], b: any[]) => a.concat(b),
[],
);
const injectables = [
) as any[];
const combinedInjectables = [
...controllerInjectables,
...flattenMethodsInjectables,
].filter(isFunction);
const injectables = Array.from(new Set(combinedInjectables));
injectables.forEach(injectable =>
this.insertInjectable(injectable, token, component),
@@ -255,7 +257,11 @@ export class DependenciesScanner {
public isCustomProvider(
provider: Provider,
): provider is ClassProvider | ValueProvider | FactoryProvider {
): provider is
| ClassProvider
| ValueProvider
| FactoryProvider
| ExistingProvider {
return provider && !isNil((provider as any).provide);
}
@@ -266,8 +272,11 @@ export class DependenciesScanner {
}
const applyProvidersMap = this.getApplyProvidersMap();
const providersKeys = Object.keys(applyProvidersMap);
const type = (provider as ClassProvider | ValueProvider | FactoryProvider)
.provide;
const type = (provider as
| ClassProvider
| ValueProvider
| FactoryProvider
| ExistingProvider).provide;
if (!providersKeys.includes(type as string)) {
return this.container.addProvider(provider as any, token);

View File

@@ -1,16 +1,19 @@
import * as sinon from 'sinon';
import { expect } from 'chai';
import * as sinon from 'sinon';
import { ExceptionsZone } from '../../../errors/exceptions-zone';
import { UNHANDLED_RUNTIME_EXCEPTION } from '../../../errors/messages';
describe('ExceptionsZone', () => {
const rethrow = err => {
throw err;
};
describe('run', () => {
let callback: sinon.SinonSpy;
beforeEach(() => {
callback = sinon.spy();
});
it('should call callback', () => {
ExceptionsZone.run(callback as any);
ExceptionsZone.run(callback as any, rethrow);
expect(callback.called).to.be.true;
});
describe('when callback throws exception', () => {
@@ -18,17 +21,15 @@ describe('ExceptionsZone', () => {
handle: () => {},
};
let handleSpy: sinon.SinonSpy;
beforeEach(() => {
before(() => {
(ExceptionsZone as any).exceptionHandler = exceptionHandler;
handleSpy = sinon.spy(exceptionHandler, 'handle');
});
it('should call "handle" method of exceptionHandler and throws UNHANDLED_RUNTIME_EXCEPTION', () => {
it('should call "handle" method of exceptionHandler and rethrows', () => {
const throwsCallback = () => {
throw 3;
throw new Error('');
};
expect(() => ExceptionsZone.run(throwsCallback)).to.throws(
UNHANDLED_RUNTIME_EXCEPTION,
);
expect(() => ExceptionsZone.run(throwsCallback, rethrow)).to.throws();
expect(handleSpy.called).to.be.true;
});
});
@@ -39,7 +40,7 @@ describe('ExceptionsZone', () => {
callback = sinon.spy();
});
it('should call callback', async () => {
await ExceptionsZone.asyncRun(callback as any);
await ExceptionsZone.asyncRun(callback as any, rethrow);
expect(callback.called).to.be.true;
});
describe('when callback throws exception', () => {
@@ -47,16 +48,16 @@ describe('ExceptionsZone', () => {
handle: () => {},
};
let handleSpy: sinon.SinonSpy;
beforeEach(() => {
before(() => {
(ExceptionsZone as any).exceptionHandler = exceptionHandler;
handleSpy = sinon.spy(exceptionHandler, 'handle');
});
it('should call "handle" method of exceptionHandler and throws UNHANDLED_RUNTIME_EXCEPTION', async () => {
it('should call "handle" method of exceptionHandler and rethrows error', async () => {
const throwsCallback = () => {
throw 3;
throw new Error('');
};
expect(ExceptionsZone.asyncRun(throwsCallback)).to.eventually.be
.rejected;
expect(ExceptionsZone.asyncRun(throwsCallback, rethrow)).to.eventually
.be.rejected;
});
});
});

View File

@@ -0,0 +1,8 @@
import { expect } from 'chai';
import { createContextId } from '../../helpers/context-id-factory';
describe('createContextId', () => {
it('should return an object with random "id" property', () => {
expect(createContextId()).to.have.property('id');
});
});

View File

@@ -54,7 +54,7 @@ describe('Module', () => {
const setSpy = sinon.spy(collection, 'set');
(module as any)._injectables = collection;
module.addInjectable(TestProvider);
module.addInjectable(TestProvider, TestModule);
expect(
setSpy.calledWith(
'TestProvider',
@@ -140,6 +140,16 @@ describe('Module', () => {
expect((addCustomFactory as sinon.SinonSpy).called).to.be.true;
});
it('should call "addCustomUseExisting" when "useExisting" property exists', () => {
const addCustomUseExisting = sinon.spy();
module.addCustomUseExisting = addCustomUseExisting;
const provider = { provide: 'test', useExisting: () => null };
module.addCustomUseExisting(provider as any, new Map());
expect((addCustomUseExisting as sinon.SinonSpy).called).to.be.true;
});
describe('addCustomClass', () => {
const type = { name: 'TypeTest' };
const provider = { provide: type, useClass: type, name: 'test' };
@@ -229,6 +239,36 @@ describe('Module', () => {
});
});
describe('addCustomUseExisting', () => {
const type = { name: 'TypeTest' };
const provider = { provide: type, useExisting: type, name: 'test' };
let setSpy;
beforeEach(() => {
const collection = new Map();
setSpy = sinon.spy(collection, 'set');
(module as any)._providers = collection;
});
it('should store provider', () => {
module.addCustomUseExisting(provider as any, (module as any)._providers);
const factoryFn = (module as any)._providers.get(provider.name).metatype;
expect(
setSpy.calledWith(
provider.name,
new InstanceWrapper({
host: module,
name: provider.name,
metatype: factoryFn,
instance: null,
inject: [provider.useExisting as any],
isResolved: false,
}),
),
).to.be.true;
expect(factoryFn(provider.useExisting)).to.be.eql(type);
});
});
describe('when get instance', () => {
describe('when metatype does not exists in providers collection', () => {
beforeEach(() => {
@@ -272,21 +312,28 @@ describe('Module', () => {
describe('replace', () => {
describe('when provider', () => {
it('should call `addProvider`', () => {
const addProviderSpy = sinon.spy(module, 'addProvider');
it('should call `mergeWith`', () => {
const wrapper = {
mergeWith: sinon.spy(),
};
sinon.stub(module, 'hasProvider').callsFake(() => true);
sinon.stub(module.providers, 'get').callsFake(() => wrapper as any);
module.replace(null, { isProvider: true });
expect(addProviderSpy.called).to.be.true;
expect(wrapper.mergeWith.called).to.be.true;
});
});
describe('when guard', () => {
it('should call `addInjectable`', () => {
const addInjectableSpy = sinon.spy(module, 'addInjectable');
it('should call `mergeWith`', () => {
const wrapper = {
mergeWith: sinon.spy(),
isProvider: true,
};
sinon.stub(module, 'hasInjectable').callsFake(() => true);
sinon.stub(module.injectables, 'get').callsFake(() => wrapper as any);
module.replace(null, {});
expect(addInjectableSpy.called).to.be.true;
expect(wrapper.mergeWith.called).to.be.true;
});
});
});
@@ -413,4 +460,25 @@ describe('Module', () => {
});
});
});
describe('getter "id"', () => {
it('should return module id', () => {
// tslint:disable-next-line:no-string-literal
expect(module.id).to.be.equal(module['_id']);
});
});
describe('getProviderByKey', () => {
describe('when does not exist', () => {
it('should return undefined', () => {
expect(module.getProviderByKey('test')).to.be.undefined;
});
});
describe('otherwise', () => {
it('should return instance wrapper', () => {
module.addProvider(TestProvider);
expect(module.getProviderByKey('TestProvider')).to.not.be.undefined;
});
});
});
});

View File

@@ -14,7 +14,7 @@
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
@@ -53,30 +53,32 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
#### Base Sponsor
<a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="300" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="200" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/" target="_blank"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" valign="middle" /></a> &nbsp;
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp; <a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" valign="middle" /> </a> &nbsp; &nbsp;
<a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="100" valign="middle" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a>
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="150" valign="middle" /></a>
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a> &nbsp;
<a href="http://www.leogistics.com" target="_blank"><img src="https://nestjs.com/img/leogistics-logo.jpeg" width="150" valign="middle" /></a>
#### Sponsors
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a> &nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp;
<a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="125" valign="middle" /> </a> &nbsp; <a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="180" valign="middle" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="130" valign="middle" /></a> &nbsp;
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="100" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a>
<a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
&nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp; <a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
<a href="https://ever.co/" target="_blank"><img src="https://nestjs.com/img/ever-logo.png" height="20" valign="middle" /></a> &nbsp;
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a>
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a> &nbsp;
<a href="https://blokt.com" target="_blank"><img src="https://nestjs.com/img/blokt-logo.png" height="31" valign="middle" /></a> &nbsp;
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>
## Backers
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=1600"></a>
## Stay in touch

View File

@@ -2,12 +2,16 @@ import { Logger } from '@nestjs/common/services/logger.service';
import { loadPackage } from '@nestjs/common/utils/load-package.util';
import { isObject } from '@nestjs/common/utils/shared.utils';
import { Observable } from 'rxjs';
import { GRPC_DEFAULT_PROTO_LOADER, GRPC_DEFAULT_URL } from '../constants';
import {
GRPC_DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,
GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH,
GRPC_DEFAULT_PROTO_LOADER,
GRPC_DEFAULT_URL,
} from '../constants';
import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception';
import { InvalidGrpcServiceException } from '../errors/invalid-grpc-service.exception';
import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception';
import { ClientGrpc, GrpcOptions } from '../interfaces';
import { ClientOptions } from '../interfaces/client-metadata.interface';
import { ClientProxy } from './client-proxy';
import { GRPC_CANCELLED } from './constants';
@@ -19,14 +23,12 @@ export class ClientGrpcProxy extends ClientProxy implements ClientGrpc {
protected readonly url: string;
protected grpcClient: any;
constructor(protected readonly options: ClientOptions['options']) {
constructor(protected readonly options: GrpcOptions['options']) {
super();
this.url =
this.getOptionsProp<GrpcOptions>(options, 'url') || GRPC_DEFAULT_URL;
this.url = this.getOptionsProp(options, 'url') || GRPC_DEFAULT_URL;
const protoLoader =
this.getOptionsProp<GrpcOptions>(options, 'protoLoader') ||
GRPC_DEFAULT_PROTO_LOADER;
this.getOptionsProp(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER;
grpcPackage = loadPackage('grpc', ClientGrpcProxy.name, () =>
require('grpc'),
@@ -36,16 +38,39 @@ export class ClientGrpcProxy extends ClientProxy implements ClientGrpc {
}
public getService<T extends {}>(name: string): T {
const maxSendMessageLengthKey = 'grpc.max_send_message_length';
const maxReceiveMessageLengthKey = 'grpc.max_receive_message_length';
const maxMessageLengthOptions = {
[maxSendMessageLengthKey]: this.getOptionsProp(
this.options,
'maxSendMessageLength',
GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH,
),
[maxReceiveMessageLengthKey]: this.getOptionsProp(
this.options,
'maxReceiveMessageLength',
GRPC_DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,
),
};
const options: any = isObject(this.options)
? { ...this.options, loader: '' }
: {};
? {
...this.options,
...maxMessageLengthOptions,
loader: '',
}
: {
...maxMessageLengthOptions,
};
if (!this.grpcClient[name]) {
throw new InvalidGrpcServiceException();
}
const credentials =
options.credentials || grpcPackage.credentials.createInsecure();
delete options.credentials;
const grpcClient = new this.grpcClient[name](
this.url,
options.credentials || grpcPackage.credentials.createInsecure(),
credentials,
options,
);
const protoMethods = Object.keys(this.grpcClient[name].prototype);
@@ -119,10 +144,7 @@ export class ClientGrpcProxy extends ClientProxy implements ClientGrpc {
public createClient(): any {
const grpcContext = this.loadProto();
const packageName = this.getOptionsProp<GrpcOptions>(
this.options,
'package',
);
const packageName = this.getOptionsProp(this.options, 'package');
const grpcPkg = this.lookupPackage(grpcContext, packageName);
if (!grpcPkg) {
const invalidPackageError = new InvalidGrpcPackageException();
@@ -134,8 +156,8 @@ export class ClientGrpcProxy extends ClientProxy implements ClientGrpc {
public loadProto(): any {
try {
const file = this.getOptionsProp<GrpcOptions>(this.options, 'protoPath');
const loader = this.getOptionsProp<GrpcOptions>(this.options, 'loader');
const file = this.getOptionsProp(this.options, 'protoPath');
const loader = this.getOptionsProp(this.options, 'loader');
const packageDefinition = grpcProtoLoaderPackage.loadSync(file, loader);
const packageObject = grpcPackage.loadPackageDefinition(

View File

@@ -10,7 +10,6 @@ import {
} from '../constants';
import { MqttClient } from '../external/mqtt-client.interface';
import { MqttOptions, PacketId, ReadPacket, WritePacket } from '../interfaces';
import { ClientOptions } from '../interfaces/client-metadata.interface';
import { ClientProxy } from './client-proxy';
import { ECONNREFUSED } from './constants';
@@ -22,10 +21,9 @@ export class ClientMqtt extends ClientProxy {
protected mqttClient: MqttClient;
protected connection: Promise<any>;
constructor(protected readonly options: ClientOptions['options']) {
constructor(protected readonly options: MqttOptions['options']) {
super();
this.url =
this.getOptionsProp<MqttOptions>(this.options, 'url') || MQTT_DEFAULT_URL;
this.url = this.getOptionsProp(this.options, 'url') || MQTT_DEFAULT_URL;
mqttPackage = loadPackage('mqtt', ClientMqtt.name, () => require('mqtt'));
}

View File

@@ -4,7 +4,6 @@ import { share } from 'rxjs/operators';
import { ERROR_EVENT, NATS_DEFAULT_URL } from '../constants';
import { Client } from '../external/nats-client.interface';
import { NatsOptions, PacketId, ReadPacket, WritePacket } from '../interfaces';
import { ClientOptions } from '../interfaces/client-metadata.interface';
import { ClientProxy } from './client-proxy';
import { CONN_ERR } from './constants';
@@ -16,10 +15,9 @@ export class ClientNats extends ClientProxy {
protected natsClient: Client;
protected connection: Promise<any>;
constructor(protected readonly options: ClientOptions['options']) {
constructor(protected readonly options: NatsOptions['options']) {
super();
this.url =
this.getOptionsProp<NatsOptions>(this.options, 'url') || NATS_DEFAULT_URL;
this.url = this.getOptionsProp(this.options, 'url') || NATS_DEFAULT_URL;
natsPackage = loadPackage('nats', ClientNats.name, () => require('nats'));
}
@@ -107,10 +105,8 @@ export class ClientNats extends ClientProxy {
protected dispatchEvent(packet: ReadPacket): Promise<any> {
const pattern = this.normalizePattern(packet.pattern);
return new Promise((resolve, reject) =>
this.natsClient.publish(
pattern,
packet as any,
err => (err ? reject(err) : resolve()),
this.natsClient.publish(pattern, packet as any, err =>
err ? reject(err) : resolve(),
),
);
}

View File

@@ -1,6 +1,16 @@
import { Transport } from '../enums/transport.enum';
import { ClientOptions } from '../interfaces/client-metadata.interface';
import {
ClientOptions,
TcpClientOptions,
} from '../interfaces/client-metadata.interface';
import { Closeable } from '../interfaces/closeable.interface';
import {
GrpcOptions,
MqttOptions,
NatsOptions,
RedisOptions,
RmqOptions,
} from '../interfaces/microservice-configuration.interface';
import { ClientGrpcProxy } from './client-grpc';
import { ClientMqtt } from './client-mqtt';
import { ClientNats } from './client-nats';
@@ -14,21 +24,25 @@ export interface IClientProxyFactory {
}
export class ClientProxyFactory {
public static create(
clientOptions: { transport: Transport.GRPC } & ClientOptions,
): ClientGrpcProxy;
public static create(clientOptions: ClientOptions): ClientProxy & Closeable;
public static create(clientOptions: ClientOptions): ClientProxy & Closeable {
const { transport, options } = clientOptions;
switch (transport) {
case Transport.REDIS:
return new ClientRedis(options);
return new ClientRedis(options as RedisOptions['options']);
case Transport.NATS:
return new ClientNats(options);
return new ClientNats(options as NatsOptions['options']);
case Transport.MQTT:
return new ClientMqtt(options);
return new ClientMqtt(options as MqttOptions['options']);
case Transport.GRPC:
return new ClientGrpcProxy(options);
return new ClientGrpcProxy(options as GrpcOptions['options']);
case Transport.RMQ:
return new ClientRMQ(options);
return new ClientRMQ(options as RmqOptions['options']);
default:
return new ClientTCP(options);
return new ClientTCP(options as TcpClientOptions['options']);
}
}
}

View File

@@ -93,15 +93,14 @@ export abstract class ClientProxy {
return merge(error$, connect$).pipe(take(1));
}
protected getOptionsProp<T extends { options?: any }>(
obj: ClientOptions['options'],
prop: keyof T['options'],
defaultValue: any = undefined,
) {
return obj ? obj[prop as string] : defaultValue;
protected getOptionsProp<
T extends ClientOptions['options'],
K extends keyof T
>(obj: T, prop: K, defaultValue: T[K] = undefined) {
return (obj && obj[prop]) || defaultValue;
}
protected normalizePattern<T = any>(pattern: T): string {
return isString(pattern) ? pattern : JSON.stringify(pattern);
return (isString(pattern) ? pattern : JSON.stringify(pattern)) as string;
}
}

View File

@@ -14,7 +14,6 @@ import {
RetryStrategyOptions,
} from '../external/redis.interface';
import { PacketId, ReadPacket, RedisOptions, WritePacket } from '../interfaces';
import { ClientOptions } from '../interfaces/client-metadata.interface';
import { ClientProxy } from './client-proxy';
import { ECONNREFUSED } from './constants';
@@ -28,10 +27,9 @@ export class ClientRedis extends ClientProxy {
protected connection: Promise<any>;
protected isExplicitlyTerminated = false;
constructor(protected readonly options: ClientOptions['options']) {
constructor(protected readonly options: RedisOptions['options']) {
super();
this.url =
this.getOptionsProp<RedisOptions>(options, 'url') || REDIS_DEFAULT_URL;
this.url = this.getOptionsProp(options, 'url') || REDIS_DEFAULT_URL;
redisPackage = loadPackage('redis', ClientRedis.name, () =>
require('redis'),
@@ -108,13 +106,12 @@ export class ClientRedis extends ClientProxy {
}
if (
this.isExplicitlyTerminated ||
!this.getOptionsProp<RedisOptions>(this.options, 'retryAttempts') ||
options.attempt >
this.getOptionsProp<RedisOptions>(this.options, 'retryAttempts')
!this.getOptionsProp(this.options, 'retryAttempts') ||
options.attempt > this.getOptionsProp(this.options, 'retryAttempts')
) {
return undefined;
}
return this.getOptionsProp<RedisOptions>(this.options, 'retryDelay') || 0;
return this.getOptionsProp(this.options, 'retryDelay') || 0;
}
public createResponseCallback(): (channel: string, buffer: string) => void {
@@ -173,10 +170,8 @@ export class ClientRedis extends ClientProxy {
protected dispatchEvent(packet: ReadPacket): Promise<any> {
const pattern = this.normalizePattern(packet.pattern);
return new Promise((resolve, reject) =>
this.pubClient.publish(
pattern,
JSON.stringify(packet),
err => (err ? reject(err) : resolve()),
this.pubClient.publish(pattern, JSON.stringify(packet), err =>
err ? reject(err) : resolve(),
),
);
}

View File

@@ -4,11 +4,12 @@ import { randomStringGenerator } from '@nestjs/common/utils/random-string-genera
import { EventEmitter } from 'events';
import { fromEvent, merge, Observable } from 'rxjs';
import { first, map, share, switchMap } from 'rxjs/operators';
import { ClientOptions, ReadPacket, RmqOptions } from '../interfaces';
import { ReadPacket, RmqOptions } from '../interfaces';
import {
DISCONNECT_EVENT,
ERROR_EVENT,
RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT,
RQM_DEFAULT_NOACK,
RQM_DEFAULT_PREFETCH_COUNT,
RQM_DEFAULT_QUEUE,
RQM_DEFAULT_QUEUE_OPTIONS,
@@ -31,16 +32,13 @@ export class ClientRMQ extends ClientProxy {
protected queueOptions: any;
protected responseEmitter: EventEmitter;
constructor(protected readonly options: ClientOptions['options']) {
constructor(protected readonly options: RmqOptions['options']) {
super();
this.urls = this.getOptionsProp<RmqOptions>(this.options, 'urls') || [
RQM_DEFAULT_URL,
];
this.urls = this.getOptionsProp(this.options, 'urls') || [RQM_DEFAULT_URL];
this.queue =
this.getOptionsProp<RmqOptions>(this.options, 'queue') ||
RQM_DEFAULT_QUEUE;
this.getOptionsProp(this.options, 'queue') || RQM_DEFAULT_QUEUE;
this.queueOptions =
this.getOptionsProp<RmqOptions>(this.options, 'queueOptions') ||
this.getOptionsProp(this.options, 'queueOptions') ||
RQM_DEFAULT_QUEUE_OPTIONS;
loadPackage('amqplib', ClientRMQ.name, () => require('amqplib'));
@@ -55,12 +53,16 @@ export class ClientRMQ extends ClientProxy {
}
public consumeChannel() {
const noAck =
this.getOptionsProp(this.options, 'noAck') || RQM_DEFAULT_NOACK;
this.channel.addSetup((channel: any) =>
channel.consume(
REPLY_QUEUE,
(msg: any) =>
this.responseEmitter.emit(msg.properties.correlationId, msg),
{ noAck: true },
{
noAck,
},
),
);
}
@@ -92,7 +94,8 @@ export class ClientRMQ extends ClientProxy {
}
public createClient<T = any>(): T {
return rqmPackage.connect(this.urls) as T;
const socketOptions = this.getOptionsProp(this.options, 'socketOptions');
return rqmPackage.connect(this.urls, socketOptions) as T;
}
public mergeDisconnectEvent<T = any>(
@@ -109,10 +112,10 @@ export class ClientRMQ extends ClientProxy {
public async setupChannel(channel: any, resolve: Function) {
const prefetchCount =
this.getOptionsProp<RmqOptions>(this.options, 'prefetchCount') ||
this.getOptionsProp(this.options, 'prefetchCount') ||
RQM_DEFAULT_PREFETCH_COUNT;
const isGlobalPrefetchCount =
this.getOptionsProp<RmqOptions>(this.options, 'isGlobalPrefetchCount') ||
this.getOptionsProp(this.options, 'isGlobalPrefetchCount') ||
RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT;
await channel.assertQueue(this.queue, this.queueOptions);

View File

@@ -8,12 +8,9 @@ import {
TCP_DEFAULT_HOST,
TCP_DEFAULT_PORT,
} from '../constants';
import { PacketId, ReadPacket, WritePacket } from '../interfaces';
import {
ClientOptions,
TcpClientOptions,
} from '../interfaces/client-metadata.interface';
import { JsonSocket } from '../helpers/json-socket';
import { PacketId, ReadPacket, WritePacket } from '../interfaces';
import { TcpClientOptions } from '../interfaces/client-metadata.interface';
import { ClientProxy } from './client-proxy';
import { ECONNREFUSED } from './constants';
@@ -25,14 +22,10 @@ export class ClientTCP extends ClientProxy {
private isConnected = false;
private socket: JsonSocket;
constructor(options: ClientOptions['options']) {
constructor(options: TcpClientOptions['options']) {
super();
this.port =
this.getOptionsProp<TcpClientOptions>(options, 'port') ||
TCP_DEFAULT_PORT;
this.host =
this.getOptionsProp<TcpClientOptions>(options, 'host') ||
TCP_DEFAULT_HOST;
this.port = this.getOptionsProp(options, 'port') || TCP_DEFAULT_PORT;
this.host = this.getOptionsProp(options, 'host') || TCP_DEFAULT_HOST;
}
public connect(): Promise<any> {

View File

@@ -4,4 +4,5 @@ export * from './client-nats';
export * from './client-proxy';
export { ClientProxyFactory } from './client-proxy-factory';
export * from './client-redis';
export * from './client-rmq';
export * from './client-tcp';

View File

@@ -24,6 +24,7 @@ export const RQM_DEFAULT_QUEUE = 'default';
export const RQM_DEFAULT_PREFETCH_COUNT = 0;
export const RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT = false;
export const RQM_DEFAULT_QUEUE_OPTIONS = {};
export const RQM_DEFAULT_NOACK = true;
export const GRPC_DEFAULT_PROTO_LOADER = '@grpc/proto-loader';
export const NO_MESSAGE_HANDLER = `There is no matching message handler defined in the remote service.`;

View File

@@ -2,6 +2,12 @@ import { PATTERN_HANDLER_METADATA, PATTERN_METADATA } from '../constants';
import { PatternHandler } from '../enums/pattern-handler.enum';
import { PatternMetadata } from '../interfaces/pattern-metadata.interface';
export enum GrpcMethodStreamingType {
NO_STREAMING = 'no_stream',
RX_STREAMING = 'rx_stream',
PT_STREAMING = 'pt_stream',
}
/**
* Subscribes to incoming messages which fulfils chosen pattern.
*/
@@ -39,21 +45,82 @@ export function GrpcMethod(service: string, method?: string): MethodDecorator {
};
}
/**
* Registers gRPC call through RX handler for service and method
*
* @param service String parameter reflecting the name of service definition from proto file
*/
export function GrpcStreamMethod(service?: string);
/**
* @param service String parameter reflecting the name of service definition from proto file
* @param method Optional string parameter reflecting the name of method inside of a service definition coming after rpc keyword
*/
export function GrpcStreamMethod(service: string, method?: string);
export function GrpcStreamMethod(service: string, method?: string) {
return (
target: any,
key: string | symbol,
descriptor: PropertyDescriptor,
) => {
const metadata = createMethodMetadata(
target,
key,
service,
method,
GrpcMethodStreamingType.RX_STREAMING,
);
return MessagePattern(metadata)(target, key, descriptor);
};
}
/**
* Registers gRPC call pass through handler for service and method
*
* @param service String parameter reflecting the name of service definition from proto file
*/
export function GrpcStreamCall(service?: string);
/**
* @param service String parameter reflecting the name of service definition from proto file
* @param method Optional string parameter reflecting the name of method inside of a service definition coming after rpc keyword
*/
export function GrpcStreamCall(service: string, method?: string);
export function GrpcStreamCall(service: string, method?: string) {
return (
target: any,
key: string | symbol,
descriptor: PropertyDescriptor,
) => {
const metadata = createMethodMetadata(
target,
key,
service,
method,
GrpcMethodStreamingType.PT_STREAMING,
);
return MessagePattern(metadata)(target, key, descriptor);
};
}
export function createMethodMetadata(
target: any,
key: string | symbol,
service: string | undefined,
method: string | undefined,
streaming = GrpcMethodStreamingType.NO_STREAMING,
) {
const capitalizeFirstLetter = (str: string) =>
str.charAt(0).toUpperCase() + str.slice(1);
if (!service) {
const { name } = target.constructor;
return { service: name, rpc: capitalizeFirstLetter(key as string) };
return {
service: name,
rpc: capitalizeFirstLetter(key as string),
streaming,
};
}
if (service && !method) {
return { service, rpc: capitalizeFirstLetter(key as string) };
return { service, rpc: capitalizeFirstLetter(key as string), streaming };
}
return { service, rpc: method };
return { service, rpc: method, streaming };
}

View File

@@ -14,3 +14,4 @@ export * from './interfaces';
export * from './module';
export * from './nest-microservice';
export * from './server';
export * from './tokens';

View File

@@ -6,3 +6,4 @@ export * from './message-handler.interface';
export * from './microservice-configuration.interface';
export * from './packet.interface';
export * from './pattern-metadata.interface';
export * from './request-context.interface';

View File

@@ -74,6 +74,7 @@ export interface NatsOptions {
options?: {
url?: string;
name?: string;
user?: string;
pass?: string;
maxReconnectAttempts?: number;
reconnectTimeWait?: number;
@@ -93,5 +94,7 @@ export interface RmqOptions {
prefetchCount?: number;
isGlobalPrefetchCount?: boolean;
queueOptions?: any;
socketOptions?: any;
noAck?: boolean;
};
}

View File

@@ -0,0 +1,4 @@
export interface RequestContext<T = any> {
pattern: string | Record<string, any>;
data: T;
}

View File

@@ -2,12 +2,16 @@ import { Controller } from '@nestjs/common/interfaces/controllers/controller.int
import { createContextId } from '@nestjs/core/helpers/context-id-factory';
import { NestContainer } from '@nestjs/core/injector/container';
import { Injector } from '@nestjs/core/injector/injector';
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
import {
ContextId,
InstanceWrapper,
} from '@nestjs/core/injector/instance-wrapper';
import { MetadataScanner } from '@nestjs/core/metadata-scanner';
import { REQUEST } from '@nestjs/core/router/request/request-constants';
import { IClientProxyFactory } from './client/client-proxy-factory';
import { ClientsContainer } from './container';
import { RpcContextCreator } from './context/rpc-context-creator';
import { CustomTransportStrategy } from './interfaces';
import { CustomTransportStrategy, RequestContext } from './interfaces';
import { ListenerMetadataExplorer } from './listener-metadata-explorer';
import { Server } from './server/server';
@@ -48,8 +52,10 @@ export class ListenersController {
}
server.addHandler(
pattern,
async data => {
async (data: unknown) => {
const contextId = createContextId();
this.registerRequestProvider({ pattern, data }, contextId);
const contextInstance = await this.injector.loadPerContext(
instance,
module,
@@ -88,4 +94,17 @@ export class ListenersController {
) {
Reflect.set(instance, property, client);
}
private registerRequestProvider(
request: RequestContext,
contextId: ContextId,
) {
const coreModuleRef = this.container.getInternalCoreModuleRef();
const wrapper = coreModuleRef.getProviderByKey(REQUEST);
wrapper.setInstanceByContextId(contextId, {
instance: request,
isResolved: true,
});
}
}

View File

@@ -30,7 +30,6 @@ export class NestMicroservice extends NestApplicationContext
private microserviceConfig: MicroserviceOptions;
private server: Server & CustomTransportStrategy;
private isTerminated = false;
private isInitialized = false;
private isInitHookCalled = false;
constructor(

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/microservices",
"version": "6.0.5",
"version": "6.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@microservices)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -12,7 +12,7 @@
"access": "public"
},
"dependencies": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
},

View File

@@ -3,4 +3,5 @@ export * from './server-grpc';
export * from './server-mqtt';
export * from './server-nats';
export * from './server-redis';
export * from './server-rmq';
export * from './server-tcp';

View File

@@ -1,6 +1,6 @@
import { isObject, isUndefined } from '@nestjs/common/utils/shared.utils';
import { fromEvent } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { EMPTY, fromEvent, Subject } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators';
import {
CANCEL_EVENT,
GRPC_DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,
@@ -8,13 +8,11 @@ import {
GRPC_DEFAULT_PROTO_LOADER,
GRPC_DEFAULT_URL,
} from '../constants';
import { GrpcMethodStreamingType } from '../decorators';
import { InvalidGrpcPackageException } from '../errors/invalid-grpc-package.exception';
import { InvalidProtoDefinitionException } from '../errors/invalid-proto-definition.exception';
import { CustomTransportStrategy } from '../interfaces';
import {
GrpcOptions,
MicroserviceOptions,
} from '../interfaces/microservice-configuration.interface';
import { GrpcOptions } from '../interfaces/microservice-configuration.interface';
import { Server } from './server';
let grpcPackage: any = {};
@@ -25,19 +23,20 @@ interface GrpcCall<TRequest = any, TMetadata = any> {
metadata: TMetadata;
end: Function;
write: Function;
on: Function;
emit: Function;
}
export class ServerGrpc extends Server implements CustomTransportStrategy {
private readonly url: string;
private grpcClient: any;
constructor(private readonly options: MicroserviceOptions['options']) {
constructor(private readonly options: GrpcOptions['options']) {
super();
this.url =
this.getOptionsProp<GrpcOptions>(options, 'url') || GRPC_DEFAULT_URL;
this.url = this.getOptionsProp(options, 'url') || GRPC_DEFAULT_URL;
const protoLoader =
this.getOptionsProp<GrpcOptions>(options, 'protoLoader') ||
GRPC_DEFAULT_PROTO_LOADER;
this.getOptionsProp(options, 'protoLoader') || GRPC_DEFAULT_PROTO_LOADER;
grpcPackage = this.loadPackage('grpc', ServerGrpc.name, () =>
require('grpc'),
@@ -58,10 +57,7 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
public async bindEvents() {
const grpcContext = this.loadProto();
const packageName = this.getOptionsProp<GrpcOptions>(
this.options,
'package',
);
const packageName = this.getOptionsProp(this.options, 'package');
const grpcPkg = this.lookupPackage(grpcContext, packageName);
if (!grpcPkg) {
const invalidPackageError = new InvalidGrpcPackageException();
@@ -94,36 +90,110 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
return services;
}
/**
* Will create service mapping from gRPC generated Object to handlers
* defined with @GrpcMethod or @GrpcStreamMethod annotations
*
* @param grpcService
* @param name
*/
public async createService(grpcService: any, name: string) {
const service = {};
// tslint:disable-next-line:forin
for (const methodName in grpcService.prototype) {
const methodHandler = this.getHandlerByPattern(
this.createPattern(name, methodName),
);
let pattern = '';
let methodHandler = null;
let streamingType = GrpcMethodStreamingType.NO_STREAMING;
const methodFunction = grpcService.prototype[methodName];
const methodReqStreaming = methodFunction.requestStream;
if (!isUndefined(methodReqStreaming) && methodReqStreaming) {
// Try first pattern to be presented, RX streaming pattern would be
// a preferable pattern to select among a few defined
pattern = this.createPattern(
name,
methodName,
GrpcMethodStreamingType.RX_STREAMING,
);
methodHandler = this.messageHandlers.get(pattern);
streamingType = GrpcMethodStreamingType.RX_STREAMING;
// If first pattern didn't match to any of handlers then try
// pass-through handler to be presented
if (!methodHandler) {
pattern = this.createPattern(
name,
methodName,
GrpcMethodStreamingType.PT_STREAMING,
);
methodHandler = this.messageHandlers.get(pattern);
streamingType = GrpcMethodStreamingType.PT_STREAMING;
}
} else {
pattern = this.createPattern(
name,
methodName,
GrpcMethodStreamingType.NO_STREAMING,
);
// Select handler if any presented for No-Streaming pattern
methodHandler = this.messageHandlers.get(pattern);
streamingType = GrpcMethodStreamingType.NO_STREAMING;
}
if (!methodHandler) {
continue;
}
service[methodName] = await this.createServiceMethod(
methodHandler,
grpcService.prototype[methodName],
streamingType,
);
}
return service;
}
public createPattern(service: string, methodName: string): string {
/**
* Will create a string of a JSON serialized format
*
* @param service name of the service which should be a match to gRPC service definition name
* @param methodName name of the method which is coming after rpc keyword
* @param streaming GrpcMethodStreamingType parameter which should correspond to
* stream keyword in gRPC service request part
*/
public createPattern(
service: string,
methodName: string,
streaming: GrpcMethodStreamingType,
): string {
return JSON.stringify({
service,
rpc: methodName,
streaming,
});
}
/**
* Will return async function which will handle gRPC call
* with Rx streams or as a direct call passthrough
*
* @param methodHandler
* @param protoNativeHandler
*/
public createServiceMethod(
methodHandler: Function,
protoNativeHandler: any,
streamType: GrpcMethodStreamingType,
): Function {
// If proto handler has request stream as "true" then we expect it to have
// streaming from the side of requester
if (protoNativeHandler.requestStream) {
// If any handlers were defined with GrpcStreamMethod annotation use RX
if (streamType === GrpcMethodStreamingType.RX_STREAMING)
return this.createStreamDuplexMethod(methodHandler);
// If any handlers were defined with GrpcStreamCall annotation
else if (streamType === GrpcMethodStreamingType.PT_STREAMING)
return this.createStreamCallMethod(methodHandler);
}
return protoNativeHandler.responseStream
? this.createStreamServiceMethod(methodHandler)
: this.createUnaryServiceMethod(methodHandler);
@@ -144,12 +214,59 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
const handler = methodHandler(call.request, call.metadata);
const result$ = this.transformToObservable(await handler);
await result$
.pipe(takeUntil(fromEvent(call as any, CANCEL_EVENT)))
.pipe(
takeUntil(fromEvent(call as any, CANCEL_EVENT)),
catchError(err => {
call.emit('error', err);
return EMPTY;
}),
)
.forEach(data => call.write(data));
call.end();
};
}
public createStreamDuplexMethod(methodHandler: Function) {
return async (call: GrpcCall) => {
const req = new Subject<any>();
call.on('data', (m: any) => req.next(m));
call.on('error', (e: any) => {
// Check if error means that stream ended on other end
if (
String(e)
.toLowerCase()
.indexOf('cancelled') > -1
) {
call.end();
return;
}
// If another error then just pass it along
req.error(e);
});
call.on('end', () => req.complete());
const handler = methodHandler(req.asObservable());
const res = this.transformToObservable(await handler);
await res
.pipe(
takeUntil(fromEvent(call as any, CANCEL_EVENT)),
catchError(err => {
call.emit('error', err);
return EMPTY;
}),
)
.forEach(m => call.write(m));
call.end();
};
}
public createStreamCallMethod(methodHandler: Function) {
return async (call: GrpcCall) => {
methodHandler(call);
};
}
public close() {
this.grpcClient && this.grpcClient.forceShutdown();
this.grpcClient = null;
@@ -165,21 +282,18 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
public createClient(): any {
const server = new grpcPackage.Server({
'grpc.max_send_message_length': this.getOptionsProp<GrpcOptions>(
'grpc.max_send_message_length': this.getOptionsProp(
this.options,
'maxSendMessageLength',
GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH,
),
'grpc.max_receive_message_length': this.getOptionsProp<GrpcOptions>(
'grpc.max_receive_message_length': this.getOptionsProp(
this.options,
'maxReceiveMessageLength',
GRPC_DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,
),
});
const credentials = this.getOptionsProp<GrpcOptions>(
this.options,
'credentials',
);
const credentials = this.getOptionsProp(this.options, 'credentials');
server.bind(
this.url,
credentials || grpcPackage.ServerCredentials.createInsecure(),
@@ -198,8 +312,8 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
public loadProto(): any {
try {
const file = this.getOptionsProp<GrpcOptions>(this.options, 'protoPath');
const loader = this.getOptionsProp<GrpcOptions>(this.options, 'loader');
const file = this.getOptionsProp(this.options, 'protoPath');
const loader = this.getOptionsProp(this.options, 'loader');
const packageDefinition = grpcProtoLoaderPackage.loadSync(file, loader);
const packageObject = grpcPackage.loadPackageDefinition(

View File

@@ -21,10 +21,9 @@ export class ServerMqtt extends Server implements CustomTransportStrategy {
private readonly url: string;
private mqttClient: MqttClient;
constructor(private readonly options: MicroserviceOptions['options']) {
constructor(private readonly options: MqttOptions['options']) {
super();
this.url =
this.getOptionsProp<MqttOptions>(options, 'url') || MQTT_DEFAULT_URL;
this.url = this.getOptionsProp(options, 'url') || MQTT_DEFAULT_URL;
mqttPackage = this.loadPackage('mqtt', ServerMqtt.name, () =>
require('mqtt'),
@@ -59,10 +58,7 @@ export class ServerMqtt extends Server implements CustomTransportStrategy {
}
public createMqttClient(): MqttClient {
return mqttPackage.connect(
this.url,
this.options as MqttOptions,
);
return mqttPackage.connect(this.url, this.options as MqttOptions);
}
public getMessageHandler(pub: MqttClient): Function {

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