Compare commits

...

167 Commits

Author SHA1 Message Date
Kamil Myśliwiec
b85844c316 chore(@nestjs) publish v7.3.2 release 2020-07-08 14:49:38 +02:00
Kamil Myśliwiec
daeb99f858 Merge branch 'master' of https://github.com/nestjs/nest 2020-07-08 14:48:35 +02:00
Kamil Myśliwiec
3dca681a08 fix(core): instance links host should return the last instance 2020-07-08 14:48:24 +02:00
Kamil Myśliwiec
442e2f66a1 fix(testing): allow passing abstract http server 2020-07-08 14:48:07 +02:00
Kamil Myśliwiec
659c52f8bc fix(common): fix nan values for default value pipe 2020-07-08 14:47:50 +02:00
Kamil Mysliwiec
835e4ed94d Merge pull request #5038 from fuergaosi233/enhanceRMQGenerality
feat(microservices): ServerRMQ
2020-07-08 14:47:09 +02:00
Kamil Mysliwiec
d9cfdd0846 Merge pull request #5039 from nestjs/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v3.6.0
2020-07-08 14:18:07 +02:00
Kamil Mysliwiec
83251e3a45 Merge pull request #5042 from nestjs/renovate/chai-as-promised-7.x
chore(deps): update dependency @types/chai-as-promised to v7.1.3
2020-07-08 14:17:39 +02:00
Kamil Mysliwiec
eef373c93f Merge pull request #5041 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.9.22
2020-07-08 14:16:50 +02:00
Kamil Mysliwiec
83b3b6d9d5 Merge pull request #5043 from nestjs/renovate/express-4.x
chore(deps): update dependency @types/express to v4.17.7
2020-07-08 14:12:09 +02:00
Kamil Mysliwiec
0ac56fd62a Merge pull request #5029 from getspooky/my-branch-dev
feat(packages/common/exception): Export http-version-not-supported
2020-07-08 14:11:55 +02:00
Kamil Mysliwiec
8b97f94c38 Merge pull request #5053 from nestjs/renovate/nestjs-mongoose-7.x
fix(deps): update dependency @nestjs/mongoose to v7.0.2
2020-07-08 14:11:37 +02:00
Renovate Bot
b5a7a6cda4 fix(deps): update dependency @nestjs/mongoose to v7.0.2 2020-07-08 11:44:43 +00:00
Kamil Mysliwiec
2ce40138b9 Update Readme.md 2020-07-08 13:11:46 +02:00
Renovate Bot
53070f07f3 chore(deps): update dependency @types/express to v4.17.7 2020-07-07 00:55:52 +00:00
Renovate Bot
60c92fe5a8 chore(deps): update dependency @types/chai-as-promised to v7.1.3 2020-07-07 00:34:19 +00:00
Renovate Bot
c51984e440 fix(deps): update dependency mongoose to v5.9.22 2020-07-06 23:01:21 +00:00
Renovate Bot
05cc5b83f8 chore(deps): update typescript-eslint monorepo to v3.6.0 2020-07-06 18:58:34 +00:00
Holegots
28fcfe6647 feat(microservices): ServerRMQ 2020-07-07 01:39:09 +08:00
Kamil Mysliwiec
2fc29847f3 Merge pull request #5026 from nestjs/renovate/eslint-7.x
chore(deps): update dependency eslint to v7.4.0
2020-07-06 08:43:06 +02:00
Kamil Mysliwiec
1c846e46f9 Merge pull request #5033 from nestjs/renovate/graphql-15.x
fix(deps): update dependency graphql to v15.3.0
2020-07-06 08:42:57 +02:00
Kamil Mysliwiec
42fedbb81b Merge pull request #5032 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2.8.24
2020-07-06 08:42:31 +02:00
Kamil Mysliwiec
7f2c35174d Merge pull request #5034 from nestjs/renovate/ws-7.x
fix(deps): update dependency ws to v7.3.1
2020-07-06 08:42:09 +02:00
Renovate Bot
1931283e75 fix(deps): update dependency ws to v7.3.1 2020-07-06 02:05:17 +00:00
Renovate Bot
dcabde2fb5 fix(deps): update dependency graphql to v15.3.0 2020-07-06 02:02:41 +00:00
Renovate Bot
b4f3cdc73b chore(deps): update dependency @types/redis to v2.8.24 2020-07-06 00:55:17 +00:00
yasser
32ed43b390 feat(packages/common/exception): Export http-version-not-supported 2020-07-04 13:21:43 +02:00
Renovate Bot
9d781cde22 chore(deps): update dependency eslint to v7.4.0 2020-07-03 21:20:37 +00:00
Kamil Mysliwiec
aed62cc7bd Merge pull request #5010 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v7.3.1
2020-07-03 09:18:54 +02:00
Renovate Bot
a4252b4285 fix(deps): update nest monorepo to v7.3.1 2020-07-03 06:31:01 +00:00
Kamil Mysliwiec
171cc9d392 Merge pull request #5012 from nestjs/renovate/typescript-3.x
chore(deps): update dependency typescript to v3.9.6
2020-07-03 08:07:55 +02:00
Kamil Mysliwiec
64b7237c23 Merge pull request #5018 from nestjs/renovate/nestjs-graphql-7.x
fix(deps): update dependency @nestjs/graphql to v7.5.1
2020-07-03 08:07:48 +02:00
Kamil Mysliwiec
c97e495c11 Merge pull request #5020 from nestjs/renovate/graphql-tools-monorepo
fix(deps): update dependency graphql-tools to v6.0.12
2020-07-03 08:07:41 +02:00
Kamil Mysliwiec
1534cf5d0a Merge pull request #5022 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2.8.23
2020-07-03 08:06:20 +02:00
Renovate Bot
8436c27a65 fix(deps): update dependency @nestjs/graphql to v7.5.1 2020-07-02 19:41:50 +00:00
Renovate Bot
ab0b29b627 chore(deps): update dependency @types/redis to v2.8.23 2020-07-02 16:41:05 +00:00
Renovate Bot
6d034f5c1f fix(deps): update dependency graphql-tools to v6.0.12 2020-07-02 14:49:44 +00:00
Renovate Bot
1ddab1b2bb chore(deps): update dependency typescript to v3.9.6 2020-07-02 08:11:49 +00:00
Kamil Mysliwiec
364a963426 Merge pull request #5013 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.9.21
2020-07-02 09:06:33 +02:00
Kamil Mysliwiec
72ff7ae40e Merge pull request #5014 from nestjs/renovate/rxjs-compat-6.x
chore(deps): update dependency rxjs-compat to v6.6.0
2020-07-02 09:06:25 +02:00
Kamil Mysliwiec
184fffe043 Merge pull request #5015 from nestjs/renovate/rxjs-6.x
fix(deps): update dependency rxjs to v6.6.0
2020-07-02 09:06:19 +02:00
Kamil Myśliwiec
d92e85f297 chore(@nestjs) publish v7.3.1 release 2020-07-02 09:05:07 +02:00
Kamil Myśliwiec
acce5e953d fix(platform-fastify): catch close errors when server is closed already 2020-07-02 09:04:00 +02:00
Kamil Myśliwiec
dfd7846779 fix(common): use is nil in cache interceptor to prevent breaking changes 2020-07-02 09:03:41 +02:00
Renovate Bot
d895c367fe fix(deps): update dependency rxjs to v6.6.0 2020-07-02 02:43:33 +00:00
Renovate Bot
b9cf26708e chore(deps): update dependency rxjs-compat to v6.6.0 2020-07-02 02:16:36 +00:00
Renovate Bot
18979b3b46 fix(deps): update dependency mongoose to v5.9.21 2020-07-01 22:10:06 +00:00
Kamil Mysliwiec
877cc3e4d6 Merge pull request #4909 from Amorites/feat/client-registerAsync
feat(microservices): ClientsModule.registerAsync
2020-07-01 14:41:22 +02:00
Kamil Mysliwiec
feeed43c56 Merge pull request #4896 from nestjs/renovate/mocha-8.x
chore(deps): update dependency mocha to v8
2020-07-01 14:21:30 +02:00
Kamil Myśliwiec
a10bb787b8 chore(): update README files 2020-07-01 14:17:35 +02:00
Kamil Myśliwiec
ca7e348478 chore(@nestjs) publish v7.3.0 release 2020-07-01 14:14:39 +02:00
Kamil Myśliwiec
67e15afbf3 Merge branch 'master' of https://github.com/nestjs/nest 2020-07-01 14:05:42 +02:00
Kamil Myśliwiec
d59c7b87bd feat(core): add instance links, introspection and expose request provider 2020-07-01 14:05:32 +02:00
Kamil Mysliwiec
cf5e5bceca Merge pull request #5005 from nestjs/renovate/apollo-graphql-packages
fix(deps): update apollo graphql packages to v2.15.1
2020-07-01 12:11:24 +02:00
Renovate Bot
b5e8197500 fix(deps): update apollo graphql packages to v2.15.1 2020-07-01 09:36:55 +00:00
Kamil Mysliwiec
17969748e9 Merge pull request #5004 from nestjs/renovate/bull-3.x
fix(deps): update dependency bull to v3.15.0
2020-07-01 10:10:10 +02:00
Kamil Mysliwiec
8836251c88 Merge pull request #5006 from nestjs/renovate/babel-monorepo
chore(deps): update babel monorepo to v7.10.4
2020-07-01 10:09:59 +02:00
Kamil Mysliwiec
d74e173e59 Merge pull request #5007 from nestjs/renovate/fast-json-stringify-2.x
fix(deps): update dependency fast-json-stringify to v2.2.1
2020-07-01 10:09:50 +02:00
Kamil Mysliwiec
9511984f2c Merge pull request #5009 from nestjs/renovate/artillery-1.x
chore(deps): update dependency artillery to v1.6.1
2020-07-01 10:09:40 +02:00
Renovate Bot
eb7decd35c chore(deps): update dependency artillery to v1.6.1 2020-06-30 16:46:14 +00:00
Renovate Bot
cd6555edd3 fix(deps): update dependency fast-json-stringify to v2.2.1 2020-06-30 13:38:35 +00:00
Renovate Bot
5b15dbfbaa chore(deps): update babel monorepo to v7.10.4 2020-06-30 13:36:32 +00:00
Renovate Bot
8dcced7256 fix(deps): update dependency bull to v3.15.0 2020-06-30 11:22:18 +00:00
Kamil Mysliwiec
cf10752f40 Merge pull request #5000 from nestjs/renovate/supertest-2.x
chore(deps): update dependency @types/supertest to v2.0.10
2020-06-30 08:55:56 +02:00
Kamil Mysliwiec
1789753248 Merge pull request #5001 from nestjs/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v3.5.0
2020-06-30 08:55:44 +02:00
Kamil Mysliwiec
fb62ffe48c Merge pull request #5003 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.22.3
2020-06-30 08:55:36 +02:00
Renovate Bot
f38223ade4 fix(deps): update dependency sequelize to v5.22.3 2020-06-30 06:35:28 +00:00
Renovate Bot
f95b219a3c chore(deps): update typescript-eslint monorepo to v3.5.0 2020-06-29 21:12:27 +00:00
Renovate Bot
b4adc2c771 chore(deps): update dependency @types/supertest to v2.0.10 2020-06-29 20:00:39 +00:00
Kamil Mysliwiec
d56267fb99 Merge pull request #4992 from nestjs/renovate/nestjs-passport-7.x
fix(deps): update dependency @nestjs/passport to v7.1.0
2020-06-29 21:40:50 +02:00
Kamil Mysliwiec
2971ba6a3c Merge pull request #4994 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.15.1
2020-06-29 21:40:44 +02:00
Kamil Mysliwiec
f7e4885c2d Merge pull request #4995 from nestjs/renovate/graphql-15.x
fix(deps): update dependency graphql to v15.2.0
2020-06-29 21:40:32 +02:00
Kamil Mysliwiec
cce0bc6407 Merge pull request #4998 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.7.29
2020-06-29 21:40:25 +02:00
Kamil Mysliwiec
ed4becbe99 Merge pull request #4999 from nestjs/renovate/ws-7.x
chore(deps): update dependency @types/ws to v7.2.6
2020-06-29 21:40:10 +02:00
Renovate Bot
3cac1ca2b2 chore(deps): update dependency @types/ws to v7.2.6 2020-06-29 17:26:41 +00:00
Renovate Bot
9059c3d5ac chore(deps): update dependency @types/mongoose to v5.7.29 2020-06-29 17:18:49 +00:00
Renovate Bot
3433ab06f4 fix(deps): update dependency graphql to v15.2.0 2020-06-29 14:28:31 +00:00
Renovate Bot
55bd8ab1c7 fix(deps): update dependency fastify to v2.15.1 2020-06-29 14:24:19 +00:00
Kamil Mysliwiec
2e5eb4b8e9 Merge pull request #4993 from nestjs/renovate/nestjs-swagger-4.x
fix(deps): update dependency @nestjs/swagger to v4.5.12
2020-06-29 14:23:27 +02:00
Renovate Bot
59ad650c8f fix(deps): update dependency @nestjs/swagger to v4.5.12 2020-06-29 12:12:52 +00:00
Renovate Bot
764d26b28e fix(deps): update dependency @nestjs/passport to v7.1.0 2020-06-29 12:11:57 +00:00
Kamil Mysliwiec
2f29d7790b Merge pull request #4989 from nestjs/renovate/eslint-plugin-import-2.x
chore(deps): update dependency eslint-plugin-import to v2.22.0
2020-06-29 13:10:21 +02:00
Kamil Mysliwiec
6a53d1e131 Merge pull request #4951 from nestjs/renovate/jest-monorepo
chore(deps): update dependency jest to v26.1.0
2020-06-29 13:09:37 +02:00
Kamil Mysliwiec
d37f68d05e Merge pull request #4972 from rraziel/module-metadata-export
chore(common): export the ModuleMetadata type
2020-06-29 13:09:25 +02:00
Renovate Bot
72c16ccd9a chore(deps): update dependency eslint-plugin-import to v2.22.0 2020-06-29 00:59:57 +00:00
Kamil Mysliwiec
3f9be96815 Update Readme.md 2020-06-27 10:17:16 +02:00
Kamil Mysliwiec
7bcf90cb8c Merge pull request #4943 from nestjs/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v3.4.0
2020-06-27 09:50:45 +02:00
Kamil Mysliwiec
f4f85f254c Merge pull request #4978 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.22.2
2020-06-27 09:50:32 +02:00
Renovate Bot
fc625f2957 fix(deps): update dependency sequelize to v5.22.2 2020-06-27 05:21:02 +00:00
Renovate Bot
61b6c7df25 chore(deps): update dependency jest to v26.1.0 2020-06-26 16:53:05 +00:00
Kamil Mysliwiec
79caf671ea Merge pull request #4977 from nestjs/revert-4958-renovate/sequelize-6.x
Revert "fix(deps): update dependency sequelize to v6"
2020-06-26 17:22:15 +02:00
Kamil Mysliwiec
e24f23d030 Revert "fix(deps): update dependency sequelize to v6" 2020-06-26 17:22:02 +02:00
Renovate Bot
d184f906ff chore(deps): update typescript-eslint monorepo to v3.4.0 2020-06-26 13:06:26 +00:00
Kamil Mysliwiec
7efc27c186 Merge pull request #4960 from nestjs/renovate/nestjs-graphql-7.x
fix(deps): update dependency @nestjs/graphql to v7.4.6
2020-06-26 14:26:33 +02:00
Kamil Mysliwiec
27de22fdfb Merge pull request #4966 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.7.28
2020-06-26 14:26:25 +02:00
Renovate Bot
2342c65efc chore(deps): update dependency @types/mongoose to v5.7.28 2020-06-26 11:47:44 +00:00
Renovate Bot
7d03b2d78d fix(deps): update dependency @nestjs/graphql to v7.4.6 2020-06-26 11:42:03 +00:00
Kamil Mysliwiec
c0e6139419 Merge pull request #4973 from nestjs/renovate/graphql-tools-monorepo
fix(deps): update dependency graphql-tools to v6.0.11
2020-06-26 13:34:18 +02:00
Kamil Mysliwiec
f574663414 Merge pull request #4964 from nestjs/renovate/imports-loader-1.x
chore(deps): update dependency imports-loader to v1.1.0
2020-06-26 13:34:05 +02:00
Kamil Mysliwiec
7f3a9955be Merge pull request #4961 from nestjs/renovate/jest-26.x
chore(deps): update dependency @types/jest to v26.0.3
2020-06-26 13:33:55 +02:00
Kamil Mysliwiec
cc828d493a Merge pull request #4958 from nestjs/renovate/sequelize-6.x
fix(deps): update dependency sequelize to v6
2020-06-26 13:33:38 +02:00
Kamil Mysliwiec
dda9d52c4c Merge pull request #4925 from nestjs/renovate/nest-monorepo
chore(deps): update nest monorepo
2020-06-26 13:33:27 +02:00
Renovate Bot
1194fbae9f fix(deps): update dependency sequelize to v6 2020-06-26 08:39:46 +00:00
Renovate Bot
b3542806d8 fix(deps): update dependency graphql-tools to v6.0.11 2020-06-26 00:01:03 +00:00
Raziel
3991fb9525 chore(common): export the ModuleMetadata type 2020-06-26 01:19:23 +02:00
Renovate Bot
91cf3190b3 chore(deps): update dependency @types/jest to v26.0.3 2020-06-24 17:10:49 +00:00
Renovate Bot
1ddeaa2aad chore(deps): update dependency imports-loader to v1.1.0 2020-06-24 16:49:23 +00:00
Kamil Mysliwiec
2bdcdb5814 Merge pull request #4957 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.22.0
2020-06-24 12:26:49 +02:00
Kamil Mysliwiec
bb4ed69b0e Merge pull request #4959 from nestjs/renovate/jest-26.x
chore(deps): update dependency @types/jest to v26.0.1
2020-06-24 12:26:37 +02:00
Renovate Bot
b69f3be0aa chore(deps): update dependency @types/jest to v26.0.1 2020-06-24 09:45:10 +00:00
Renovate Bot
96136f72e7 fix(deps): update dependency sequelize to v5.22.0 2020-06-24 08:30:18 +00:00
Renovate Bot
724403067b chore(deps): update nest monorepo 2020-06-24 08:29:13 +00:00
Kamil Mysliwiec
12b807f149 Merge pull request #4950 from nestjs/renovate/nestjs-graphql-7.x
fix(deps): update dependency @nestjs/graphql to v7.4.2
2020-06-24 08:33:47 +02:00
Kamil Mysliwiec
07237a07c7 Merge pull request #4955 from nestjs/renovate/uuid-8.x
fix(deps): update dependency uuid to v8.2.0
2020-06-24 08:33:37 +02:00
Renovate Bot
0e7197c828 fix(deps): update dependency uuid to v8.2.0 2020-06-23 21:13:04 +00:00
Renovate Bot
7c64c77031 fix(deps): update dependency @nestjs/graphql to v7.4.2 2020-06-23 13:41:01 +00:00
Renovate Bot
6e2033ba7e chore(deps): update dependency mocha to v8 2020-06-23 13:09:26 +00:00
Kamil Mysliwiec
ba2bdea524 Merge pull request #4942 from nestjs/renovate/nestjs-serve-static-2.x
fix(deps): update dependency @nestjs/serve-static to v2.1.3
2020-06-23 13:23:25 +02:00
Kamil Mysliwiec
12b9940b65 Update config.yml 2020-06-23 12:59:41 +02:00
Kamil Mysliwiec
8a02e39001 Merge pull request #4926 from nestjs/renovate/ts-morph-7.x
chore(deps): update dependency ts-morph to v7.1.2
2020-06-23 12:58:26 +02:00
Kamil Mysliwiec
b82f6f6b5b Merge pull request #4947 from nestjs/renovate/fast-json-stringify-2.x
fix(deps): update dependency fast-json-stringify to v2.2.0
2020-06-23 12:58:12 +02:00
Kamil Mysliwiec
6a754515a1 Merge pull request #4893 from nestjs/renovate/jest-26.x
chore(deps): update dependency @types/jest to v26
2020-06-23 12:57:49 +02:00
Kamil Mysliwiec
517cad59e9 Merge pull request #4933 from nestjs/renovate/babel-monorepo
chore(deps): update babel monorepo to v7.10.3
2020-06-23 12:57:36 +02:00
Kamil Mysliwiec
2714f57fcf Merge pull request #4936 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.15.0
2020-06-23 12:57:30 +02:00
Kamil Mysliwiec
e91d1b1ced Merge pull request #4937 from nestjs/renovate/major-commitlint-monorepo
chore(deps): update commitlint monorepo to v9 (major)
2020-06-23 12:57:23 +02:00
Kamil Mysliwiec
6e49223e4c Merge pull request #4940 from nestjs/renovate/ts-jest-26.x
chore(deps): update dependency ts-jest to v26.1.1
2020-06-23 12:57:18 +02:00
Kamil Mysliwiec
0b33f8fe31 Merge pull request #4941 from nestjs/renovate/nestjs-swagger-4.x
fix(deps): update dependency @nestjs/swagger to v4.5.11
2020-06-23 12:57:08 +02:00
Kamil Mysliwiec
b315162269 Merge pull request #4946 from nestjs/renovate/eslint-7.x
chore(deps): update dependency eslint to v7.3.1
2020-06-23 12:56:53 +02:00
Kamil Mysliwiec
cd21b2ff93 Merge pull request #4948 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.9.20
2020-06-23 12:56:44 +02:00
Renovate Bot
4a1eed1e44 chore(deps): update dependency eslint to v7.3.1 2020-06-23 03:49:43 +00:00
Renovate Bot
09a3ad2950 fix(deps): update dependency mongoose to v5.9.20 2020-06-22 21:32:52 +00:00
Renovate Bot
5e9d5c57ed fix(deps): update dependency fast-json-stringify to v2.2.0 2020-06-22 19:52:58 +00:00
Renovate Bot
d7c69707f6 fix(deps): update dependency @nestjs/serve-static to v2.1.3 2020-06-22 15:19:22 +00:00
Renovate Bot
f6114abea9 fix(deps): update dependency @nestjs/swagger to v4.5.11 2020-06-22 15:13:19 +00:00
Renovate Bot
33d6c393e0 chore(deps): update dependency ts-jest to v26.1.1 2020-06-22 08:02:08 +00:00
Renovate Bot
97edbe0c2a chore(deps): update commitlint monorepo to v9 2020-06-22 00:39:35 +00:00
Renovate Bot
2e9fcb1a42 fix(deps): update dependency fastify to v2.15.0 2020-06-22 00:37:44 +00:00
Renovate Bot
2581903818 chore(deps): update babel monorepo to v7.10.3 2020-06-19 21:25:56 +00:00
Renovate Bot
ab4295ed02 chore(deps): update dependency ts-morph to v7.1.2 2020-06-18 22:05:21 +00:00
Kamil Mysliwiec
f05786d8c1 Merge pull request #4924 from nestjs/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.3.12
2020-06-18 16:17:50 +02:00
Kamil Mysliwiec
772e589327 Merge pull request #4923 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.7.27
2020-06-18 16:17:40 +02:00
Kamil Myśliwiec
82d0171bcf Merge branch 'elsangedy-patch-1' 2020-06-18 16:05:06 +02:00
Kamil Myśliwiec
706f55488c refactor(common): adjust to the code style 2020-06-18 16:04:53 +02:00
Kamil Myśliwiec
adce6c8ec0 Merge branch 'patch-1' of https://github.com/elsangedy/nest into elsangedy-patch-1 2020-06-18 16:04:26 +02:00
Renovate Bot
7d209e3d8f chore(deps): update dependency webpack-cli to v3.3.12 2020-06-18 14:03:39 +00:00
Renovate Bot
a718809f30 chore(deps): update dependency @types/mongoose to v5.7.27 2020-06-18 13:58:39 +00:00
Renovate Bot
25ba42cca2 chore(deps): update dependency @types/jest to v26 2020-06-18 13:51:52 +00:00
Kamil Myśliwiec
eb1828431d chore(@nestjs) publish v7.2.0 release 2020-06-18 15:50:29 +02:00
Kamil Myśliwiec
038beb0c54 fix(core): fix resolve() method (fallback to get() for static) 2020-06-18 15:34:03 +02:00
Kamil Myśliwiec
2a7bf6a357 fix(core): revert resolve method regression 2020-06-18 15:21:34 +02:00
amorites
d03830e998 feat(microservices): ClientsModule.registerAsync 2020-06-18 21:18:38 +08:00
Kamil Mysliwiec
dc35501e74 Merge pull request #4793 from nestjs/renovate/all-minor-patch
chore(deps): update all non-major dependencies
2020-06-18 15:11:38 +02:00
Kamil Myśliwiec
570dc303c9 fix(): fix update deps issues 2020-06-18 14:24:28 +02:00
Kamil Mysliwiec
300f0e39a5 Merge pull request #4897 from mattleff/graphql-lint-fixes
sample(graphql): Fix lint errors
2020-06-18 13:34:09 +02:00
Kamil Mysliwiec
c76e12eb17 Merge pull request #4907 from Larinel/patch-1
refactor(microservices): rmq connection errors are now being logged
2020-06-18 13:33:27 +02:00
Kamil Myśliwiec
5ca6a1e794 feat(microservices): add client opts to redis options 2020-06-18 12:50:36 +02:00
Kamil Myśliwiec
eb8f58a624 Merge branch 'master' of https://github.com/nestjs/nest 2020-06-18 12:50:17 +02:00
Kamil Myśliwiec
9e7c610ebe docs(): update readme file 2020-06-18 12:50:11 +02:00
Kamil Mysliwiec
f17d29bf99 Merge pull request #4920 from nestjs/renovate/imports-loader-1.x
chore(deps): update dependency imports-loader to v1
2020-06-18 12:31:26 +02:00
Renovate Bot
59c6cebb22 chore(deps): update all non-major dependencies 2020-06-18 10:12:03 +00:00
Renovate Bot
75e1e71e10 chore(deps): update dependency imports-loader to v1 2020-06-17 17:24:52 +00:00
Larinel
d4f93cd909 refactor(microservices): rmq connection errors are now being logged 2020-06-15 14:19:19 +03:00
Matthew Leffler
b5d553604d sample(graphql): Fix lint errors 2020-06-10 13:59:07 -06:00
Kamil Mysliwiec
41764370eb Merge pull request #4884 from nestjs/renovate/npm-apollo-server-express-vulnerability
fix(deps): update dependency apollo-server-express to v2.14.2 [security]
2020-06-08 16:04:41 +02:00
Renovate Bot
e14670ee16 fix(deps): update dependency apollo-server-express to v2.14.2 [security] 2020-06-05 21:33:18 +00:00
Munir Ahmed Elsangedy
1c4ab360e3 feat(core): make ClassSerializerInterceptor defaultOptions optional 2020-06-04 21:46:17 -03:00
Munir Ahmed Elsangedy
f8e788a929 feat(core): add support to default serializer options
Enable pass `ClassTransformOptions` when use `ClassSerializerInterceptor` as GlobalInterceptors.

```
const reflector = app.get<Reflector>(Reflector);

app.useGlobalInterceptors(
  new ClassSerializerInterceptor(reflector, {
    excludeExtraneousValues: true,
    enableImplicitConversion: true
  })
);
```
2020-05-16 21:42:04 -03:00
124 changed files with 49755 additions and 64417 deletions

View File

@@ -70,10 +70,10 @@ jobs:
docker:
- image: circleci/node:10
test_node_8:
test_node_14:
<<: *unit-tests-template
docker:
- image: circleci/node:8
- image: circleci/node:14
lint:
working_directory: ~/nest
@@ -160,15 +160,15 @@ workflows:
build-and-test:
jobs:
- build
- test_node_14:
requires:
- build
- test_node_12:
requires:
- build
- test_node_10:
requires:
- build
- test_node_8:
requires:
- build
- lint:
requires:
- build

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,7 +86,11 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td>
<td align="center" valign="middle">
<a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" width="97" valign="middle" /></a> </td></tr>
<tr><td align="center" valign="middle"><a href="https://sanyodigital.com/" target="_blank"><img src="https://nestjs.com/img/sanyo-digital.png" width="130" valign="middle" /></a></td>
</tr></table>
## Backers

View File

@@ -0,0 +1,34 @@
import { Scope } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { Test, TestingModule } from '@nestjs/testing';
import { expect } from 'chai';
import { ScopedModule, STATIC_FACTORY } from '../src/scoped/scoped.module';
import { ScopedService } from '../src/scoped/scoped.service';
import { TransientService } from '../src/scoped/transient.service';
describe('Providers introspection', () => {
let testingModule: TestingModule;
let moduleRef: ModuleRef;
beforeEach(async () => {
testingModule = await Test.createTestingModule({
imports: [ScopedModule],
}).compile();
moduleRef = testingModule.get(ModuleRef);
});
it('should properly introspect a transient provider', async () => {
const introspectionResult = moduleRef.introspect(TransientService);
expect(introspectionResult.scope).to.be.equal(Scope.TRANSIENT);
});
it('should properly introspect a singleton provider', async () => {
const introspectionResult = moduleRef.introspect(STATIC_FACTORY);
expect(introspectionResult.scope).to.be.equal(Scope.DEFAULT);
});
it('should properly introspect a request-scoped provider', async () => {
const introspectionResult = moduleRef.introspect(ScopedService);
expect(introspectionResult.scope).to.be.equal(Scope.REQUEST);
});
});

View File

@@ -54,13 +54,19 @@ describe('Scoped Instances', () => {
it('should dynamically resolve request-scoped provider', async () => {
const request1 = await testingModule.resolve(ScopedService);
const request2 = await testingModule.resolve(ScopedService);
const request3 = await testingModule.resolve(ScopedService, { id: 1 });
const ctxId = { id: 1 };
const requestProvider = { host: 'localhost' };
testingModule.registerRequestByContextId(requestProvider, ctxId);
const request3 = await testingModule.resolve(ScopedService, ctxId);
const requestFactory = await testingModule.resolve(REQUEST_SCOPED_FACTORY);
expect(request1).to.be.instanceOf(ScopedService);
expect(request2).to.be.instanceOf(ScopedService);
expect(request3).to.not.be.equal(request2);
expect(requestFactory).to.be.true;
expect(request3.request).to.be.equal(requestProvider);
});
it('should dynamically resolve request-scoped controller', async () => {

View File

@@ -1,4 +1,7 @@
import { Injectable, Scope } from '@nestjs/common';
import { Inject, Injectable, Scope } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
@Injectable({ scope: Scope.REQUEST })
export class ScopedService {}
export class ScopedService {
constructor(@Inject(REQUEST) public readonly request) {}
}

View File

@@ -50,6 +50,20 @@ describe('RPC transport', () => {
.expect(200, '15');
});
it(`/POST (useFactory client)`, () => {
return request(server)
.post('/useFactory?command=sum')
.send([1, 2, 3, 4, 5])
.expect(200, '15');
});
it(`/POST (useClass client)`, () => {
return request(server)
.post('/useClass?command=sum')
.send([1, 2, 3, 4, 5])
.expect(200, '15');
});
it(`/POST (concurrent)`, () => {
return request(server)
.post('/concurrent')

View File

@@ -1,4 +1,11 @@
import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import {
Body,
Controller,
HttpCode,
Inject,
Post,
Query,
} from '@nestjs/common';
import {
Client,
ClientProxy,
@@ -11,6 +18,10 @@ import { scan } from 'rxjs/operators';
@Controller()
export class AppController {
constructor(
@Inject('USE_CLASS_CLIENT') private useClassClient: ClientProxy,
@Inject('USE_FACTORY_CLIENT') private useFactoryClient: ClientProxy,
) {}
static IS_NOTIFIED = false;
@Client({ transport: Transport.TCP })
@@ -22,6 +33,24 @@ export class AppController {
return this.client.send<number>({ cmd }, data);
}
@Post('useFactory')
@HttpCode(200)
callWithClientUseFactory(
@Query('command') cmd,
@Body() data: number[],
): Observable<number> {
return this.useFactoryClient.send<number>({ cmd }, data);
}
@Post('useClass')
@HttpCode(200)
callWithClientUseClass(
@Query('command') cmd,
@Body() data: number[],
): Observable<number> {
return this.useClassClient.send<number>({ cmd }, data);
}
@Post('stream')
@HttpCode(200)
stream(@Body() data: number[]): Observable<number> {

View File

@@ -1,7 +1,59 @@
import { Module } from '@nestjs/common';
import { Module, Injectable } from '@nestjs/common';
import { AppController } from './app.controller';
import {
ClientsModule,
Transport,
ClientsModuleOptionsFactory,
ClientOptions,
} from '@nestjs/microservices';
@Injectable()
class ConfigService {
private readonly config = {
transport: Transport.TCP,
};
get(key: string) {
return this.config[key];
}
}
@Module({
providers: [ConfigService],
exports: [ConfigService],
})
class ConfigModule {}
@Injectable()
class ClientOptionService implements ClientsModuleOptionsFactory {
constructor(private readonly configService: ConfigService) {}
createClientOptions(): Promise<ClientOptions> | ClientOptions {
return {
transport: this.configService.get('transport'),
options: {},
};
}
}
@Module({
imports: [
ClientsModule.registerAsync([
{
imports: [ConfigModule],
name: 'USE_FACTORY_CLIENT',
useFactory: (configService: ConfigService) => ({
transport: configService.get('transport'),
options: {},
}),
inject: [ConfigService],
},
{
imports: [ConfigModule],
name: 'USE_CLASS_CLIENT',
useClass: ClientOptionService,
inject: [ConfigService],
},
]),
],
controllers: [AppController],
})
export class ApplicationModule {}

View File

@@ -3,5 +3,5 @@
"packages": [
"packages/*"
],
"version": "7.1.3"
"version": "7.3.2"
}

7420
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -58,48 +58,48 @@
"cli-color": "2.0.0",
"cors": "2.8.5",
"express": "4.17.1",
"fast-json-stringify": "2.0.0",
"fast-json-stringify": "2.2.1",
"fast-safe-stringify": "2.0.7",
"iterare": "1.2.0",
"iterare": "1.2.1",
"object-hash": "2.0.3",
"path-to-regexp": "3.2.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.5",
"rxjs": "6.6.0",
"socket.io": "2.3.0",
"uuid": "8.0.0",
"uuid": "8.2.0",
"tslib": "2.0.0"
},
"devDependencies": {
"@codechecks/client": "0.1.10",
"@commitlint/cli": "8.3.5",
"@commitlint/config-angular": "8.3.4",
"@commitlint/cli": "9.0.1",
"@commitlint/config-angular": "9.0.1",
"@grpc/proto-loader": "0.5.4",
"@nestjs/graphql": "7.3.7",
"@nestjs/mongoose": "7.0.0",
"@nestjs/typeorm": "7.0.0",
"@nestjs/graphql": "7.5.1",
"@nestjs/mongoose": "7.0.2",
"@nestjs/typeorm": "7.1.0",
"@types/amqplib": "0.5.13",
"@types/bytes": "3.1.0",
"@types/cache-manager": "2.10.2",
"@types/chai": "4.2.10",
"@types/chai-as-promised": "7.1.2",
"@types/cache-manager": "2.10.3",
"@types/chai": "4.2.11",
"@types/chai-as-promised": "7.1.3",
"@types/cors": "2.8.6",
"@types/express": "4.17.6",
"@types/express": "4.17.7",
"@types/fastify-cors": "2.1.0",
"@types/gulp": "4.0.6",
"@types/mocha": "7.0.2",
"@types/mongoose": "5.7.16",
"@types/mongoose": "5.7.30",
"@types/node": "10.17.3",
"@types/redis": "2.8.20",
"@types/redis": "2.8.24",
"@types/reflect-metadata": "0.0.5",
"@types/sinon": "9.0.0",
"@types/socket.io": "2.1.4",
"@types/ws": "7.2.4",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"@types/sinon": "9.0.4",
"@types/socket.io": "2.1.8",
"@types/ws": "7.2.6",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"amqp-connection-manager": "3.2.0",
"amqplib": "0.5.5",
"apollo-server-express": "2.13.1",
"artillery": "1.6.0",
"amqplib": "0.5.6",
"apollo-server-express": "2.15.1",
"artillery": "1.6.1",
"awesome-typescript-loader": "5.2.1",
"body-parser": "1.19.0",
"bytes": "3.1.0",
@@ -113,19 +113,19 @@
"core-js": "3.6.5",
"coveralls": "3.1.0",
"delete-empty": "3.0.0",
"engine.io-client": "3.4.1",
"eslint": "7.0.0",
"engine.io-client": "3.4.3",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"eslint-plugin-import": "2.22.0",
"fancy-log": "1.3.3",
"fastify": "2.14.1",
"fastify": "2.15.1",
"fastify-cors": "3.0.3",
"fastify-formbody": "3.2.0",
"fastify-multipart": "1.0.6",
"fastify-static": "2.7.0",
"graphql": "15.0.0",
"graphql-tools": "6.0.0",
"grpc": "1.24.2",
"graphql": "15.3.0",
"graphql-tools": "6.0.12",
"grpc": "1.24.3",
"gulp": "4.0.2",
"gulp-clang-format": "1.0.27",
"gulp-clean": "0.4.0",
@@ -133,35 +133,35 @@
"gulp-typescript": "5.0.1",
"gulp-watch": "5.0.1",
"husky": "4.2.5",
"imports-loader": "0.8.0",
"imports-loader": "1.1.0",
"json-loader": "0.5.7",
"kafkajs": "1.12.0",
"lerna": "2.11.0",
"lint-staged": "10.2.2",
"lint-staged": "10.2.11",
"markdown-table": "2.0.0",
"merge-graphql-schemas": "1.7.8",
"mocha": "7.1.2",
"mongoose": "5.9.13",
"mqtt": "4.0.1",
"mocha": "8.0.1",
"mongoose": "5.9.22",
"mqtt": "4.1.0",
"multer": "1.4.2",
"mysql": "2.18.1",
"nats": "1.4.9",
"nodemon": "2.0.3",
"nyc": "15.0.1",
"nodemon": "2.0.4",
"nyc": "15.1.0",
"prettier": "2.0.5",
"redis": "3.0.2",
"rxjs-compat": "6.5.5",
"rxjs-compat": "6.6.0",
"sinon": "9.0.2",
"sinon-chai": "3.5.0",
"socket.io-client": "2.3.0",
"subscriptions-transport-ws": "0.9.16",
"supertest": "4.0.2",
"ts-morph": "7.0.3",
"ts-node": "8.10.1",
"typeorm": "0.2.24",
"typescript": "3.7.2",
"ts-morph": "7.1.2",
"ts-node": "8.10.2",
"typeorm": "0.2.25",
"typescript": "3.9.6",
"wrk": "1.2.0",
"ws": "7.3.0"
"ws": "7.3.1"
},
"engines": {
"node": ">= 10.13.0"
@@ -192,7 +192,7 @@
"packages/microservices/microservices-module.ts",
"packages/core/middleware/middleware-module.ts",
"packages/core/injector/module-ref.ts",
"packages/core/injector/container-scanner.ts",
"packages/core/injector/instance-links-host.ts",
"packages/common/cache/**/*",
"packages/common/serializer/**/*",
"packages/common/services/logger.service.ts"

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -45,7 +45,7 @@ export class CacheInterceptor implements NestInterceptor {
}
try {
const value = await this.cacheManager.get(key);
if (value) {
if (!isNil(value)) {
return of(value);
}

View File

@@ -13,6 +13,7 @@ export * from './unsupported-media-type.exception';
export * from './unprocessable-entity.exception';
export * from './internal-server-error.exception';
export * from './not-implemented.exception';
export * from './http-version-not-supported.exception';
export * from './bad-gateway.exception';
export * from './service-unavailable.exception';
export * from './gateway-timeout.exception';

View File

@@ -30,12 +30,14 @@ export {
INestApplication,
INestApplicationContext,
INestMicroservice,
IntrospectionResult,
MiddlewareConsumer,
ModuleMetadata,
NestApplicationOptions,
NestHybridApplicationOptions,
NestInterceptor,
NestMiddleware,
NestModule,
NestHybridApplicationOptions,
OnApplicationBootstrap,
OnApplicationShutdown,
OnModuleDestroy,

View File

@@ -15,12 +15,9 @@ export * from './features/pipe-transform.interface';
export * from './hooks';
export * from './http/http-server.interface';
export * from './injectable.interface';
export * from './microservices/nest-hybrid-application-options.interface';
export * from './middleware';
export * from './modules/dynamic-module.interface';
export * from './modules/forward-reference.interface';
export * from './modules/module-metadata.interface';
export * from './modules/nest-module.interface';
export * from './modules/provider.interface';
export * from './modules';
export * from './nest-application-context.interface';
export * from './nest-application-options.interface';
export * from './nest-application.interface';
@@ -28,4 +25,3 @@ export * from './nest-microservice.interface';
export * from './scope-options.interface';
export * from './type.interface';
export * from './websockets/web-socket-adapter.interface';
export * from './microservices/nest-hybrid-application-options.interface';

View File

@@ -1,5 +1,6 @@
export * from './dynamic-module.interface';
export * from './forward-reference.interface';
export * from './introspection-result.interface';
export * from './module-metadata.interface';
export * from './nest-module.interface';
export * from './provider.interface';

View File

@@ -0,0 +1,11 @@
import { Scope } from '../scope-options.interface';
/**
* @publicApi
*/
export interface IntrospectionResult {
/**
* Enum defining lifetime of host class or factory.
*/
scope: Scope;
}

View File

@@ -34,6 +34,15 @@ export interface INestApplicationContext {
options?: { strict: boolean },
): Promise<TResult>;
/**
* Registers the request/context object for a given context ID (DI container sub-tree).
* @returns {void}
*/
registerRequestByContextId<T = any>(
request: T,
contextId: { id: number },
): void;
/**
* Terminates the application
* @returns {Promise<void>}

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/common",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@common)",
"author": "Kamil Mysliwiec",
"homepage": "https://nestjs.com",
@@ -19,9 +19,9 @@
"dependencies": {
"axios": "0.19.2",
"cli-color": "2.0.0",
"iterare": "1.2.0",
"iterare": "1.2.1",
"tslib": "2.0.0",
"uuid": "8.0.0"
"uuid": "8.2.0"
},
"peerDependencies": {
"reflect-metadata": "^0.1.12",

View File

@@ -14,7 +14,10 @@ export class DefaultValuePipe<T = any, R = any>
constructor(private readonly defaultValue: R) {}
transform(value?: T, _metadata?: ArgumentMetadata): T | R {
if (isNil(value)) {
if (
isNil(value) ||
(typeof value === 'number' && isNaN((value as unknown) as number))
) {
return this.defaultValue;
}
return value;

View File

@@ -1,10 +1,10 @@
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { Inject, Injectable } from '../decorators/core';
import { Inject, Injectable, Optional } from '../decorators/core';
import { CallHandler, ExecutionContext, NestInterceptor } from '../interfaces';
import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface';
import { loadPackage } from '../utils/load-package.util';
import { isObject } from '../utils/shared.utils';
import { CallHandler, ExecutionContext, NestInterceptor } from '../interfaces';
import { CLASS_SERIALIZER_OPTIONS } from './class-serializer.constants';
let classTransformer: any = {};
@@ -20,7 +20,10 @@ const REFLECTOR = 'Reflector';
@Injectable()
export class ClassSerializerInterceptor implements NestInterceptor {
constructor(@Inject(REFLECTOR) protected readonly reflector: any) {
constructor(
@Inject(REFLECTOR) protected readonly reflector: any,
@Optional() protected readonly defaultOptions: ClassTransformOptions = {},
) {
classTransformer = loadPackage(
'class-transformer',
'ClassSerializerInterceptor',
@@ -30,7 +33,11 @@ export class ClassSerializerInterceptor implements NestInterceptor {
}
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const options = this.getContextOptions(context);
const contextOptions = this.getContextOptions(context);
const options = {
...this.defaultOptions,
...contextOptions,
};
return next
.handle()
.pipe(

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,7 +1,8 @@
import { RuntimeException } from './runtime.exception';
export class UnknownElementException extends RuntimeException {
constructor(name?: string) {
constructor(name?: string | symbol) {
name = name && name.toString();
super(
`Nest could not find ${
name || 'given'

View File

@@ -1,12 +1,12 @@
import { BeforeApplicationShutdown } from '@nestjs/common';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import {
getNonTransientInstances,
getTransientInstances,
} from '../injector/transient-instances';
} from '../injector/helpers/transient-instances';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
/**
* Checks if the given instance has the `beforeApplicationShutdown` function

View File

@@ -1,12 +1,12 @@
import { OnApplicationBootstrap } from '@nestjs/common';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import {
getNonTransientInstances,
getTransientInstances,
} from '../injector/transient-instances';
} from '../injector/helpers/transient-instances';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
/**
* Checks if the given instance has the `onApplicationBootstrap` function

View File

@@ -1,12 +1,12 @@
import { OnApplicationShutdown } from '@nestjs/common';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import {
getNonTransientInstances,
getTransientInstances,
} from '../injector/transient-instances';
} from '../injector/helpers/transient-instances';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
/**
* Checks if the given instance has the `onApplicationShutdown` function

View File

@@ -1,12 +1,12 @@
import { OnModuleDestroy } from '@nestjs/common';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import {
getNonTransientInstances,
getTransientInstances,
} from '../injector/transient-instances';
} from '../injector/helpers/transient-instances';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
/**
* Returns true or false if the given instance has a `onModuleDestroy` function

View File

@@ -1,12 +1,12 @@
import { OnModuleInit } from '@nestjs/common';
import { isNil } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import {
getNonTransientInstances,
getTransientInstances,
} from '../injector/transient-instances';
} from '../injector/helpers/transient-instances';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
/**
* Returns true or false if the given instance has a `onModuleInit` function

View File

@@ -1,118 +0,0 @@
import { Type } from '@nestjs/common';
import { Abstract, Scope } from '@nestjs/common/interfaces';
import { isFunction } from '@nestjs/common/utils/shared.utils';
import { InvalidClassScopeException } from '../errors/exceptions/invalid-class-scope.exception';
import { UnknownElementException } from '../errors/exceptions/unknown-element.exception';
import { NestContainer } from './container';
import { InstanceWrapper } from './instance-wrapper';
import { Module } from './module';
type HostCollection = 'providers' | 'controllers' | 'injectables';
export class ContainerScanner {
private flatContainer: Partial<Module>;
constructor(private readonly container: NestContainer) {}
public find<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
): TResult {
this.initFlatContainer();
return this.findInstanceByToken<TInput, TResult>(
typeOrToken,
this.flatContainer,
);
}
public getWrapperCollectionPair<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
): [InstanceWrapper<TResult>, Map<string, InstanceWrapper>] {
this.initFlatContainer();
return this.getWrapperCollectionPairByHost<TInput, TResult>(
typeOrToken,
this.flatContainer,
);
}
public findInstanceByToken<TInput = any, TResult = TInput>(
metatypeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
contextModule: Partial<Module>,
): TResult {
const [instanceWrapper] = this.getWrapperCollectionPairByHost(
metatypeOrToken,
contextModule,
);
if (
instanceWrapper.scope === Scope.REQUEST ||
instanceWrapper.scope === Scope.TRANSIENT
) {
throw new InvalidClassScopeException(metatypeOrToken);
}
return (instanceWrapper.instance as unknown) as TResult;
}
public getWrapperCollectionPairByHost<TInput = any, TResult = TInput>(
metatypeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
contextModule: Partial<Module>,
): [InstanceWrapper<TResult>, Map<string, InstanceWrapper>] {
const name = isFunction(metatypeOrToken)
? (metatypeOrToken as Function).name
: metatypeOrToken;
const collectionName = this.getHostCollection(
name as string,
contextModule,
);
const instanceWrapper = contextModule[collectionName].get(name as string);
if (!instanceWrapper) {
throw new UnknownElementException(name && name.toString());
}
return [
instanceWrapper as InstanceWrapper<TResult>,
contextModule[collectionName],
];
}
private initFlatContainer() {
if (this.flatContainer) {
return;
}
const modules = this.container.getModules();
const initialValue: Record<string, any[]> = {
providers: [],
controllers: [],
injectables: [],
};
const merge = <T = unknown>(
initial: Map<string, T> | T[],
arr: Map<string, T>,
) => [...initial, ...arr];
const partialModule = ([...modules.values()].reduce(
(current, next) => ({
providers: merge(current.providers, next.providers),
controllers: merge(current.controllers, next.controllers),
injectables: merge(current.injectables, next.injectables),
}),
initialValue,
) as any) as Partial<Module>;
this.flatContainer = {
providers: new Map(partialModule.providers),
controllers: new Map(partialModule.controllers),
injectables: new Map(partialModule.injectables),
};
}
private getHostCollection(
token: string,
{ providers, controllers }: Partial<Module>,
): HostCollection {
if (providers.has(token)) {
return 'providers';
}
if (controllers.has(token)) {
return 'controllers';
}
return 'injectables';
}
}

View File

@@ -1,6 +1,5 @@
import { iterate } from 'iterare';
import { InstanceWrapper } from './instance-wrapper';
import { InstanceWrapper } from '../instance-wrapper';
/**
* Returns the instances which are transient

View File

@@ -0,0 +1,79 @@
import { Abstract, Type } from '@nestjs/common';
import { isFunction } from '@nestjs/common/utils/shared.utils';
import { UnknownElementException } from '../errors/exceptions/unknown-element.exception';
import { NestContainer } from './container';
import { InstanceWrapper } from './instance-wrapper';
import { Module } from './module';
type InstanceToken = string | symbol | Type<any> | Abstract<any> | Function;
type HostCollection = 'providers' | 'controllers' | 'injectables';
export interface InstanceLink<T = any> {
token: InstanceToken;
wrapperRef: InstanceWrapper<T>;
collection: Map<any, InstanceWrapper>;
moduleId: string;
}
export class InstanceLinksHost {
private readonly instanceLinks = new Map<InstanceToken, InstanceLink[]>();
constructor(private readonly container: NestContainer) {
this.initialize();
}
get<T = any>(token: InstanceToken, moduleId?: string): InstanceLink<T> {
const name = isFunction(token)
? (token as Function).name
: (token as string | symbol);
const modulesMap = this.instanceLinks.get(name);
if (!modulesMap) {
throw new UnknownElementException(name);
}
const instanceLink = moduleId
? modulesMap.find(item => item.moduleId === moduleId)
: modulesMap[modulesMap.length - 1];
if (!instanceLink) {
throw new UnknownElementException(name);
}
return instanceLink;
}
private initialize() {
const modules = this.container.getModules();
modules.forEach(moduleRef => {
const { providers, injectables, controllers } = moduleRef;
providers.forEach((wrapper, token) =>
this.addLink(wrapper, token, moduleRef, 'providers'),
);
injectables.forEach((wrapper, token) =>
this.addLink(wrapper, token, moduleRef, 'injectables'),
);
controllers.forEach((wrapper, token) =>
this.addLink(wrapper, token, moduleRef, 'controllers'),
);
});
}
private addLink(
wrapper: InstanceWrapper,
token: InstanceToken,
moduleRef: Module,
collectionName: HostCollection,
) {
const instanceLink: InstanceLink = {
moduleId: moduleRef.id,
wrapperRef: wrapper,
collection: moduleRef[collectionName],
token,
};
const existingLinks = this.instanceLinks.get(token);
if (!existingLinks) {
this.instanceLinks.set(token, [instanceLink]);
} else {
existingLinks.push(instanceLink);
}
}
}

View File

@@ -1,21 +1,26 @@
import { Type } from '@nestjs/common';
import { IntrospectionResult, Scope, Type } from '@nestjs/common';
import { InvalidClassScopeException } from '../errors/exceptions/invalid-class-scope.exception';
import { UnknownElementException } from '../errors/exceptions/unknown-element.exception';
import { getClassScope } from '../helpers/get-class-scope';
import { NestContainer } from './container';
import { ContainerScanner } from './container-scanner';
import { Injector } from './injector';
import { InstanceLinksHost } from './instance-links-host';
import { ContextId, InstanceWrapper } from './instance-wrapper';
import { Module } from './module';
export abstract class ModuleRef {
private readonly injector = new Injector();
private readonly containerScanner: ContainerScanner;
private _instanceLinksHost: InstanceLinksHost;
constructor(protected readonly container: NestContainer) {
this.containerScanner = new ContainerScanner(container);
private get instanceLinksHost() {
if (!this._instanceLinksHost) {
this._instanceLinksHost = new InstanceLinksHost(this.container);
}
return this._instanceLinksHost;
}
constructor(protected readonly container: NestContainer) {}
public abstract get<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | string | symbol,
options?: { strict: boolean },
@@ -27,10 +32,70 @@ export abstract class ModuleRef {
): Promise<TResult>;
public abstract create<T = any>(type: Type<T>): Promise<T>;
public introspect<T = any>(
token: Type<T> | string | symbol,
): IntrospectionResult {
const { wrapperRef } = this.instanceLinksHost.get(token);
let scope = Scope.DEFAULT;
if (!wrapperRef.isDependencyTreeStatic()) {
scope = Scope.REQUEST;
} else if (wrapperRef.isTransient) {
scope = Scope.TRANSIENT;
}
return { scope };
}
public registerRequestByContextId<T = any>(request: T, contextId: ContextId) {
this.container.registerRequestProvider(request, contextId);
}
protected find<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | string | symbol,
contextModule?: Module,
): TResult {
return this.containerScanner.find<TInput, TResult>(typeOrToken);
const moduleId = contextModule && contextModule.id;
const { wrapperRef } = this.instanceLinksHost.get<TResult>(
typeOrToken,
moduleId,
);
if (
wrapperRef.scope === Scope.REQUEST ||
wrapperRef.scope === Scope.TRANSIENT
) {
throw new InvalidClassScopeException(typeOrToken);
}
return wrapperRef.instance;
}
protected async resolvePerContext<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | string | symbol,
contextModule: Module,
contextId: ContextId,
options?: { strict: boolean },
): Promise<TResult> {
const isStrictModeEnabled = options && options.strict;
const instanceLink = isStrictModeEnabled
? this.instanceLinksHost.get(typeOrToken, contextModule.id)
: this.instanceLinksHost.get(typeOrToken);
const { wrapperRef, collection } = instanceLink;
if (wrapperRef.isDependencyTreeStatic() && !wrapperRef.isTransient) {
return this.get(typeOrToken);
}
const ctorHost = wrapperRef.instance || { constructor: typeOrToken };
const instance = await this.injector.loadPerContext(
ctorHost,
wrapperRef.host,
collection,
contextId,
wrapperRef,
);
if (!instance) {
throw new UnknownElementException();
}
return instance;
}
protected async instantiateClass<T = any>(
@@ -66,54 +131,4 @@ export abstract class ModuleRef {
}
});
}
protected findInstanceByToken<TInput = any, TResult = TInput>(
metatypeOrToken: Type<TInput> | string | symbol,
contextModule: Module,
): TResult {
return this.containerScanner.findInstanceByToken<TInput, TResult>(
metatypeOrToken,
contextModule,
);
}
protected async resolvePerContext<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | string | symbol,
contextModule: Module,
contextId: ContextId,
options?: { strict: boolean },
): Promise<TResult> {
let wrapper: InstanceWrapper, collection: Map<string, InstanceWrapper>;
const isStrictModeEnabled = options && options.strict;
if (!isStrictModeEnabled) {
[wrapper, collection] = this.containerScanner.getWrapperCollectionPair(
typeOrToken,
);
} else {
[
wrapper,
collection,
] = this.containerScanner.getWrapperCollectionPairByHost(
typeOrToken,
contextModule,
);
}
if (wrapper.isDependencyTreeStatic() && !wrapper.isTransient) {
throw new InvalidClassScopeException(typeOrToken);
}
const ctorHost = wrapper.instance || { constructor: typeOrToken };
const instance = await this.injector.loadPerContext(
ctorHost,
wrapper.host,
collection,
contextId,
wrapper,
);
if (!instance) {
throw new UnknownElementException();
}
return instance;
}
}

View File

@@ -479,7 +479,7 @@ export class Module {
return [...this._providers].filter(([_, wrapper]) => !wrapper.isAlias);
}
public createModuleReferenceType(): any {
public createModuleReferenceType(): Type<ModuleRef> {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const self = this;
return class extends ModuleRef {
@@ -491,10 +491,9 @@ export class Module {
typeOrToken: Type<TInput> | string | symbol,
options: { strict: boolean } = { strict: true },
): TResult {
if (!(options && options.strict)) {
return this.find<TInput, TResult>(typeOrToken);
}
return this.findInstanceByToken<TInput, TResult>(typeOrToken, self);
return !(options && options.strict)
? this.find<TInput, TResult>(typeOrToken)
: this.find<TInput, TResult>(typeOrToken, self);
}
public resolve<TInput = any, TResult = TInput>(

View File

@@ -4,7 +4,7 @@ import {
LoggerService,
ShutdownSignal,
} from '@nestjs/common';
import { Abstract } from '@nestjs/common/interfaces';
import { Abstract, Scope } from '@nestjs/common/interfaces';
import { Type } from '@nestjs/common/interfaces/type.interface';
import { isEmpty } from '@nestjs/common/utils/shared.utils';
import { iterate } from 'iterare';
@@ -22,9 +22,8 @@ import {
} from './hooks';
import { ContextId } from './injector';
import { NestContainer } from './injector/container';
import { ContainerScanner } from './injector/container-scanner';
import { Injector } from './injector/injector';
import { InstanceWrapper } from './injector/instance-wrapper';
import { InstanceLinksHost } from './injector/instance-links-host';
import { Module } from './injector/module';
/**
@@ -35,15 +34,20 @@ export class NestApplicationContext implements INestApplicationContext {
protected readonly injector = new Injector();
private shutdownCleanupRef?: (...args: unknown[]) => unknown;
private readonly activeShutdownSignals = new Array<string>();
private readonly containerScanner: ContainerScanner;
private _instanceLinksHost: InstanceLinksHost;
private get instanceLinksHost() {
if (!this._instanceLinksHost) {
this._instanceLinksHost = new InstanceLinksHost(this.container);
}
return this._instanceLinksHost;
}
constructor(
protected readonly container: NestContainer,
private readonly scope = new Array<Type<any>>(),
private contextModule: Module = null,
) {
this.containerScanner = new ContainerScanner(container);
}
) {}
public selectContextModule() {
const modules = this.container.getModules().values();
@@ -68,13 +72,9 @@ export class NestApplicationContext implements INestApplicationContext {
typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
options: { strict: boolean } = { strict: false },
): TResult {
if (!(options && options.strict)) {
return this.find<TInput, TResult>(typeOrToken);
}
return this.findInstanceByToken<TInput, TResult>(
typeOrToken,
this.contextModule,
);
return !(options && options.strict)
? this.find<TInput, TResult>(typeOrToken)
: this.find<TInput, TResult>(typeOrToken, this.contextModule);
}
public resolve<TInput = any, TResult = TInput>(
@@ -90,6 +90,10 @@ export class NestApplicationContext implements INestApplicationContext {
);
}
public registerRequestByContextId<T = any>(request: T, contextId: ContextId) {
this.container.registerRequestProvider(request, contextId);
}
/**
* Initalizes the Nest application.
* Calls the Nest lifecycle events.
@@ -112,7 +116,7 @@ export class NestApplicationContext implements INestApplicationContext {
await this.callBeforeShutdownHook();
await this.dispose();
await this.callShutdownHook();
await this.unsubscribeFromProcessSignals();
this.unsubscribeFromProcessSignals();
}
public useLogger(logger: LoggerService) {
@@ -256,18 +260,20 @@ export class NestApplicationContext implements INestApplicationContext {
protected find<TInput = any, TResult = TInput>(
typeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
contextModule?: Module,
): TResult {
return this.containerScanner.find<TInput, TResult>(typeOrToken);
}
protected findInstanceByToken<TInput = any, TResult = TInput>(
metatypeOrToken: Type<TInput> | Abstract<TInput> | string | symbol,
contextModule: Partial<Module>,
): TResult {
return this.containerScanner.findInstanceByToken<TInput, TResult>(
metatypeOrToken,
contextModule,
const moduleId = contextModule && contextModule.id;
const { wrapperRef } = this.instanceLinksHost.get<TResult>(
typeOrToken,
moduleId,
);
if (
wrapperRef.scope === Scope.REQUEST ||
wrapperRef.scope === Scope.TRANSIENT
) {
throw new InvalidClassScopeException(typeOrToken);
}
return wrapperRef.instance;
}
protected async resolvePerContext<TInput = any, TResult = TInput>(
@@ -276,30 +282,20 @@ export class NestApplicationContext implements INestApplicationContext {
contextId: ContextId,
options?: { strict: boolean },
): Promise<TResult> {
let wrapper: InstanceWrapper, collection: Map<string, InstanceWrapper>;
const isStrictModeEnabled = options && options.strict;
if (!isStrictModeEnabled) {
[wrapper, collection] = this.containerScanner.getWrapperCollectionPair(
typeOrToken,
);
} else {
[
wrapper,
collection,
] = this.containerScanner.getWrapperCollectionPairByHost(
typeOrToken,
contextModule,
);
}
if (wrapper.isDependencyTreeStatic() && !wrapper.isTransient) {
throw new InvalidClassScopeException(typeOrToken);
const instanceLink = isStrictModeEnabled
? this.instanceLinksHost.get(typeOrToken, contextModule.id)
: this.instanceLinksHost.get(typeOrToken);
const { wrapperRef, collection } = instanceLink;
if (wrapperRef.isDependencyTreeStatic() && !wrapperRef.isTransient) {
return this.get(typeOrToken);
}
const ctorHost = wrapper.instance || { constructor: typeOrToken };
const ctorHost = wrapperRef.instance || { constructor: typeOrToken };
const instance = await this.injector.loadPerContext(
ctorHost,
wrapper.host,
wrapperRef.host,
collection,
contextId,
);

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/core",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@core)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -29,14 +29,14 @@
"dependencies": {
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.7",
"iterare": "1.2.0",
"iterare": "1.2.1",
"object-hash": "2.0.3",
"path-to-regexp": "3.2.0",
"tslib": "2.0.0",
"uuid": "8.0.0"
"uuid": "8.2.0"
},
"devDependencies": {
"@nestjs/common": "7.1.3"
"@nestjs/common": "7.3.2"
},
"peerDependencies": {
"@nestjs/common": "^7.0.0",

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -93,11 +93,18 @@ export class ClientKafka extends ClientProxy {
return this.producer;
}
this.client = this.createClient();
const partitionAssigners = [
(
config: ConstructorParameters<
typeof KafkaRoundRobinPartitionAssigner
>[0],
) => new KafkaRoundRobinPartitionAssigner(config),
] as any[];
const consumerOptions = Object.assign(
{
partitionAssigners: [
(config: any) => new KafkaRoundRobinPartitionAssigner(config),
],
partitionAssigners,
},
this.options.consumer || {},
{

View File

@@ -95,7 +95,9 @@ export class ClientRedis extends ClientProxy {
public getClientOptions(error$: Subject<Error>): Partial<ClientOpts> {
const retry_strategy = (options: RetryStrategyOptions) =>
this.createRetryStrategy(options, error$);
return {
...(this.options || {}),
retry_strategy,
};
}

View File

@@ -31,6 +31,7 @@ export class ClientRMQ extends ClientProxy {
protected queue: string;
protected queueOptions: any;
protected responseEmitter: EventEmitter;
protected replyQueue: string;
constructor(protected readonly options: RmqOptions['options']) {
super();
@@ -40,7 +41,8 @@ export class ClientRMQ extends ClientProxy {
this.queueOptions =
this.getOptionsProp(this.options, 'queueOptions') ||
RQM_DEFAULT_QUEUE_OPTIONS;
this.replyQueue =
this.getOptionsProp(this.options, 'replyQueue') || REPLY_QUEUE;
loadPackage('amqplib', ClientRMQ.name, () => require('amqplib'));
rqmPackage = loadPackage('amqp-connection-manager', ClientRMQ.name, () =>
require('amqp-connection-manager'),
@@ -61,7 +63,7 @@ export class ClientRMQ extends ClientProxy {
const noAck = this.getOptionsProp(this.options, 'noAck', RQM_DEFAULT_NOACK);
this.channel.addSetup((channel: any) =>
channel.consume(
REPLY_QUEUE,
this.replyQueue,
(msg: any) =>
this.responseEmitter.emit(msg.properties.correlationId, msg),
{
@@ -183,7 +185,7 @@ export class ClientRMQ extends ClientProxy {
this.queue,
Buffer.from(JSON.stringify(serializedPacket)),
{
replyTo: REPLY_QUEUE,
replyTo: this.replyQueue,
correlationId,
},
);

View File

@@ -7,6 +7,7 @@ import {
ProducerConfig,
} from '../external/kafka-options.interface';
import { MqttClientOptions } from '../external/mqtt-options.interface';
import { ClientOpts } from '../external/redis.interface';
import { Server } from '../server/server';
import { CustomTransportStrategy } from './custom-transport-strategy.interface';
import { Deserializer } from './deserializer.interface';
@@ -84,7 +85,7 @@ export interface RedisOptions {
retryDelay?: number;
serializer?: Serializer;
deserializer?: Deserializer;
};
} & ClientOpts;
}
export interface MqttOptions {
@@ -127,6 +128,7 @@ export interface RmqOptions {
noAck?: boolean;
serializer?: Serializer;
deserializer?: Deserializer;
replyQueue?: string;
};
}

View File

@@ -1,6 +1,11 @@
import { DynamicModule, Module } from '@nestjs/common';
import { DynamicModule, Module, Provider } from '@nestjs/common';
import { ClientProxyFactory } from '../client';
import { ClientsModuleOptions } from './interfaces/clients-module.interface';
import {
ClientsModuleAsyncOptions,
ClientsModuleOptions,
ClientsModuleOptionsFactory,
ClientsProviderAsyncOptions,
} from './interfaces';
@Module({})
export class ClientsModule {
@@ -15,4 +20,71 @@ export class ClientsModule {
exports: clients,
};
}
static registerAsync(options: ClientsModuleAsyncOptions): DynamicModule {
const providers: Provider[] = options.reduce(
(accProviders: Provider[], item) =>
accProviders
.concat(this.createAsyncProviders(item))
.concat(item.extraProviders || []),
[],
);
const imports = options.reduce(
(accImports, option) =>
option.imports && !accImports.includes(option.imports)
? accImports.concat(option.imports)
: accImports,
[],
);
return {
module: ClientsModule,
imports,
providers: providers,
exports: providers,
};
}
private static createAsyncProviders(
options: ClientsProviderAsyncOptions,
): Provider[] {
if (options.useExisting || options.useFactory) {
return [this.createAsyncOptionsProvider(options)];
}
return [
this.createAsyncOptionsProvider(options),
{
provide: options.useClass,
useClass: options.useClass,
},
];
}
private static createAsyncOptionsProvider(
options: ClientsProviderAsyncOptions,
): Provider {
if (options.useFactory) {
return {
provide: options.name,
useFactory: this.createFactoryWrapper(options.useFactory),
inject: options.inject || [],
};
}
return {
provide: options.name,
useFactory: this.createFactoryWrapper(
(optionsFactory: ClientsModuleOptionsFactory) =>
optionsFactory.createClientOptions(),
),
inject: [options.useExisting || options.useClass],
};
}
private static createFactoryWrapper(
useFactory: ClientsProviderAsyncOptions['useFactory'],
) {
return async (...args: any[]) => {
const clientOptions = await useFactory(...args);
return ClientProxyFactory.create(clientOptions);
};
}
}

View File

@@ -1 +1,2 @@
export * from './clients.module';
export * from './interfaces';

View File

@@ -1,7 +1,24 @@
import { ClientOptions } from '../../interfaces';
import { Type, Provider, ModuleMetadata } from '@nestjs/common/interfaces';
export type ClientProviderOptions = ClientOptions & {
name: string;
};
export type ClientsModuleOptions = Array<ClientProviderOptions>;
export interface ClientsModuleOptionsFactory {
createClientOptions(): Promise<ClientOptions> | ClientOptions;
}
export interface ClientsProviderAsyncOptions
extends Pick<ModuleMetadata, 'imports'> {
useExisting?: Type<ClientsModuleOptionsFactory>;
useClass?: Type<ClientsModuleOptionsFactory>;
useFactory?: (...args: any[]) => Promise<ClientOptions> | ClientOptions;
inject?: any[];
extraProviders?: Provider[];
name: string;
}
export type ClientsModuleAsyncOptions = Array<ClientsProviderAsyncOptions>;

View File

@@ -0,0 +1 @@
export * from './clients-module.interface';

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/microservices",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@microservices)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -17,13 +17,13 @@
"access": "public"
},
"dependencies": {
"iterare": "1.2.0",
"iterare": "1.2.1",
"json-socket": "0.3.0",
"tslib": "2.0.0"
},
"devDependencies": {
"@nestjs/common": "7.1.3",
"@nestjs/core": "7.1.3"
"@nestjs/common": "7.3.2",
"@nestjs/core": "7.3.2"
},
"peerDependencies": {
"@nestjs/common": "^7.0.0",

View File

@@ -117,7 +117,7 @@ export class ServerKafka extends Server implements CustomTransportStrategy {
await consumer.run(consumerRunOptions);
}
public getMessageHandler(): Function {
public getMessageHandler() {
return async (payload: EachMessagePayload) => this.handleMessage(payload);
}

View File

@@ -152,7 +152,9 @@ export class ServerRedis extends Server implements CustomTransportStrategy {
public getClientOptions(): Partial<ClientOpts> {
const retry_strategy = (options: RetryStrategyOptions) =>
this.createRetryStrategy(options);
return {
...(this.options || {}),
retry_strategy,
};
}

View File

@@ -80,8 +80,9 @@ export class ServerRMQ extends Server implements CustomTransportStrategy {
setup: (channel: any) => this.setupChannel(channel, callback),
});
});
this.server.on(DISCONNECT_EVENT, () => {
this.server.on(DISCONNECT_EVENT, (err: any) => {
this.logger.error(DISCONNECTED_RMQ_MESSAGE);
this.logger.error(err);
});
}

View File

@@ -10,6 +10,7 @@ import {
Subscription,
} from 'rxjs';
import { catchError, finalize, publish } from 'rxjs/operators';
import { NO_EVENT_HANDLER } from '../constants';
import { BaseRpcContext } from '../ctx-host/base-rpc.context';
import { IncomingRequestDeserializer } from '../deserializers/incoming-request.deserializer';
import {
@@ -30,7 +31,6 @@ import { ConsumerDeserializer } from '../interfaces/deserializer.interface';
import { ConsumerSerializer } from '../interfaces/serializer.interface';
import { IdentitySerializer } from '../serializers/identity.serializer';
import { transformPatternToRoute } from '../utils';
import { NO_EVENT_HANDLER } from '../constants';
export abstract class Server {
protected readonly messageHandlers = new Map<string, MessageHandler>();
@@ -43,7 +43,7 @@ export abstract class Server {
callback: MessageHandler,
isEventHandler = false,
) {
const route = transformPatternToRoute(pattern);
const route = this.normalizePattern(pattern);
callback.isEventHandler = isEventHandler;
this.messageHandlers.set(route, callback);
}
@@ -176,6 +176,10 @@ export abstract class Server {
// Uses a fundamental object (`pattern` variable without any conversion)
validPattern = pattern;
}
return transformPatternToRoute(validPattern);
return this.normalizePattern(validPattern);
}
protected normalizePattern(pattern: MsPattern): string {
return transformPatternToRoute(pattern);
}
}

View File

@@ -3,7 +3,6 @@ import { Observable } from 'rxjs';
import * as sinon from 'sinon';
import { ClientProxy } from '../../client/client-proxy';
import { ReadPacket } from '../../interfaces';
import * as Utils from '../../utils';
class TestClientProxy extends ClientProxy {
protected async dispatchEvent<T = any>(
@@ -174,23 +173,4 @@ describe('ClientProxy', function () {
expect(err$).to.be.instanceOf(Observable);
});
});
describe('normalizePattern', () => {
describe(`when gets 'string' pattern`, () => {
it(`should call 'transformPatternToRoute' with 'string' argument`, () => {
const inputPattern = 'hello';
const msvcUtilTransformPatternToRouteStub = sinon.spy(
Utils,
'transformPatternToRoute',
);
(client as any).normalizePattern(inputPattern);
expect(msvcUtilTransformPatternToRouteStub.args[0][0]).to.be.equal(
inputPattern,
);
msvcUtilTransformPatternToRouteStub.restore();
});
});
});
});

View File

@@ -1,27 +1,118 @@
import { DynamicModule } from '@nestjs/common';
import { DynamicModule, FactoryProvider, Injectable } from '@nestjs/common';
import { expect } from 'chai';
import * as sinon from 'sinon';
import { ClientProxyFactory } from '../../client';
import { ClientsModule } from '../../module';
import { ClientsModule, ClientsModuleOptionsFactory } from '../../module';
import { ClientOptions } from '../../interfaces';
import { Transport } from '../../enums';
describe('ClientsModule', () => {
let dynamicModule: DynamicModule;
beforeEach(() => {
dynamicModule = ClientsModule.register([
{
name: 'test',
options: {},
},
]);
describe('register', () => {
beforeEach(() => {
dynamicModule = ClientsModule.register([
{
name: 'test',
options: {},
},
]);
});
it('should return an expected module ref', () => {
expect(dynamicModule.module).to.be.eql(ClientsModule);
});
it('should return an expected providers array', () => {
expect(dynamicModule.providers).to.be.deep.eq([
{
provide: 'test',
useValue: ClientProxyFactory.create({}),
},
]);
});
});
it('should return an expected module ref', () => {
expect(dynamicModule.module).to.be.eql(ClientsModule);
});
it('should return an expected providers array', () => {
expect(dynamicModule.providers).to.be.deep.eq([
{
provide: 'test',
useValue: ClientProxyFactory.create({}),
},
]);
describe('registerAsync', () => {
const useFactory = () => ({
options: {},
});
const registerOption = {
name: 'test',
useFactory,
};
it('should return an expected module ref', () => {
dynamicModule = ClientsModule.registerAsync([registerOption]);
expect(dynamicModule.module).to.be.eql(ClientsModule);
});
describe('when useFactory', () => {
it('should return an expected providers array with useFactory', () => {
dynamicModule = ClientsModule.registerAsync([registerOption]);
expect(dynamicModule.imports).to.be.deep.eq([]);
expect(dynamicModule.exports).to.be.eq(dynamicModule.providers);
expect(dynamicModule.providers).to.be.have.length(1);
const provider = dynamicModule.providers[0] as FactoryProvider;
expect(provider.provide).to.be.eql('test');
expect(provider.inject).to.be.deep.eq([]);
expect(provider.useFactory).to.be.an.instanceOf(Function);
});
});
describe('when useClass', () => {
it('should return an expected providers array with useClass', () => {
@Injectable()
class ClientOptionService implements ClientsModuleOptionsFactory {
createClientOptions(): Promise<ClientOptions> | ClientOptions {
return {
transport: Transport.TCP,
options: {},
};
}
}
const useClassOption = {
name: 'classTest',
useClass: ClientOptionService,
};
dynamicModule = ClientsModule.registerAsync([useClassOption]);
expect(dynamicModule.imports).to.be.deep.eq([]);
expect(dynamicModule.providers).to.be.have.length(2);
const classTestProvider = dynamicModule.providers[0] as FactoryProvider;
expect(classTestProvider.provide).to.be.eql('classTest');
expect(classTestProvider.inject).to.be.deep.eq([ClientOptionService]);
expect(classTestProvider.useFactory).to.be.an.instanceOf(Function);
});
it('provider should call "createClientOptions"', async () => {
const asyncOptions = {
useClass: Object,
};
const dynamicModule = ClientsModule.registerAsync([
asyncOptions as any,
]);
const optionsFactory = {
createClientOptions: sinon.spy(),
};
try {
await ((dynamicModule.providers[0] as any).useFactory as any)(
optionsFactory,
);
} catch (e) {
console.log(e);
}
expect(optionsFactory.createClientOptions.called).to.be.true;
});
});
describe('when useExisting', () => {
it('should provide an options', () => {
const asyncOptions = {
useExisting: Object,
};
dynamicModule = ClientsModule.registerAsync([asyncOptions as any]);
expect(dynamicModule.providers).to.have.length(1);
expect(dynamicModule.imports).to.be.deep.eq([]);
const classTestProvider = dynamicModule.providers[0] as FactoryProvider;
expect(classTestProvider.useFactory).to.be.an.instanceOf(Function);
});
});
});
});

View File

@@ -2,7 +2,6 @@ import { expect } from 'chai';
import { Observable, of, throwError as _throw } from 'rxjs';
import * as sinon from 'sinon';
import { Server } from '../../server/server';
import * as Utils from '../../utils';
class TestServer extends Server {
public listen(callback: () => void) {}
@@ -28,8 +27,8 @@ describe('Server', () => {
(server as any).messageHandlers,
'set',
);
const msvcUtilTransformPatternToRouteStub = sinon
.stub(Utils, 'transformPatternToRoute')
const normalizePatternStub = sinon
.stub(server as any, 'normalizePattern')
.returns(handlerRoute);
server.addHandler(pattern, callback as any);
@@ -38,22 +37,19 @@ describe('Server', () => {
expect(messageHandlersSetSpy.args[0][0]).to.be.equal(handlerRoute);
expect(messageHandlersSetSpy.args[0][1]).to.be.equal(callback);
msvcUtilTransformPatternToRouteStub.restore();
normalizePatternStub.restore();
});
});
describe('getRouteFromPattern', () => {
let msvcUtilTransformPatternToRouteStub: sinon.SinonSpy;
let normalizePatternStub: sinon.SinonStub;
beforeEach(() => {
msvcUtilTransformPatternToRouteStub = sinon.spy(
Utils,
'transformPatternToRoute',
);
normalizePatternStub = sinon.stub(server as any, 'normalizePattern');
});
afterEach(() => {
msvcUtilTransformPatternToRouteStub.restore();
normalizePatternStub.restore();
});
describe(`when gets 'string' pattern`, () => {
@@ -62,7 +58,7 @@ describe('Server', () => {
const transformedServerPattern = inputServerPattern;
(server as any).getRouteFromPattern(inputServerPattern);
expect(msvcUtilTransformPatternToRouteStub.args[0][0]).to.be.equal(
expect(normalizePatternStub.args[0][0]).to.be.equal(
transformedServerPattern,
);
});
@@ -77,7 +73,7 @@ describe('Server', () => {
};
(server as any).getRouteFromPattern(inputServerPattern);
expect(msvcUtilTransformPatternToRouteStub.args[0][0]).to.be.deep.equal(
expect(normalizePatternStub.args[0][0]).to.be.deep.equal(
transformedServerPattern,
);
});

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/platform-express",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@platform-express)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -24,8 +24,8 @@
"tslib": "2.0.0"
},
"devDependencies": {
"@nestjs/common": "7.1.3",
"@nestjs/core": "7.1.3"
"@nestjs/common": "7.3.2",
"@nestjs/core": "7.3.2"
},
"peerDependencies": {
"@nestjs/common": "^7.0.0",

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -101,8 +101,16 @@ export class FastifyAdapter<TInstance = any> extends AbstractHttpAdapter {
return this.instance.inject(...args);
}
public close() {
return this.instance.close();
public async close() {
try {
return await this.instance.close();
} catch (err) {
// Check if server is still running
if (err.code !== 'ERR_SERVER_NOT_RUNNING') {
throw err;
}
return;
}
}
public initHttpServer(options: NestApplicationOptions) {

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/platform-fastify",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@platform-fastify)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -17,7 +17,7 @@
"access": "public"
},
"dependencies": {
"fastify": "2.14.1",
"fastify": "2.15.1",
"fastify-cors": "3.0.3",
"fastify-formbody": "3.2.0",
"path-to-regexp": "3.2.0",

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/platform-socket.io",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@platform-socket.io)",
"author": "Kamil Mysliwiec",
"license": "MIT",

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/platform-ws",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@platform-ws)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -18,7 +18,7 @@
},
"dependencies": {
"tslib": "2.0.0",
"ws": "7.3.0"
"ws": "7.3.1"
},
"peerDependencies": {
"@nestjs/common": "^7.0.0",

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/testing",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@testing)",
"author": "Kamil Mysliwiec",
"license": "MIT",

View File

@@ -3,13 +3,17 @@ import {
INestApplication,
INestMicroservice,
Logger,
NestApplicationOptions,
Type,
} from '@nestjs/common';
import { NestMicroserviceOptions } from '@nestjs/common/interfaces/microservices/nest-microservice-options.interface';
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface';
import { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface';
import { Type } from '@nestjs/common/interfaces/type.interface';
import { loadPackage } from '@nestjs/common/utils/load-package.util';
import { NestApplication, NestApplicationContext } from '@nestjs/core';
import {
AbstractHttpAdapter,
NestApplication,
NestApplicationContext,
} from '@nestjs/core';
import { ApplicationConfig } from '@nestjs/core/application-config';
import { NestContainer } from '@nestjs/core/injector/container';
import { Module } from '@nestjs/core/injector/module';
@@ -25,7 +29,7 @@ export class TestingModule extends NestApplicationContext {
}
public createNestApplication<T extends INestApplication = INestApplication>(
httpAdapter?: HttpServer,
httpAdapter?: HttpServer | AbstractHttpAdapter,
options?: NestApplicationOptions,
): T {
httpAdapter = httpAdapter || this.createHttpAdapter();
@@ -58,7 +62,7 @@ export class TestingModule extends NestApplicationContext {
);
}
private createHttpAdapter<T = any>(httpServer?: T): HttpServer {
private createHttpAdapter<T = any>(httpServer?: T): AbstractHttpAdapter {
const { ExpressAdapter } = loadPackage(
'@nestjs/platform-express',
'NestFactory',

View File

@@ -54,9 +54,11 @@ With official support, you can get expert help straight from Nest core team. We
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
#### Principal Sponsor
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="220" /></a>
#### Principal Sponsors
<table style="text-align:center;"><tr><td>
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td><td>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="180" valign="middle" /></a></td>
</tr></table>
#### Silver Sponsors
@@ -84,8 +86,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://www.codeguesser.co.uk" target="_blank"><img src="https://nestjs.com/img/codeguesser-logo.svg" width="120" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://tekhattan.com" target="_blank"><img src="https://nestjs.com/img/tekhattan-logo.png" width="110" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://f-a.nz/" target="_blank"><img src="https://nestjs.com/img/franz.svg" width="80" valign="middle" /></a> </td><td align="center" valign="middle">
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td></tr></table>
<a href="https://sparkfabrik.com/" target="_blank"><img src="https://nestjs.com/img/sparkfabrik-logo.png" width="120" valign="middle" /></a></td><td align="center" valign="middle"><a href="https://www.thebigphonestore.co.uk/" target="_blank"><img src="https://nestjs.com/img/the-big-phone-store-logo.png" width="65" valign="middle" /></a></td></tr></table>
## Backers

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/websockets",
"version": "7.1.3",
"version": "7.3.2",
"description": "Nest - modern, fast, powerful node.js web framework (@websockets)",
"author": "Kamil Mysliwiec",
"license": "MIT",
@@ -12,12 +12,12 @@
"access": "public"
},
"dependencies": {
"iterare": "1.2.0",
"iterare": "1.2.1",
"tslib": "2.0.0"
},
"devDependencies": {
"@nestjs/common": "7.1.3",
"@nestjs/core": "7.1.3"
"@nestjs/common": "7.3.2",
"@nestjs/core": "7.3.2"
},
"peerDependencies": {
"@nestjs/common": "^7.0.0",

View File

@@ -5,13 +5,6 @@
{
"depTypeList": ["devDependencies"],
"automerge": true
},
{
"packagePatterns": ["*"],
"minor": {
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch"
}
}
],
"schedule": ["every weekday"]

File diff suppressed because it is too large Load Diff

View File

@@ -19,36 +19,36 @@
"test:e2e": "jest --config ./e2e/jest-e2e.json"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@types/jest": "25.2.1",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/jest": "26.0.3",
"@types/node": "10.17.3",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
},
"jest": {
"moduleFileExtensions": [

File diff suppressed because it is too large Load Diff

View File

@@ -19,40 +19,40 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/platform-socket.io": "7.0.11",
"@nestjs/websockets": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/platform-socket.io": "7.3.1",
"@nestjs/websockets": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5",
"socket.io-redis": "5.2.0"
"rxjs": "6.6.0",
"socket.io-redis": "5.3.0"
},
"devDependencies": {
"@types/socket.io": "2.1.3",
"@types/socket.io-redis": "1.0.25",
"@types/ws": "7.2.4",
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@types/socket.io": "2.1.8",
"@types/socket.io-redis": "1.0.26",
"@types/ws": "7.2.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "7.10.9",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,36 +19,36 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/microservices": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/microservices": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/amqplib": "0.5.13",
"@types/express": "4.17.6",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -20,36 +20,36 @@
},
"dependencies": {
"@grpc/proto-loader": "0.5.4",
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/microservices": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/microservices": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"grpc": "1.24.2",
"grpc": "1.24.3",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "10.17.3",
"@types/supertest": "2.0.9",
"@types/ws": "7.2.4",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"@types/ws": "7.2.6",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,36 +19,36 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/typeorm": "7.0.0",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/typeorm": "7.1.0",
"mysql": "2.18.1",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5",
"typeorm": "0.2.24"
"rxjs": "6.6.0",
"typeorm": "0.2.25"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "7.10.9",
"@types/supertest": "2.0.9",
"@types/ws": "7.2.4",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"@types/ws": "7.2.6",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,36 +19,36 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/mongoose": "7.0.1",
"@nestjs/platform-express": "7.0.11",
"mongoose": "5.9.13",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/mongoose": "7.0.2",
"@nestjs/platform-express": "7.3.1",
"mongoose": "5.9.22",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@types/mongoose": "5.7.16",
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@types/mongoose": "5.7.30",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"@types/ws": "7.2.4",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"@types/ws": "7.2.6",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,39 +19,39 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/sequelize": "0.1.0",
"mysql2": "2.1.0",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5",
"sequelize": "5.21.8",
"rxjs": "6.6.0",
"sequelize": "5.22.3",
"sequelize-typescript": "1.1.0",
"typescript": "3.7.2"
"typescript": "3.9.6"
},
"devDependencies": {
"@types/sequelize": "4.28.8",
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@types/sequelize": "4.28.9",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"@types/ws": "7.2.4",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"@types/ws": "7.2.6",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -11,25 +11,25 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.5",
"typescript": "3.7.2"
"rxjs": "6.6.0",
"typescript": "3.9.6"
},
"devDependencies": {
"@types/node": "12.12.31",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"eslint-plugin-import": "2.22.0",
"start-server-webpack-plugin": "2.2.5",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"webpack": "4.43.0",
"webpack-cli": "3.3.11",
"webpack-cli": "3.3.12",
"webpack-node-externals": "1.7.2"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -13,26 +13,26 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/microservices": "7.0.11",
"@nestjs/websockets": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/microservices": "7.3.1",
"@nestjs/websockets": "7.3.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@babel/cli": "7.8.4",
"@babel/core": "7.9.6",
"@babel/node": "7.8.7",
"@babel/plugin-proposal-decorators": "7.8.3",
"@babel/plugin-transform-runtime": "7.9.6",
"@babel/preset-env": "7.9.6",
"@babel/register": "7.9.0",
"@babel/runtime": "7.9.6",
"@nestjs/testing": "7.0.11",
"jest": "26.0.1",
"nodemon": "2.0.3",
"@babel/cli": "7.10.4",
"@babel/core": "7.10.4",
"@babel/node": "7.10.4",
"@babel/plugin-proposal-decorators": "7.10.4",
"@babel/plugin-transform-runtime": "7.10.4",
"@babel/preset-env": "7.10.4",
"@babel/register": "7.10.4",
"@babel/runtime": "7.10.4",
"@nestjs/testing": "7.3.1",
"jest": "26.1.0",
"nodemon": "2.0.4",
"prettier": "2.0.5",
"supertest": "4.0.2"
},

File diff suppressed because it is too large Load Diff

View File

@@ -19,35 +19,35 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-fastify": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-fastify": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"@types/ws": "7.2.4",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"@types/ws": "7.2.6",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,36 +19,36 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/swagger": "4.5.5",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/swagger": "4.5.12",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5",
"rxjs": "6.6.0",
"swagger-ui-express": "4.1.4"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "10.17.3",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,39 +19,39 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/graphql": "7.3.7",
"@nestjs/platform-express": "7.0.11",
"apollo-server": "2.13.1",
"apollo-server-express": "2.13.1",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/graphql": "7.5.1",
"@nestjs/platform-express": "7.3.1",
"apollo-server": "2.15.1",
"apollo-server-express": "2.15.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"graphql": "14.6.0",
"graphql": "15.3.0",
"graphql-subscriptions": "1.1.0",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,35 +19,35 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/typeorm": "7.0.0",
"mongodb": "3.5.7",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/typeorm": "7.1.0",
"mongodb": "3.5.9",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5",
"typeorm": "0.2.24"
"rxjs": "6.6.0",
"typeorm": "0.2.25"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,33 +19,33 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"mongoose": "5.9.13",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"mongoose": "5.9.22",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "7.10.9",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,34 +19,34 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"hbs": "4.1.1",
"pug": "3.0.0",
"reflect-metadata": "0.1.13",
"rimraf": "3.0.2",
"rxjs": "6.5.5"
"rxjs": "6.6.0"
},
"devDependencies": {
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "8.10.58",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,38 +19,38 @@
"test:e2e": "echo 'No e2e tests implemented yet.'"
},
"dependencies": {
"@nestjs/common": "7.0.11",
"@nestjs/core": "7.0.11",
"@nestjs/platform-express": "7.0.11",
"@nestjs/platform-ws": "7.0.11",
"@nestjs/websockets": "7.0.11",
"@nestjs/common": "7.3.1",
"@nestjs/core": "7.3.1",
"@nestjs/platform-express": "7.3.1",
"@nestjs/platform-ws": "7.3.1",
"@nestjs/websockets": "7.3.1",
"class-transformer": "0.2.3",
"class-validator": "0.12.2",
"rimraf": "3.0.2",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.5",
"ws": "7.3.0"
"rxjs": "6.6.0",
"ws": "7.3.1"
},
"devDependencies": {
"@types/ws": "7.2.4",
"@nestjs/cli": "7.1.5",
"@nestjs/schematics": "7.0.0",
"@nestjs/testing": "7.0.11",
"@types/express": "4.17.6",
"@types/ws": "7.2.6",
"@nestjs/cli": "7.4.1",
"@nestjs/schematics": "7.0.1",
"@nestjs/testing": "7.3.1",
"@types/express": "4.17.7",
"@types/node": "12.12.31",
"@types/supertest": "2.0.9",
"jest": "26.0.1",
"@types/supertest": "2.0.10",
"jest": "26.1.0",
"prettier": "2.0.5",
"supertest": "4.0.2",
"ts-jest": "26.0.0",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"ts-jest": "26.1.1",
"ts-loader": "7.0.5",
"ts-node": "8.10.2",
"tsconfig-paths": "3.9.0",
"@typescript-eslint/eslint-plugin": "3.0.0",
"@typescript-eslint/parser": "3.0.0",
"eslint": "7.0.0",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.6.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
"eslint-plugin-import": "2.20.2",
"typescript": "3.7.2"
"eslint-plugin-import": "2.22.0",
"typescript": "3.9.6"
}
}

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