Compare commits

...

690 Commits

Author SHA1 Message Date
Kamil Myśliwiec
0712346adc feature(): use metadata cache for headers and status code 2019-04-10 12:52:40 +02:00
Kamil Myśliwiec
1dfc81459c Merge branch 'feature/change-http-code-interceptor' of https://github.com/ToonvanStrijp/nest into ToonvanStrijp-feature/change-http-code-interceptor 2019-04-10 12:39:15 +02:00
Kamil Myśliwiec
48137df07d test(): fix broken unit tests (tcp) 2019-04-10 11:56:04 +02:00
Kamil Myśliwiec
c687421c03 bugfix(platform-fastify): add missing constructor interfaces (http, http2) #1950 2019-04-10 11:40:08 +02:00
Kamil Myśliwiec
b04d2bbc91 bugfix(microservices): use host property in TcpServer 2019-04-10 11:35:09 +02:00
Kamil Myśliwiec
098eb3b4f6 Merge branch 'master' of https://github.com/nestjs/nest 2019-04-08 21:37:23 +02:00
Kamil Myśliwiec
c29144c5c0 tests(): hotfix (client proxy) createObserver issue 2019-04-08 21:32:47 +02:00
Toon van Strijp
21c22d5af3 change header interceptor in hello-world e2e to take multiple headers if needed. 2019-04-06 15:49:42 +02:00
Kamil Mysliwiec
1a64c893c7 Merge pull request #1941 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.2.0
2019-04-06 09:57:26 +02:00
Kamil Mysliwiec
8ce7cfd677 Merge pull request #1946 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.0.1
2019-04-06 09:57:15 +02:00
Kamil Mysliwiec
7d31f7a7ab Merge pull request #1944 from nestjs/renovate/ts-jest-24.x
chore(deps): update dependency ts-jest to v24.0.2
2019-04-06 09:57:05 +02:00
Kamil Mysliwiec
e444600f4d Merge pull request #1945 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.3
2019-04-06 09:56:58 +02:00
Kamil Mysliwiec
24f67c911a Merge pull request #1943 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.4.2
2019-04-06 09:56:45 +02:00
Kamil Mysliwiec
dba1bb8d86 Merge pull request #1929 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.14.0
2019-04-06 09:56:38 +02:00
Kamil Mysliwiec
347d51d77f Merge pull request #1940 from nestjs/renovate/fastify-multipart-0.x
fix(deps): update dependency fastify-multipart to v0.8.0
2019-04-06 09:56:24 +02:00
Kamil Mysliwiec
59267796ec Merge pull request #1931 from nestjs/renovate/jest-monorepo
chore(deps): update dependency jest to v24.7.1
2019-04-06 09:56:04 +02:00
Kamil Mysliwiec
4152540051 Merge pull request #1934 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.4.22
2019-04-06 09:55:57 +02:00
Kamil Mysliwiec
13d8b3e9fe Merge pull request #1928 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.2.12
2019-04-06 09:55:40 +02:00
Renovate Bot
af0c2085bb chore(deps): update dependency core-js to v3.0.1 2019-04-06 07:33:47 +00:00
Renovate Bot
283de2ec40 fix(deps): update dependency mongodb to v3.2.3 2019-04-05 22:12:13 +00:00
Renovate Bot
bff7901078 chore(deps): update dependency ts-jest to v24.0.2 2019-04-05 22:12:02 +00:00
Renovate Bot
59304b0856 fix(deps): update dependency typescript to v3.4.2 2019-04-05 21:13:47 +00:00
Renovate Bot
253c959e88 fix(deps): update dependency fastify to v2.2.0 2019-04-05 19:35:50 +00:00
Renovate Bot
b056a80ead fix(deps): update dependency fastify-multipart to v0.8.0 2019-04-05 19:20:14 +00:00
Toon van Strijp
6618badc23 removed set header code before running interceptors. Added e2e test for testing header override. 2019-04-05 11:40:16 +02:00
Renovate Bot
422880f84e fix(deps): update dependency sequelize to v5.2.12 2019-04-04 15:57:16 +00:00
Renovate Bot
33f7e6f37b fix(deps): update dependency mongoose to v5.4.22 2019-04-04 15:12:18 +00:00
Renovate Bot
417b8a72cd fix(deps): update dependency fast-json-stringify to v1.14.0 2019-04-04 07:47:00 +00:00
Renovate Bot
e7c2a4e7b1 chore(deps): update dependency jest to v24.7.1 2019-04-04 02:05:32 +00:00
Kamil Mysliwiec
08ea60e620 Merge pull request #1909 from nestjs/renovate/amqp-connection-manager-2.x
fix(deps): update dependency amqp-connection-manager to v2.3.1
2019-04-03 12:36:36 +02:00
Kamil Mysliwiec
6be6f14d7c Merge pull request #1912 from nestjs/renovate/ts-morph-1.x
fix(deps): update dependency ts-morph to v1.3.3
2019-04-03 12:36:21 +02:00
Kamil Mysliwiec
85b166fc6d Merge pull request #1913 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.15.0
2019-04-03 12:36:15 +02:00
Kamil Mysliwiec
8e6fb080f9 Merge pull request #1917 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.2.10
2019-04-03 12:36:06 +02:00
Kamil Mysliwiec
00e121a702 Merge pull request #1918 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.0.5
2019-04-03 12:36:00 +02:00
Kamil Mysliwiec
8ebd26d586 Merge pull request #1902 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.13.0
2019-04-03 12:34:50 +02:00
Kamil Mysliwiec
40769fcca1 Merge pull request #1911 from nestjs/renovate/jest-monorepo
chore(deps): update dependency jest to v24.7.0
2019-04-03 12:34:40 +02:00
Kamil Mysliwiec
9311abb33f Merge pull request #1921 from nestjs/renovate/graphql-subscriptions-1.x
fix(deps): update dependency graphql-subscriptions to v1.1.0
2019-04-03 12:34:22 +02:00
Kamil Mysliwiec
8a7bc79297 Merge pull request #1922 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.4.21
2019-04-03 12:34:14 +02:00
Renovate Bot
9ff511d6cd fix(deps): update dependency sequelize to v5.2.10 2019-04-03 05:04:39 +00:00
Renovate Bot
cf01bd29ed chore(deps): update dependency jest to v24.7.0 2019-04-03 04:52:20 +00:00
Renovate Bot
74a5bb5d1d fix(deps): update dependency mongoose to v5.4.21 2019-04-02 16:59:35 +00:00
Renovate Bot
6168c34607 fix(deps): update dependency graphql-subscriptions to v1.1.0 2019-04-02 16:28:39 +00:00
Renovate Bot
54012efa82 fix(deps): update dependency @nestjs/graphql to v6.0.5 2019-04-02 10:13:50 +00:00
Renovate Bot
7050f78851 chore(deps): update dependency tslint to v5.15.0 2019-04-01 23:57:08 +00:00
Renovate Bot
a76e17c0ff fix(deps): update dependency ts-morph to v1.3.3 2019-04-01 22:56:07 +00:00
Renovate Bot
629224b8a3 fix(deps): update dependency amqp-connection-manager to v2.3.1 2019-04-01 20:06:41 +00:00
Toon van Strijp
152140085b reverted reply signature to have statusCode 2019-04-01 11:47:37 +02:00
Toon van Strijp
6415633097 fixed unit tests 2019-04-01 09:24:09 +02:00
Renovate Bot
3d6c0a4925 fix(deps): update dependency fast-json-stringify to v1.13.0 2019-04-01 07:23:39 +00:00
Toon van Strijp
922bbc3e57 set http status code before running interceptors
added unit test and integration test
changes http adapter to not send  http status in reply
2019-04-01 01:02:09 +02:00
Kamil Mysliwiec
d5fce7845e Merge pull request #1896 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.0.5
2019-03-31 22:00:45 +02:00
Kamil Myśliwiec
13f44328d1 chore(): publish 6.0.5 version 2019-03-31 21:06:16 +02:00
Renovate Bot
45e315741b fix(deps): update nest monorepo to v6.0.5 2019-03-31 19:05:47 +00:00
Kamil Myśliwiec
2e895033f7 chore(@nestjs) publish v6.0.5 release 2019-03-31 20:56:14 +02:00
Kamil Mysliwiec
00f7c5746b Merge pull request #1877 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.4.1
2019-03-31 20:53:45 +02:00
Kamil Mysliwiec
be093f3f30 Merge branch 'master' into renovate/typescript-3.x 2019-03-31 20:53:38 +02:00
Kamil Mysliwiec
62004c1762 Merge pull request #1881 from blueway/master
bugfix(fastify): fix the fastify adapter cors options config
2019-03-31 20:49:36 +02:00
Kamil Mysliwiec
89b2f69a7e Merge pull request #1895 from nestjs/renovate/sequelize-typescript-0.x
fix(deps): update dependency sequelize-typescript to v0.6.9
2019-03-31 20:49:16 +02:00
Kamil Myśliwiec
5d3d2f449d bugfix(microservices): fix request scoped microservice calls #1886 2019-03-31 20:48:45 +02:00
Kamil Mysliwiec
8c354e76c9 Merge pull request #1894 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.2.1
2019-03-31 16:02:08 +02:00
Renovate Bot
b3f69ed624 fix(deps): update dependency sequelize-typescript to v0.6.9 2019-03-31 13:36:32 +00:00
Renovate Bot
b1eac49ffc fix(deps): update dependency graphql to v14.2.1 2019-03-31 12:27:17 +00:00
Kamil Mysliwiec
df6c27c634 Merge pull request #1892 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.0.4
2019-03-31 12:10:30 +02:00
Renovate Bot
37fd2caa98 fix(deps): update dependency @nestjs/graphql to v6.0.4 2019-03-31 10:04:10 +00:00
Renovate Bot
12b11c38f1 fix(deps): update dependency typescript to v3.4.1 2019-03-31 09:39:30 +00:00
Kamil Mysliwiec
feeedb44ee Merge pull request #1880 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.27.46
2019-03-31 11:36:14 +02:00
Kamil Mysliwiec
3588f67bef Merge pull request #1887 from nestjs/renovate/ts-jest-24.x
chore(deps): update dependency ts-jest to v24.0.1
2019-03-31 11:31:08 +02:00
Kamil Mysliwiec
9497beb5cd Merge pull request #1871 from nestjs/renovate/nats-1.x
fix(deps): update dependency nats to v1.2.6
2019-03-31 11:31:01 +02:00
Renovate Bot
d0fca77744 chore(deps): update dependency ts-jest to v24.0.1 2019-03-31 09:30:51 +00:00
Kamil Mysliwiec
efacf4ad0f Merge pull request #1878 from nestjs/renovate/type-graphql-0.x
fix(deps): update dependency type-graphql to v0.17.1
2019-03-31 11:30:45 +02:00
Kamil Mysliwiec
5ff04e756e Merge pull request #1889 from nestjs/renovate/ts-morph-1.x
fix(deps): update dependency ts-morph to v1.3.2
2019-03-31 11:30:38 +02:00
Kamil Mysliwiec
ad07a26975 Merge pull request #1866 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.2.8
2019-03-31 11:30:17 +02:00
Kamil Mysliwiec
4acf1b83af Merge pull request #1862 from nestjs/renovate/fastify-static-2.x
chore(deps): update dependency fastify-static to v2.4.0
2019-03-31 11:30:10 +02:00
Kamil Mysliwiec
e17594983b Merge pull request #1859 from nestjs/renovate/sinon-7.x
chore(deps): update dependency @types/sinon to v7.0.11
2019-03-31 11:29:35 +02:00
Kamil Mysliwiec
da252ca23d Merge pull request #1858 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.0.4
2019-03-31 11:29:23 +02:00
Renovate Bot
8293bfa519 fix(deps): update dependency sequelize to v5.2.8 2019-03-31 08:17:38 +00:00
Renovate Bot
482432d477 fix(deps): update dependency ts-morph to v1.3.2 2019-03-30 16:37:39 +00:00
Renovate Bot
041f0ca992 chore(deps): update dependency @types/sinon to v7.0.11 2019-03-30 05:13:16 +00:00
jackblues
66b13f42b9 style: trim the ts code 2019-03-30 12:41:10 +08:00
Renovate Bot
f51d331cc2 chore(deps): update dependency @types/sequelize to v4.27.46 2019-03-30 04:18:04 +00:00
weezway
24b0f5a583 fix(fastify-cors): fix the fastify adapter cors options config 2019-03-30 11:17:15 +08:00
Renovate Bot
156184ead7 fix(deps): update dependency nats to v1.2.6 2019-03-29 21:03:19 +00:00
Renovate Bot
0b0afac93c fix(deps): update dependency type-graphql to v0.17.1 2019-03-29 19:44:43 +00:00
Renovate Bot
d1828d9026 fix(deps): update nest monorepo to v6.0.4 2019-03-27 19:49:07 +00:00
Kamil Mysliwiec
20145b06e8 Merge pull request #1857 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.12.0
2019-03-27 20:40:09 +01:00
Kamil Mysliwiec
fd2854d832 Merge pull request #1860 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.0.3
2019-03-27 20:39:55 +01:00
Renovate Bot
20bc124e3d chore(deps): update dependency fastify-static to v2.4.0 2019-03-27 14:52:10 +00:00
Renovate Bot
fd86e7e4a8 fix(deps): update dependency @nestjs/graphql to v6.0.3 2019-03-27 12:10:49 +00:00
Renovate Bot
ed0dd2188c fix(deps): update dependency fast-json-stringify to v1.12.0 2019-03-27 10:37:36 +00:00
Kamil Myśliwiec
497e5fe3c3 chore(@nestjs) publish v6.0.4 release 2019-03-27 10:48:45 +01:00
Kamil Mysliwiec
61df77daef Merge pull request #1852 from WonderPanda/samples_fixes
sample(): fix unit tests in sample-01
2019-03-27 10:45:01 +01:00
Kamil Mysliwiec
029082b11d Merge pull request #1854 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2.8.12
2019-03-27 10:42:27 +01:00
Kamil Mysliwiec
5e45858c9c Merge pull request #1848 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.0.3
2019-03-27 10:41:46 +01:00
Kamil Mysliwiec
1988dc6bba Merge pull request #1846 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.2.1
2019-03-27 10:41:38 +01:00
Kamil Mysliwiec
f0caa89f5d Merge pull request #1847 from nestjs/renovate/typeorm-0.x
fix(deps): update dependency typeorm to v0.2.16
2019-03-27 10:41:31 +01:00
Kamil Mysliwiec
0c511a8a42 Merge pull request #1853 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.2.0
2019-03-27 10:40:46 +01:00
Kamil Mysliwiec
815b66121f Merge pull request #1855 from nestjs/renovate/prisma-binding-2.x
fix(deps): update dependency prisma-binding to v2.3.10
2019-03-27 10:40:40 +01:00
Kamil Mysliwiec
540abe91ac Merge pull request #1856 from nestjs/renovate/ws-6.x
fix(deps): update dependency ws to v6.2.1
2019-03-27 10:39:14 +01:00
Kamil Myśliwiec
2bf4577212 bugfix(core): injecting dependencies into middleware error #1834 2019-03-27 10:38:47 +01:00
Kamil Myśliwiec
ca62dc951d bugfix(common): http exceptions should have the same stacktrace as generic 2019-03-27 10:38:14 +01:00
Kamil Myśliwiec
1a3d16a7ea bugfix(common): registerAsync incorrectly sets Axios instance #1849 2019-03-27 10:37:22 +01:00
Renovate Bot
de446dacfa fix(deps): update dependency ws to v6.2.1 2019-03-27 09:01:31 +00:00
Renovate Bot
a6743f1078 fix(deps): update dependency prisma-binding to v2.3.10 2019-03-27 06:04:38 +00:00
Renovate Bot
0fbc8f2860 fix(deps): update dependency sequelize to v5.2.1 2019-03-27 05:20:24 +00:00
Renovate Bot
54d5592c09 chore(deps): update dependency @types/redis to v2.8.12 2019-03-26 22:03:51 +00:00
Renovate Bot
cf5e7ed3b1 fix(deps): update dependency graphql to v14.2.0 2019-03-26 19:28:33 +00:00
Jesse Carter
2eb2a037b8 test(sample/01) fix broken tests
- update jest configuration to remove warnings
- fix tests so that they run out of the box with correct types
- remove duplicate key from docker-compose
2019-03-26 12:56:04 -04:00
Renovate Bot
a37acf66c6 fix(deps): update nest monorepo to v6.0.3 2019-03-26 11:24:26 +00:00
Kamil Myśliwiec
ca110dfdb8 Update README files 2019-03-26 12:20:05 +01:00
Kamil Myśliwiec
cf7ff71694 chore(@nestjs) publish v6.0.3 release 2019-03-26 12:15:58 +01:00
Kamil Myśliwiec
70fa9f038b Merge branch 'ivibe-my-fix-branch' 2019-03-26 12:14:18 +01:00
Kamil Myśliwiec
802be5c8eb refactor(microservices): adjust to the general coding style 2019-03-26 12:13:45 +01:00
Kamil Myśliwiec
69ba249337 Merge branch 'my-fix-branch' of https://github.com/ivibe/nest into ivibe-my-fix-branch 2019-03-26 12:01:19 +01:00
Kamil Mysliwiec
48be3ef669 Merge pull request #1844 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.4.20
2019-03-26 12:00:42 +01:00
Kamil Myśliwiec
0a28c16b67 bugfix(platform): execute callback passed into listen method #1820 2019-03-26 11:58:50 +01:00
Kamil Myśliwiec
a6c0d19b1d Merge branch 'master' of https://github.com/nestjs/nest 2019-03-26 11:48:05 +01:00
Kamil Myśliwiec
78777bfd03 bugfix(): fix incorrect message (middleware exception, resolve - use) 2019-03-26 11:47:58 +01:00
Kamil Mysliwiec
1f394247bf Merge pull request #1805 from zarv1k/fix-external-context-creator-usage-in-next-application-context
bugfix(): fix usage of ExternalContextCreator in NestApplicationConte…
2019-03-26 11:43:12 +01:00
Kamil Mysliwiec
2ce08651bb Merge pull request #1842 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.4
2019-03-26 11:31:47 +01:00
Kamil Myśliwiec
3886e23ac9 Merge branch 'master' of https://github.com/nestjs/nest 2019-03-26 11:29:40 +01:00
Kamil Myśliwiec
59827181cb Merge branch 'gperdomor-fix-tcp-client' 2019-03-26 11:29:16 +01:00
Kamil Myśliwiec
d9a28f2253 bugfix(): normalize TCP pattern (event) 2019-03-26 11:28:19 +01:00
Renovate Bot
cf8950fd94 fix(deps): update dependency typeorm to v0.2.16 2019-03-26 10:06:08 +00:00
Renovate Bot
146c3e1fbc fix(deps): update dependency mongoose to v5.4.20 2019-03-25 21:27:53 +00:00
Renovate Bot
dbcac33499 chore(deps): update dependency @types/node to v10.14.4 2019-03-25 21:07:18 +00:00
Kamil Mysliwiec
c378b25ce4 Merge pull request #1841 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.3.24
2019-03-25 21:54:53 +01:00
Renovate Bot
bf5eaed54c chore(deps): update dependency @types/mongoose to v5.3.24 2019-03-25 20:52:46 +00:00
Gustavo Perdomo
6d9f15a2a8 fix dispatchEvent 2019-03-25 15:11:22 -03:00
Kamil Mysliwiec
ab8ce64fe8 Update Readme.md 2019-03-25 14:06:10 +01:00
Kamil Mysliwiec
654b746d55 Update Readme.md 2019-03-25 14:03:07 +01:00
Kamil Mysliwiec
349b39fb01 Merge pull request #1790 from nestjs/renovate/sinon-7.x
chore(deps): update dependency sinon to v7.3.0
2019-03-24 11:20:28 +01:00
Kamil Mysliwiec
4cd4904b54 Merge pull request #1807 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.3
2019-03-24 11:20:17 +01:00
Kamil Mysliwiec
bf9d7c3ee1 Merge pull request #1806 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.2
2019-03-24 11:20:07 +01:00
Kamil Mysliwiec
17fa9a4b9e Merge pull request #1810 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.11.4
2019-03-24 11:19:57 +01:00
Kamil Mysliwiec
6489611725 Merge pull request #1816 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.45
2019-03-24 11:18:24 +01:00
Kamil Mysliwiec
3edc181150 Merge pull request #1823 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.1.1
2019-03-24 11:18:13 +01:00
Kamil Myśliwiec
ee2dc91357 Merge branch 'master' of https://github.com/nestjs/nest 2019-03-24 10:41:11 +01:00
Kamil Myśliwiec
c1b8f54104 refactor(): add blank line (web socket adapter interface) 2019-03-24 10:40:55 +01:00
Renovate Bot
612a18bb0e fix(deps): update dependency sequelize to v5.1.1 2019-03-23 14:41:59 +00:00
Renovate Bot
c4b7b4c016 fix(deps): update dependency mongodb to v3.2.2 2019-03-22 21:38:57 +00:00
Renovate Bot
9e05feb8c2 chore(deps): update dependency @types/node to v8.10.45 2019-03-22 19:26:06 +00:00
Renovate Bot
ffd24db6d2 chore(deps): update dependency @types/node to v10.14.3 2019-03-22 19:25:45 +00:00
Renovate Bot
c0cfb16175 fix(deps): update dependency fast-json-stringify to v1.11.4 2019-03-22 07:37:28 +00:00
Dmitry Zarva
d8a39a74c3 bugfix(): fix usage of ExternalContextCreator in NextApplicationContext (when NestContainer.applicationConfig is undefined) 2019-03-21 18:37:23 +03:00
Kamil Mysliwiec
845c5df66f Merge pull request #1803 from nestjs/renovate/nestjs-swagger-3.x
fix(deps): update dependency @nestjs/swagger to v3.0.2
2019-03-21 13:25:47 +01:00
Renovate Bot
cd1d338d2c fix(deps): update dependency @nestjs/swagger to v3.0.2 2019-03-21 12:20:54 +00:00
Kamil Myśliwiec
a39821a624 Merge branch 'master' of https://github.com/nestjs/nest 2019-03-21 12:08:26 +01:00
Kamil Myśliwiec
4fa54ffcdd refactor(): remove useless async keywords (unit tests) 2019-03-21 12:03:40 +01:00
Ivan Vibe
9c3e15a902 bugfix(microservices): let use unicode characters in TCP Microservice messages
add own json-socket implementation

https://github.com/nestjs/nest/issues/1734
2019-03-21 02:49:23 +05:00
Kamil Mysliwiec
9f5f1159ae Merge pull request #1791 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.0.2
2019-03-20 14:38:58 +01:00
Renovate Bot
aefdee3983 fix(deps): update dependency @nestjs/graphql to v6.0.2 2019-03-20 13:33:53 +00:00
Renovate Bot
5f2a395158 chore(deps): update dependency sinon to v7.3.0 2019-03-20 13:32:35 +00:00
Kamil Mysliwiec
01b06f3848 Merge pull request #1789 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.0.2
2019-03-20 13:53:38 +01:00
Kamil Myśliwiec
6d09f36cb0 chore(): publish 6.0.2 release 2019-03-20 13:50:02 +01:00
Renovate Bot
01dd813f5c fix(deps): update nest monorepo to v6.0.2 2019-03-20 12:43:53 +00:00
Kamil Myśliwiec
704fe4c700 chore(@nestjs) publish v6.0.2 release 2019-03-20 13:36:19 +01:00
Kamil Myśliwiec
568d321cfa Merge branch 'master' of https://github.com/nestjs/nest 2019-03-20 13:32:01 +01:00
Kamil Myśliwiec
be92334bb5 bugfix(): fix incorrect providers processing (factory/value) 2019-03-20 13:31:51 +01:00
Kamil Myśliwiec
179a65f1ab bugfix(): fix incorrect platform-express resolution 2019-03-20 13:31:22 +01:00
Kamil Myśliwiec
9111d12f8a bugfix(): fix incorrect platform-express resolution 2019-03-20 13:31:14 +01:00
Kamil Myśliwiec
acd1a439c0 bugfix(): fix cache interceptor DI 2019-03-20 13:30:51 +01:00
Kamil Mysliwiec
a54a5b90af Merge pull request #1784 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3
2019-03-20 12:35:41 +01:00
Kamil Mysliwiec
4d691ce42e Merge pull request #1785 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.3.4000
2019-03-20 12:35:32 +01:00
Renovate Bot
50e91cfb44 fix(deps): update dependency typescript to v3.3.4000 2019-03-20 00:09:48 +00:00
Renovate Bot
e3a2378b9a chore(deps): update dependency core-js to v3 2019-03-19 19:26:18 +00:00
Kamil Myśliwiec
15bbd74cf8 Merge branch 'master' of https://github.com/nestjs/nest 2019-03-19 15:55:46 +01:00
Kamil Myśliwiec
5ba9a94957 Merge branch 'jbpionnier-feat/accept_provide_abstract_class' 2019-03-19 15:55:31 +01:00
Kamil Myśliwiec
a79e192b55 chore(): set license date 2019-03-19 15:54:55 +01:00
Kamil Myśliwiec
4af5d81727 Merge branch 'feat/accept_provide_abstract_class' of https://github.com/jbpionnier/nest into jbpionnier-feat/accept_provide_abstract_class 2019-03-19 15:16:49 +01:00
Kamil Mysliwiec
82910abca0 Merge pull request #1780 from nestjs/renovate/major-nest-monorepo
Update nest monorepo to v6 (major)
2019-03-19 14:49:46 +01:00
Renovate Bot
94d7ab0000 Update nest monorepo to v6 2019-03-19 13:47:19 +00:00
Kamil Mysliwiec
55970a1dff Merge pull request #1728 from MarkPieszak/patch-2
docs(readme): update links to open in new window
2019-03-19 14:46:45 +01:00
Kamil Mysliwiec
839fcb0f9c Update Readme.md 2019-03-19 14:45:46 +01:00
Kamil Mysliwiec
b318da43c8 Merge pull request #1778 from nestjs/renovate/ws-6.x
Update dependency ws to v6
2019-03-19 14:43:50 +01:00
Renovate Bot
2d56988e86 Update dependency ws to v6 2019-03-19 13:01:23 +00:00
Kamil Mysliwiec
0e33860828 Merge pull request #1730 from pvtri96/pvtri96/refactor
refactor(sample/22): Update the method name in posts resolver to match the context
2019-03-19 13:51:55 +01:00
Kamil Mysliwiec
00a9aef722 Merge pull request #1766 from nestjs/renovate/tsconfig-paths-3.x
Update dependency tsconfig-paths to v3.8.0
2019-03-19 13:51:30 +01:00
Kamil Mysliwiec
38737c99d1 Merge pull request #1771 from nestjs/renovate/point-of-view-3.x
Update dependency point-of-view to v3
2019-03-19 13:51:16 +01:00
Kamil Mysliwiec
335c25512d Merge pull request #1777 from nestjs/renovate/typescript-3.x
Update dependency typescript to v3
2019-03-19 13:51:01 +01:00
Kamil Mysliwiec
9430e2b78d Merge pull request #1772 from nestjs/renovate/sequelize-5.x
Update dependency sequelize to v5
2019-03-19 13:50:44 +01:00
Renovate Bot
f2ef6e19c6 Update dependency typescript to v3 2019-03-19 12:50:42 +00:00
Kamil Mysliwiec
4cceae670e Merge pull request #1724 from nestjs/renovate/gulp-typescript-5.x
Update dependency gulp-typescript to v5
2019-03-19 13:49:17 +01:00
Kamil Mysliwiec
01b8f3dc11 Merge pull request #1756 from nestjs/renovate/nestjs-passport-6.x
Update dependency @nestjs/passport to v6
2019-03-19 13:48:37 +01:00
Kamil Mysliwiec
28eb129900 Merge pull request #1773 from shauntrennery/patch-1
Update webpack.config.js
2019-03-19 13:48:21 +01:00
Shaun Trennery
213743c287 Update webpack.config.js
Update to prevent endless watch loop.
2019-03-19 13:03:56 +02:00
Renovate Bot
8089f18349 Update dependency sequelize to v5 2019-03-19 10:23:14 +00:00
Renovate Bot
4241b744a0 Update dependency point-of-view to v3 2019-03-19 10:23:09 +00:00
Renovate Bot
97e7274bf7 Update dependency tsconfig-paths to v3.8.0 2019-03-19 09:54:48 +00:00
Renovate Bot
9f618b8502 Update dependency @nestjs/passport to v6 2019-03-19 08:09:31 +00:00
Kamil Mysliwiec
fc6e07a103 Merge pull request #1752 from nestjs/renovate/ts-node-8.x
Update dependency ts-node to v8
2019-03-19 09:07:14 +01:00
Renovate Bot
93ae488da4 Update dependency ts-node to v8 2019-03-19 08:06:39 +00:00
Kamil Mysliwiec
5dbc306577 Merge pull request #1761 from nestjs/renovate/point-of-view-1.x
Update dependency point-of-view to v1.3.0
2019-03-19 09:06:15 +01:00
Kamil Mysliwiec
dc9db9d5b8 Merge pull request #1762 from nestjs/renovate/subscriptions-transport-ws-0.x
Update dependency subscriptions-transport-ws to v0.9.16
2019-03-19 09:02:26 +01:00
Renovate Bot
b087fb0041 Update dependency subscriptions-transport-ws to v0.9.16 2019-03-19 08:01:17 +00:00
Renovate Bot
87c736e0dd Update dependency point-of-view to v1.3.0 2019-03-19 08:00:52 +00:00
Kamil Mysliwiec
9f252794b9 Merge pull request #1750 from nestjs/renovate/supertest-4.x
Update dependency supertest to v4
2019-03-19 08:56:22 +01:00
Renovate Bot
847bb1cc18 Update dependency supertest to v4 2019-03-19 07:53:59 +00:00
Renovate Bot
92a017d7b6 Update dependency gulp-typescript to v5 2019-03-19 07:51:11 +00:00
Kamil Mysliwiec
715c25dfb6 Merge pull request #1737 from nestjs/renovate/nest-monorepo
Update nest monorepo to v6.0.1
2019-03-19 08:49:26 +01:00
Renovate Bot
5c4c8b58a1 Update nest monorepo to v6.0.1 2019-03-19 07:48:16 +00:00
Kamil Mysliwiec
f5f1181eb2 Merge pull request #1758 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2
2019-03-19 08:40:07 +01:00
Kamil Mysliwiec
98533b8816 Merge pull request #1753 from nestjs/renovate/nestjs-jwt-6.x
fix(deps): update dependency @nestjs/jwt to v6
2019-03-19 08:39:51 +01:00
Kamil Mysliwiec
dc2bb08d80 Merge pull request #1746 from nestjs/renovate/major-lerna-monorepo
chore(deps): update dependency lerna to v3
2019-03-19 08:39:35 +01:00
Kamil Mysliwiec
fc4285ff6c Merge pull request #1748 from nestjs/renovate/pin-dependencies
fix(deps): pin dependency @nestjs/swagger to 3.0.1
2019-03-19 08:38:53 +01:00
Kamil Mysliwiec
72df09ef65 Merge pull request #1745 from nestjs/renovate/major-jest-monorepo
chore(deps): update dependency jest to v24
2019-03-19 08:38:29 +01:00
Kamil Mysliwiec
8db439ad95 Merge pull request #1744 from nestjs/renovate/gulp-watch-5.x
chore(deps): update dependency gulp-watch to v5
2019-03-19 08:38:12 +01:00
Kamil Mysliwiec
f5a5ce8595 Merge pull request #1743 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.3.23
2019-03-19 08:38:04 +01:00
Kamil Mysliwiec
54357e23e5 Merge pull request #1741 from nestjs/renovate/cache-manager-1.x
chore(deps): update dependency @types/cache-manager to v1.2.7
2019-03-19 08:37:55 +01:00
Kamil Mysliwiec
5c91c38aa2 Merge pull request #1736 from nestjs/renovate/prisma-binding-2.x
fix(deps): update dependency prisma-binding to v2.3.9
2019-03-19 08:37:27 +01:00
Kamil Mysliwiec
3c36ea9914 Merge pull request #1759 from nestjs/revert-1749-renovate/mocha-6.x
Revert "chore(deps): update dependency mocha to v6"
2019-03-19 08:37:03 +01:00
Kamil Mysliwiec
e0e2b5080d Revert "chore(deps): update dependency mocha to v6" 2019-03-19 08:36:43 +01:00
Renovate Bot
c10e8d01fb fix(deps): pin dependency @nestjs/swagger to 3.0.1 2019-03-19 07:36:35 +00:00
Kamil Mysliwiec
e24826286c Merge pull request #1749 from nestjs/renovate/mocha-6.x
chore(deps): update dependency mocha to v6
2019-03-19 08:35:56 +01:00
Kamil Mysliwiec
6bc1829cf7 Merge pull request #1751 from nestjs/renovate/ts-jest-24.x
chore(deps): update dependency ts-jest to v24
2019-03-19 08:35:40 +01:00
Kamil Mysliwiec
6d83b3a3da Merge pull request #1755 from nestjs/renovate/nestjs-mongoose-6.x
fix(deps): update dependency @nestjs/mongoose to v6
2019-03-19 08:35:27 +01:00
Kamil Mysliwiec
8013e8dfca Merge pull request #1757 from nestjs/renovate/nestjs-typeorm-6.x
fix(deps): update dependency @nestjs/typeorm to v6
2019-03-19 08:35:13 +01:00
Kamil Mysliwiec
3ab4eb86c5 Merge pull request #1742 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.27.44
2019-03-19 08:34:55 +01:00
Renovate Bot
fc0766aede fix(deps): update dependency fastify to v2 2019-03-19 06:25:28 +00:00
Renovate Bot
5e25e2ba3c fix(deps): update dependency @nestjs/typeorm to v6 2019-03-19 06:25:08 +00:00
Renovate Bot
ed04ff25c3 fix(deps): update dependency @nestjs/mongoose to v6 2019-03-19 04:54:58 +00:00
Renovate Bot
ba7699771a fix(deps): update dependency @nestjs/jwt to v6 2019-03-19 03:49:44 +00:00
Renovate Bot
ea53b9f95d chore(deps): update dependency ts-jest to v24 2019-03-19 01:54:02 +00:00
Renovate Bot
9b29f1b5fc chore(deps): update dependency mocha to v6 2019-03-19 00:55:42 +00:00
Kamil Myśliwiec
10f70be0be Merge branch 'master' of https://github.com/nestjs/nest 2019-03-18 23:40:32 +01:00
Renovate Bot
d1d756a717 chore(deps): update dependency lerna to v3 2019-03-18 22:17:23 +00:00
Renovate Bot
211f4b15c6 chore(deps): update dependency jest to v24 2019-03-18 22:14:54 +00:00
Renovate Bot
ff2b81ae1e chore(deps): update dependency @types/sequelize to v4.27.44 2019-03-18 22:14:40 +00:00
Renovate Bot
21fe68ee40 chore(deps): update dependency gulp-watch to v5 2019-03-18 21:38:07 +00:00
Renovate Bot
df45b5377d chore(deps): update dependency @types/mongoose to v5.3.23 2019-03-18 21:35:36 +00:00
Jean-Baptiste Pionnier
61728fa46a feat(common): accept provide abstract class 2019-03-18 21:24:01 +01:00
Renovate Bot
b7c66efd30 chore(deps): update dependency @types/cache-manager to v1.2.7 2019-03-18 20:08:17 +00:00
Renovate Bot
97acd2cf56 fix(deps): update dependency prisma-binding to v2.3.9 2019-03-18 19:01:29 +00:00
Kamil Myśliwiec
5f0643ccd0 sample(): update swagger example 2019-03-18 15:18:26 +01:00
Kamil Mysliwiec
81d8dae7cd Merge pull request #1731 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.0.1
2019-03-18 15:17:36 +01:00
Renovate Bot
bc9ced8d71 fix(deps): update dependency @nestjs/graphql to v6.0.1 2019-03-18 14:16:20 +00:00
pvtri96
0015231e86 refactor(sample/22): Update the method name in posts resolver to match the context 2019-03-18 21:01:56 +07:00
Mark Pieszak
67e0c89980 update nestjs to nest 2019-03-18 09:59:57 -04:00
Kamil Mysliwiec
6882bc7fbf Merge pull request #1729 from MarkPieszak/patch-1
chore(license): update license date
2019-03-18 14:45:55 +01:00
Mark Pieszak
bab88e328f docs(readme): update links to open in new window 2019-03-18 09:04:59 -04:00
Mark Pieszak
aa088d63a7 chore: update license date 2019-03-18 08:50:24 -04:00
Kamil Myśliwiec
55646f5ae2 chore(@nestjs) publish v6.0.1 release 2019-03-18 12:26:38 +01:00
Kamil Mysliwiec
96ba98d882 Merge pull request #1723 from nestjs/bugfix/1690-proxy-context
Bugfix/1690 proxy context
2019-03-18 12:05:53 +01:00
Kamil Mysliwiec
bf2b062711 Merge pull request #1722 from nestjs/bugfix/1689-testing-module
bugfix(core/testing): override provider only if exists in the scope
2019-03-18 12:05:25 +01:00
Kamil Myśliwiec
e1b46b7cc7 Merge branch 'bugfix/1690-proxy-context' into bugfix/1689-testing-module 2019-03-18 12:04:46 +01:00
Kamil Myśliwiec
fc4aaf29f7 bugfix(fastify): not registered fastify routes #1703 2019-03-18 12:02:10 +01:00
Kamil Myśliwiec
7ee2f58513 tests(): hotfix (client proxy) - unit tests 2019-03-18 11:11:01 +01:00
Kamil Myśliwiec
ff69407263 tests(): hotfix (client proxy) - unit tests 2019-03-18 11:10:43 +01:00
Kamil Myśliwiec
f1d458ca28 style(): add whitespace 2019-03-18 10:57:35 +01:00
Kamil Myśliwiec
2abfd741bd Merge branch 'master' of https://github.com/nestjs/nest 2019-03-18 10:54:02 +01:00
Kamil Myśliwiec
8e2280db05 bugfix(core/testing): override provider only if exists in the scope 2019-03-18 10:47:05 +01:00
Kamil Mysliwiec
b2722cec63 Merge pull request #1720 from nestjs/renovate/fastify-static-2.x
chore(deps): update dependency fastify-static to v2
2019-03-18 10:36:50 +01:00
Renovate Bot
74feffb8e7 chore(deps): update dependency fastify-static to v2 2019-03-18 09:29:25 +00:00
Kamil Mysliwiec
a74bd6bda1 Merge pull request #1719 from nestjs/renovate/coveralls-3.x
chore(deps): update dependency coveralls to v3
2019-03-18 10:28:41 +01:00
Kamil Mysliwiec
e412b5567c Merge pull request #1713 from nestjs/renovate/concurrently-4.x
chore(deps): update dependency concurrently to v4
2019-03-18 10:28:25 +01:00
Renovate Bot
a70e2b8e80 chore(deps): update dependency coveralls to v3 2019-03-18 09:28:15 +00:00
Renovate Bot
35e6723893 chore(deps): update dependency concurrently to v4 2019-03-18 09:27:02 +00:00
Kamil Mysliwiec
e2f59a15d6 Merge pull request #1702 from nestjs/renovate/typeorm-0.x
fix(deps): update dependency typeorm to v0.2.15
2019-03-18 10:25:42 +01:00
Renovate Bot
17f2c697b2 fix(deps): update dependency typeorm to v0.2.15 2019-03-18 09:24:22 +00:00
Kamil Mysliwiec
a0f3581924 Merge pull request #1696 from nestjs/renovate/rxjs-6.x
fix(deps): update dependency rxjs to v6.4.0
2019-03-18 10:22:32 +01:00
Renovate Bot
8c71e4b644 fix(deps): update dependency rxjs to v6.4.0 2019-03-18 09:21:27 +00:00
Kamil Mysliwiec
561b3dae5e Merge pull request #1709 from nestjs/renovate/mocha-5.x
chore(deps): update dependency @types/mocha to v5
2019-03-18 10:19:47 +01:00
Kamil Mysliwiec
7804cc454b Merge pull request #1707 from nestjs/renovate/chai-as-promised-7.x
chore(deps): update dependency @types/chai-as-promised to v7
2019-03-18 10:19:32 +01:00
Kamil Mysliwiec
2691fd3fb0 Merge pull request #1708 from nestjs/renovate/jest-24.x
chore(deps): update dependency @types/jest to v24
2019-03-18 10:19:03 +01:00
Kamil Mysliwiec
15d7829822 Merge pull request #1710 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2
2019-03-18 10:18:55 +01:00
Kamil Mysliwiec
7bcc3ed284 Merge pull request #1694 from nestjs/renovate/reflect-metadata-0.x
fix(deps): update dependency reflect-metadata to v0.1.13
2019-03-18 10:17:42 +01:00
Kamil Mysliwiec
1b00185e2e Merge pull request #1711 from nestjs/renovate/socket.io-2.x
chore(deps): update dependency @types/socket.io to v2
2019-03-18 10:16:29 +01:00
Renovate Bot
a42e4fdfc7 fix(deps): update dependency reflect-metadata to v0.1.13 2019-03-18 09:16:23 +00:00
Kamil Mysliwiec
009de393d6 Merge pull request #1712 from nestjs/renovate/awesome-typescript-loader-5.x
chore(deps): update dependency awesome-typescript-loader to v5
2019-03-18 10:16:13 +01:00
Kamil Mysliwiec
d9cc475ef5 Merge pull request #1714 from nestjs/renovate/conventional-changelog-3.x
chore(deps): update dependency conventional-changelog to v3
2019-03-18 10:15:56 +01:00
Kamil Mysliwiec
dcf6047e66 Merge pull request #1705 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v5.7.4
2019-03-18 10:15:33 +01:00
Kamil Mysliwiec
b75c76733b Merge pull request #1704 from nestjs/renovate/typescript-2.x
fix(deps): update dependency typescript to v2.9.2
2019-03-18 10:15:20 +01:00
Kamil Mysliwiec
8f2b6b6057 Merge pull request #1701 from nestjs/renovate/type-graphql-0.x
fix(deps): update dependency type-graphql to v0.17.0
2019-03-18 10:14:58 +01:00
Kamil Mysliwiec
0879363302 Merge pull request #1699 from nestjs/renovate/ts-morph-1.x
fix(deps): update dependency ts-morph to v1.3.1
2019-03-18 10:14:47 +01:00
Kamil Mysliwiec
51e644a990 Merge pull request #1698 from nestjs/renovate/sequelize-typescript-0.x
fix(deps): update dependency sequelize-typescript to v0.6.8
2019-03-18 10:14:38 +01:00
Kamil Mysliwiec
547d587b7a Merge pull request #1697 from nestjs/renovate/subscriptions-transport-ws-0.x
fix(deps): update dependency subscriptions-transport-ws to v0.9.16
2019-03-18 10:14:28 +01:00
Kamil Mysliwiec
3b63f9ea56 Merge pull request #1692 from nestjs/renovate/point-of-view-1.x
fix(deps): update dependency point-of-view to v1.3.0
2019-03-18 10:13:58 +01:00
Kamil Mysliwiec
162e545b19 Merge pull request #1691 from nestjs/renovate/mysql-2.x
fix(deps): update dependency mysql to v2.16.0
2019-03-18 10:13:11 +01:00
Renovate Bot
5861a0763c chore(deps): update dependency conventional-changelog to v3 2019-03-17 22:00:37 +00:00
Renovate Bot
7cbfdbeafa chore(deps): update dependency awesome-typescript-loader to v5 2019-03-17 20:06:26 +00:00
Renovate Bot
003b1ea51b chore(deps): update dependency @types/socket.io to v2 2019-03-17 20:05:20 +00:00
Renovate Bot
6ffa338c56 chore(deps): update dependency @types/redis to v2 2019-03-17 19:56:19 +00:00
Renovate Bot
8d05f34d34 chore(deps): update dependency @types/mocha to v5 2019-03-17 19:55:14 +00:00
Renovate Bot
9f4d566e5b chore(deps): update dependency @types/jest to v24 2019-03-17 18:57:51 +00:00
Renovate Bot
566fada699 chore(deps): update dependency @types/chai-as-promised to v7 2019-03-17 18:57:46 +00:00
Renovate Bot
dc34a29ff7 fix(deps): update nest monorepo to v5.7.4 2019-03-17 17:39:29 +00:00
Renovate Bot
6f4eb4fba9 fix(deps): update dependency typescript to v2.9.2 2019-03-17 17:38:14 +00:00
Renovate Bot
1674038bfa fix(deps): update dependency type-graphql to v0.17.0 2019-03-17 15:57:01 +00:00
Renovate Bot
8d039d3099 fix(deps): update dependency ts-morph to v1.3.1 2019-03-17 14:09:45 +00:00
Renovate Bot
d8b0a4a46e fix(deps): update dependency sequelize-typescript to v0.6.8 2019-03-17 14:07:44 +00:00
Renovate Bot
73098e5306 fix(deps): update dependency subscriptions-transport-ws to v0.9.16 2019-03-17 13:58:46 +00:00
Kamil Myśliwiec
ee19d1eedb Merge branch 'master' of https://github.com/nestjs/nest 2019-03-17 13:30:09 +01:00
Kamil Myśliwiec
42f38c68af bugfix(core): invalid context object (proxy) #1690 2019-03-17 13:28:08 +01:00
Renovate Bot
03e3d224a3 fix(deps): update dependency point-of-view to v1.3.0 2019-03-17 11:59:09 +00:00
Renovate Bot
f1bfd130f6 fix(deps): update dependency mysql to v2.16.0 2019-03-17 11:58:57 +00:00
Kamil Mysliwiec
18d2062702 Merge pull request #1682 from nestjs/renovate/class-transformer-0.x
fix(deps): update dependency class-transformer to v0.2.0
2019-03-17 11:15:16 +01:00
Renovate Bot
40b6cf92c6 fix(deps): update dependency class-transformer to v0.2.0 2019-03-17 10:15:01 +00:00
Kamil Mysliwiec
ab07cd5684 Merge pull request #1674 from nestjs/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.3.0
2019-03-17 11:14:22 +01:00
Renovate Bot
4bc38cf855 chore(deps): update dependency webpack-cli to v3.3.0 2019-03-17 10:14:13 +00:00
Kamil Mysliwiec
dc67e8ea4c Merge pull request #1687 from nestjs/renovate/hbs-4.x
fix(deps): update dependency hbs to v4.0.3
2019-03-17 11:13:58 +01:00
Kamil Mysliwiec
08356946ac Merge pull request #1688 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.4.19
2019-03-17 11:13:36 +01:00
Kamil Mysliwiec
a2ac3153ea Merge pull request #1684 from nestjs/renovate/fastify-1.x
fix(deps): update dependency fastify to v1.14.4
2019-03-17 11:13:21 +01:00
Kamil Mysliwiec
46ed4f09a6 Merge pull request #1671 from nestjs/renovate/ts-node-6.x
chore(deps): update dependency ts-node to v6.2.0
2019-03-17 11:13:06 +01:00
Kamil Mysliwiec
653c1b83f0 Merge pull request #1673 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.29.6
2019-03-17 11:12:32 +01:00
Renovate Bot
6e4b319219 fix(deps): update dependency mongoose to v5.4.19 2019-03-17 10:10:58 +00:00
Renovate Bot
b5a6a349e5 fix(deps): update dependency fastify to v1.14.4 2019-03-17 10:10:41 +00:00
Renovate Bot
b23daa9cda chore(deps): update dependency ts-node to v6.2.0 2019-03-17 10:10:17 +00:00
Kamil Mysliwiec
de5c6f72af Merge pull request #1669 from nestjs/renovate/imports-loader-0.x
chore(deps): update dependency imports-loader to v0.8.0
2019-03-17 11:10:17 +01:00
Kamil Mysliwiec
bdf73cbb8e Merge pull request #1685 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.1.1
2019-03-17 11:07:48 +01:00
Kamil Mysliwiec
9729a308eb Merge pull request #1665 from nestjs/renovate/node-7.x
chore(deps): update dependency @types/node to v7.10.5
2019-03-17 11:07:19 +01:00
Kamil Mysliwiec
d616b60f83 Merge pull request #1686 from nestjs/renovate/handlebars-4.x
fix(deps): update dependency handlebars to v4.1.1
2019-03-17 11:07:10 +01:00
Renovate Bot
74368cef06 fix(deps): update dependency hbs to v4.0.3 2019-03-17 10:02:02 +00:00
Kamil Myśliwiec
2e850f48fa Merge branch 'master' of https://github.com/nestjs/nest 2019-03-17 11:00:12 +01:00
Kamil Myśliwiec
5c0388f76f tests(): fix race condition in unit tests 2019-03-17 10:59:28 +01:00
Renovate Bot
b5971a3a94 Update dependency graphql to v14.1.1 2019-03-17 09:55:04 +00:00
Renovate Bot
8cfbeeafda Update dependency @types/node to v7.10.5 2019-03-17 09:54:13 +00:00
Renovate Bot
d5d7dddee3 chore(deps): update dependency webpack to v4.29.6 2019-03-17 09:51:18 +00:00
Kamil Mysliwiec
bdcb8bf861 Merge pull request #1679 from nestjs/renovate/nestjs-typeorm-5.x
fix(deps): update dependency @nestjs/typeorm to v5.3.0
2019-03-17 10:50:11 +01:00
Kamil Mysliwiec
8b796482e0 Merge pull request #1683 from nestjs/renovate/class-validator-0.x
fix(deps): update dependency class-validator to v0.9.1
2019-03-17 10:49:47 +01:00
Kamil Mysliwiec
6ae8237642 Merge pull request #1681 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.4.8
2019-03-17 10:49:29 +01:00
Kamil Mysliwiec
8ccf3e4a4e Merge pull request #1680 from nestjs/renovate/amqp-connection-manager-2.x
fix(deps): update dependency amqp-connection-manager to v2.3.0
2019-03-17 10:49:21 +01:00
Kamil Mysliwiec
81b8653183 Merge pull request #1678 from nestjs/renovate/nestjs-jwt-0.x
fix(deps): update dependency @nestjs/jwt to v0.3.0
2019-03-17 10:49:12 +01:00
Kamil Mysliwiec
aa6e50e7d4 Merge pull request #1670 from nestjs/renovate/supertest-3.x
chore(deps): update dependency supertest to v3.4.2
2019-03-17 10:48:28 +01:00
Renovate Bot
8dd1c28a25 fix(deps): update dependency handlebars to v4.1.1 2019-03-17 09:48:02 +00:00
Kamil Mysliwiec
18563ca0fe Merge pull request #1672 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.14.0
2019-03-17 10:47:59 +01:00
Kamil Mysliwiec
8c98870e21 Merge pull request #1675 from nestjs/renovate/docker-mysql-5.x
chore(deps): update mysql docker tag to v5.7.25
2019-03-17 10:47:42 +01:00
Kamil Mysliwiec
c07a467e62 Merge pull request #1668 from nestjs/renovate/fastify-static-0.x
chore(deps): update dependency fastify-static to v0.14.0
2019-03-17 10:46:19 +01:00
Kamil Mysliwiec
c286ceb4fc Merge pull request #1666 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.44
2019-03-17 10:46:11 +01:00
Kamil Mysliwiec
1d1b0ad9d0 Merge pull request #1663 from nestjs/renovate/pin-dependencies
fix(deps): pin dependency apollo-server-express to 2.4.8
2019-03-17 10:45:54 +01:00
Renovate Bot
32ac9d3762 fix(deps): update dependency class-validator to v0.9.1 2019-03-17 05:57:03 +00:00
Renovate Bot
87fdef9e53 fix(deps): update dependency apollo-server-express to v2.4.8 2019-03-17 04:48:45 +00:00
Renovate Bot
675124af1a fix(deps): update dependency amqp-connection-manager to v2.3.0 2019-03-17 03:44:05 +00:00
Renovate Bot
ca3ab408cf fix(deps): update dependency @nestjs/typeorm to v5.3.0 2019-03-17 03:43:57 +00:00
Renovate Bot
dc51260804 fix(deps): update dependency @nestjs/jwt to v0.3.0 2019-03-17 02:57:31 +00:00
Renovate Bot
e9affa9fb5 chore(deps): update mysql docker tag to v5.7.25 2019-03-17 01:01:06 +00:00
Renovate Bot
e47403e3b4 chore(deps): update dependency tslint to v5.14.0 2019-03-17 00:54:43 +00:00
Renovate Bot
f33c3edfe8 chore(deps): update dependency supertest to v3.4.2 2019-03-16 23:35:36 +00:00
Renovate Bot
5de0928c76 chore(deps): update dependency imports-loader to v0.8.0 2019-03-16 22:27:30 +00:00
Renovate Bot
43d658edd9 chore(deps): update dependency fastify-static to v0.14.0 2019-03-16 22:26:25 +00:00
Renovate Bot
bd74bfd347 chore(deps): update dependency @types/node to v8.10.44 2019-03-16 21:34:07 +00:00
Renovate Bot
d120b36f2c fix(deps): pin dependency apollo-server-express to 2.4.8 2019-03-16 21:32:48 +00:00
Kamil Myśliwiec
dec41760b6 deps(): update package-lock 2019-03-16 22:20:07 +01:00
Kamil Myśliwiec
dd1be8d448 Merge branch 'master' of https://github.com/nestjs/nest 2019-03-16 21:40:39 +01:00
Kamil Myśliwiec
28344d735c deps(): update package-lock.json files 2019-03-16 21:39:30 +01:00
Kamil Mysliwiec
8e2f64d9b7 Merge pull request #1659 from BrunnerLivio/6.0.0-next
test(@nestjs/core): Check lifecycle hook order
2019-03-16 21:23:24 +01:00
Kamil Myśliwiec
af175229e4 deps(): update @nestjs/graphql dep 2019-03-16 20:28:20 +01:00
Kamil Mysliwiec
7695de1f0a Merge pull request #1650 from nestjs/renovate/nodemon-1.x
chore(deps): update dependency nodemon to v1.18.10
2019-03-16 20:26:03 +01:00
Renovate Bot
e7f785b7c4 chore(deps): update dependency nodemon to v1.18.10 2019-03-16 19:19:04 +00:00
Kamil Mysliwiec
590f1e7646 Merge pull request #1661 from nestjs/renovate/tsconfig-paths-3.x
chore(deps): update dependency tsconfig-paths to v3.8.0
2019-03-16 20:17:37 +01:00
Kamil Mysliwiec
cb0435d3ca Merge pull request #1660 from nestjs/renovate/prettier-1.x
chore(deps): update dependency prettier to v1.16.4
2019-03-16 20:17:16 +01:00
Kamil Mysliwiec
dadc1e32fe Merge pull request #1648 from nestjs/renovate/pin-dependencies
fix(deps): pin dependencies
2019-03-16 20:16:57 +01:00
Renovate Bot
5a2dd18645 chore(deps): update dependency tsconfig-paths to v3.8.0 2019-03-16 19:13:34 +00:00
Renovate Bot
585d6bf321 chore(deps): update dependency prettier to v1.16.4 2019-03-16 19:13:28 +00:00
Renovate Bot
22533e9641 fix(deps): pin dependencies 2019-03-16 19:12:13 +00:00
Kamil Mysliwiec
d9bbe7d756 Merge pull request #1649 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.1
2019-03-16 20:03:56 +01:00
Kamil Mysliwiec
6858710e11 Merge pull request #1652 from nestjs/renovate/cli-color-1.x
fix(deps): update dependency cli-color to v1.4.0
2019-03-16 20:03:37 +01:00
Kamil Mysliwiec
1579ac75f9 Merge pull request #1656 from nestjs/renovate/graphql-tools-4.x
fix(deps): update dependency graphql-tools to v4.0.4
2019-03-16 20:03:23 +01:00
Renovate Bot
3949e97b5b fix(deps): update dependency graphql-tools to v4.0.4 2019-03-16 19:00:38 +00:00
Renovate Bot
1a2cfd9d8a fix(deps): update dependency cli-color to v1.4.0 2019-03-16 19:00:13 +00:00
Renovate Bot
920daa3887 chore(deps): update dependency @types/node to v10.14.1 2019-03-16 18:58:12 +00:00
Kamil Myśliwiec
fddab68bec chore(): publish 6.0.0 release 2019-03-16 19:47:44 +01:00
Kamil Myśliwiec
9e9b8b95bd chore(@nestjs) publish v6.0.0 release 2019-03-16 19:46:55 +01:00
Kamil Myśliwiec
161bbd8f5d chore(): update deps, pin deps, bump peerDeps, fix tests 2019-03-16 19:45:15 +01:00
Livio
19819f4669 test(@nestjs/core): Check lifecycle hook order 2019-03-16 19:19:56 +01:00
Kamil Mysliwiec
3bbba1cfd1 Merge pull request #1486 from nestjs/6.0.0-next
release(): major 6.0.0 release
2019-03-16 18:57:44 +01:00
Kamil Myśliwiec
ad75ce974c improvement(): generate random context id for middleware 2019-03-16 14:58:41 +01:00
Kamil Myśliwiec
14768044e9 lint(): fix linter issues, set callable types 2019-03-15 17:17:16 +01:00
Kamil Myśliwiec
98cea88f32 refactor(core): remove useless typings app context 2019-03-15 16:49:49 +01:00
Kamil Myśliwiec
07da047801 bugfix(): fix invalid middleware instantiation 2019-03-15 16:48:05 +01:00
Kamil Myśliwiec
7818a4de18 merge(): resolve conflicts 2019-03-15 14:30:08 +01:00
Kamil Myśliwiec
6893bd68bf integration(): add middleware integration test 2019-03-14 15:56:21 +01:00
Kamil Myśliwiec
3dc5b374ff chore(): publish 5.7.4 release 2019-03-09 14:38:29 +01:00
Kamil Myśliwiec
16f4611d0c chore(@nestjs) publish v5.7.4 release 2019-03-09 14:37:51 +01:00
Kamil Myśliwiec
6d798d5c18 refactor(): adjust coding style 2019-03-09 14:35:18 +01:00
Kamil Myśliwiec
3fa6625be2 Merge branch 'ynunez-master' 2019-03-09 14:32:35 +01:00
Kamil Myśliwiec
4c22feb289 refactor(): adjust coding style 2019-03-09 14:32:12 +01:00
Kamil Myśliwiec
89e5a1de49 Merge branch 'master' of https://github.com/ynunez/nest into ynunez-master 2019-03-09 14:31:40 +01:00
Kamil Myśliwiec
251a8a2dc5 Merge branch 'sincraianul-fix-class-validator-response' 2019-03-09 14:29:29 +01:00
Kamil Myśliwiec
46d930f48a refactor(): adjust coding style 2019-03-09 14:28:01 +01:00
Kamil Myśliwiec
5f0829d5db Merge branch 'fix-class-validator-response' of https://github.com/sincraianul/nest into sincraianul-fix-class-validator-response 2019-03-09 14:26:00 +01:00
Kamil Mysliwiec
9265743035 Merge pull request #1624 from murbanowicz/feature/add-missing-isoptional
sample(): add missing isOptional() to optional field in sample-23
2019-03-09 14:16:23 +01:00
Kamil Myśliwiec
cec89d285d bugfix(): fix fastify adapter query parameters 2019-03-09 14:04:35 +01:00
Marek Urbanowicz
3a75b00db0 Add missing isOptional on optional field in Sample-23 2019-03-08 20:15:08 +01:00
Andrei Sîncrăian
d6b8e1f514 bugfix(common): prevent exception body override if message is an array 2019-03-08 16:22:49 +02:00
Kamil Myśliwiec
00ddc0aeeb chore(@nestjs) publish v6.0.0-rc.1 release 2019-03-05 13:09:39 +01:00
Kamil Myśliwiec
3935279878 Merge branch 'BrunnerLivio-fix/process-memory-leak' into 6.0.0-next 2019-03-05 12:42:46 +01:00
Kamil Myśliwiec
c4b92e9b16 style(): adjust coding style 2019-03-05 12:40:13 +01:00
Kamil Myśliwiec
91500ba35e Merge branch 'fix/process-memory-leak' of https://github.com/BrunnerLivio/nest into BrunnerLivio-fix/process-memory-leak 2019-03-05 12:33:12 +01:00
Livio
83ec279f85 fix(@nestjs/core): Fix process.on memory leak bug in e2e testing 2019-03-04 12:56:48 +01:00
Kamil Myśliwiec
9f1a32cbfd refactor(): remove redundancy, extract handleEvent 2019-03-01 10:11:19 +01:00
Kamil Mysliwiec
d8c7ba3285 Merge pull request #1569 from kibertoad/chore/update-test-dependencies
build(test/linting) update test/linting dependencies
2019-02-28 14:26:42 +01:00
Kamil Mysliwiec
611924c4b2 Merge pull request #1572 from MaxWithU/patch-1
sample(): update docker-compose.yml
2019-02-28 14:03:39 +01:00
Yoel Nunez
a03b4b1f55 Merge branch 'master' of github.com:ynunez/nest 2019-02-26 20:40:32 -06:00
Yoel Nunez
03377180a7 bugfix(core): fixed basePath issue with routes-resolver 2019-02-26 20:40:15 -06:00
Yoel Nunez
f54f123953 fixed basePath issue with routes-resolver# 2019-02-26 20:29:43 -06:00
Kamil Myśliwiec
0cc1c4ebea sample(): use custom scalar interface 2019-02-22 12:46:13 +01:00
Kamil Myśliwiec
fe316b864e chore(): publish 6.0.0-alpha.4 release 2019-02-22 10:55:44 +01:00
Kamil Myśliwiec
c961d8559d resolve conflicts 2019-02-21 15:05:51 +01:00
Kamil Myśliwiec
20cbbaf296 chore(@nestjs) publish v5.7.3 release 2019-02-21 11:38:30 +01:00
Kamil Myśliwiec
f95b5ae6d1 Merge branch 'BrunnerLivio-fix/unknown-dependency-ex-symbol' 2019-02-21 11:10:15 +01:00
Kamil Myśliwiec
40fb55abae bugfix(core): add missing isSymbol check 2019-02-21 11:09:52 +01:00
Kamil Myśliwiec
b89651f5e6 Merge branch 'fix/unknown-dependency-ex-symbol' of https://github.com/BrunnerLivio/nest into BrunnerLivio-fix/unknown-dependency-ex-symbol 2019-02-21 11:07:38 +01:00
Kamil Myśliwiec
276f696a21 hotfix(): update package-lock 2019-02-21 09:33:32 +01:00
Kamil Myśliwiec
449989e857 hotfix(): bump grpc version 2019-02-21 09:28:34 +01:00
Kamil Myśliwiec
404afdca93 merge(): resolve conflicts 2019-02-21 09:06:25 +01:00
Kamil Myśliwiec
13e5bf6205 tests(): fix broken unit tests (rmq client) 2019-02-20 23:54:51 +01:00
Kamil Mysliwiec
6cea5928de Merge pull request #1576 from nestjs/bugfix/client-rmq
bugfix(microservices): remove reply_queue in rabbitmq client
2019-02-20 23:42:16 +01:00
Kamil Myśliwiec
b6406c639c tests(): fix broken unit tests (clients module) 2019-02-20 23:28:48 +01:00
Kamil Myśliwiec
4a44d16211 bugfix(microservices): remove reply_queue in rabbitmq client (use direct one) 2019-02-20 19:57:53 +01:00
Kamil Myśliwiec
af62405274 bugfix(microservices): fix rabbit mq client (using reply to queue) 2019-02-20 17:10:32 +01:00
Kamil Myśliwiec
8a94279cd7 refactor(microservices): simplify clients module 2019-02-20 17:10:04 +01:00
Kamil Myśliwiec
218ab96b0a bugfix(core): fix hanging process (add process.exit - lifecycle hook) 2019-02-20 17:09:16 +01:00
Kamil Myśliwiec
758257291b feature(): add typings to the provider interface 2019-02-20 17:08:31 +01:00
Kamil Myśliwiec
251fddd005 tests(): add clients module & reflector unit tests 2019-02-19 21:24:49 +01:00
Kamil Myśliwiec
a103dd27cb bugfix(): fix broken unit tests (invalid import & typing) 2019-02-19 21:07:58 +01:00
Kamil Myśliwiec
edf3ff3c9d bugfix(common): fix invalid http module interfaces & options 2019-02-19 21:07:38 +01:00
Kamil Myśliwiec
e2cb7ee8a3 feature(microservices): add clients module (factory abstraction) 2019-02-19 20:54:56 +01:00
Max Chen
f58c5116f5 Update docker-compose.yml 2019-02-19 17:18:52 +08:00
Kamil Mysliwiec
4fcc3731e1 Merge pull request #1545 from zuohuadong/patch-2
chore(readme_zh): add qq groups
2019-02-19 09:41:21 +01:00
Max Chen
ff80e52501 Update docker-compose.yml
latest mysql image can't access login
2019-02-19 16:16:38 +08:00
Igor Savin
a9f38fab03 build(vulnerabilities) update additional entries in package-lock to fix 8 additional vulnerabilities 2019-02-18 15:02:02 +01:00
Igor Savin
be9793c160 build(test/linting) update test/linting dependencies. Use new husky configuration syntax 2019-02-18 14:49:01 +01:00
Kamil Mysliwiec
c32697b414 Merge pull request #1560 from kibertoad/chore/update-sinon
build(sinon): update sinon and related dependencies
2019-02-18 14:10:14 +01:00
Kamil Mysliwiec
5c011a6328 Merge pull request #1561 from kibertoad/chore/uptodate-node-versions
ci(node): fix compatibility with Node 11 and execute tests on it in CI
2019-02-18 14:07:23 +01:00
Kamil Mysliwiec
414925e2f0 Update CONTRIBUTING.md 2019-02-17 13:48:31 +01:00
Kamil Myśliwiec
a5d3ce5070 test(graphql): add type-graphql intergration test 2019-02-17 12:52:19 +01:00
Kamil Myśliwiec
b80c33aa55 refactor(): update typings, code style update, remove typo 2019-02-17 10:57:37 +01:00
Livio
3261bedb1a fix(@nestjs/core): Display Symbol in UnknownDependencyException
Fixes #1551
2019-02-16 15:51:00 +01:00
Igor Savin
4930974042 build(sinon) fix more TypeScript compilation errors 2019-02-14 17:38:53 +01:00
Igor Savin
72b84ec97c build(sinon) fix more TypeScript compilation errors 2019-02-14 17:29:53 +01:00
Igor Savin
82bb7eff71 build(sinon) fix more TypeScript compilation errors 2019-02-14 17:22:09 +01:00
Igor Savin
2e75680f3c build(sinon) fix more TypeScript compilation errors 2019-02-14 17:13:26 +01:00
Igor Savin
d153872640 build(sinon) fix more TypeScript compilation errors 2019-02-14 17:04:58 +01:00
Igor Savin
98b81598e6 ci(node) commit updated package-lock.json 2019-02-14 17:03:24 +01:00
Igor Savin
059eba49af ci(node) update package-lock.json 2019-02-14 16:58:55 +01:00
Igor Savin
f801ad8214 build(sinon) fix more TypeScript compilation errors 2019-02-14 16:57:07 +01:00
Igor Savin
8b32bc61e4 ci(node) use gRPC version compatible with Node 11 2019-02-14 16:53:26 +01:00
Igor Savin
bd8705790e build(sinon) fix TypeScript compilation 2019-02-14 16:49:49 +01:00
Igor Savin
27d1c0fa7d ci(node) remove changes from wrong branch 2019-02-14 16:43:05 +01:00
Igor Savin
df538d5025 build(sinon) fix TypeScript compilation 2019-02-14 16:39:02 +01:00
Igor Savin
fc85b32be6 ci(node) execute tests in CI with Node 11 instead of Node 9 2019-02-14 16:15:28 +01:00
Igor Savin
8c03d84793 build(sinon) update sinon and related dependencies 2019-02-14 16:09:16 +01:00
Kamil Myśliwiec
7c82521e54 feature(): add debug and verbose to the logger service interface 2019-02-11 14:52:10 +01:00
huadong zuo
69dfb3d03b chore(readme_zh) add qq group 2019-02-11 12:49:38 +08:00
Kamil Myśliwiec
1714b51375 feature(): improve error messages (missing @Controller() decorator) 2019-02-08 20:11:33 +01:00
Kamil Myśliwiec
0e788fd3db chore(): publish 5.7.2 release 2019-02-08 18:04:34 +01:00
Kamil Myśliwiec
bf26d311d6 chore(@nestjs) publish v5.7.2 release 2019-02-08 18:03:01 +01:00
Kamil Myśliwiec
cb1e0bcd82 feature(): add scope option to the controller decorator 2019-02-08 17:19:55 +01:00
Kamil Mysliwiec
a975293d2e Update Readme.md 2019-02-08 14:46:16 +01:00
Kamil Myśliwiec
6ce05e117c chore(): publish 5.7.1 patch release 2019-02-08 10:46:52 +01:00
Kamil Myśliwiec
3b681a8ff0 chore(@nestjs) publish v5.7.1 release 2019-02-08 10:45:56 +01:00
Kamil Myśliwiec
b2b5cb1005 fix(): circular dependency (barrel import fix) 2019-02-07 18:23:05 +01:00
Kamil Myśliwiec
f77ed908aa bugfix(): add missing file 2019-02-07 17:29:02 +01:00
Kamil Myśliwiec
c05490ea61 feature(): change ReflectMetadata to SetMetadta, add getAll 2019-02-07 17:12:12 +01:00
Kamil Myśliwiec
3ce50b7f90 Merge branch 'master' of https://github.com/nestjs/nest 2019-02-07 14:44:30 +01:00
Kamil Myśliwiec
3159c402a2 chore(): update gitignore 2019-02-07 14:44:22 +01:00
Kamil Myśliwiec
0518c3c215 chore(): publish 5.7.0 minor release 2019-02-05 14:11:53 +01:00
Kamil Myśliwiec
213be3645f chore(@nestjs) publish v5.7.0 release 2019-02-05 14:10:53 +01:00
Kamil Myśliwiec
b634e6182d Merge branch 'elyesbenabdelkader-feature/request-mapping-decorator' 2019-02-05 14:07:37 +01:00
Kamil Myśliwiec
36ce494f76 feature(): allow array in request mapping decorators 2019-02-05 14:00:49 +01:00
Kamil Myśliwiec
9bb6b15f42 Merge branch 'feature/request-mapping-decorator' of https://github.com/elyesbenabdelkader/nest into elyesbenabdelkader-feature/request-mapping-decorator 2019-02-05 13:50:12 +01:00
Kamil Myśliwiec
7c772b2fd2 Merge branch 'master' of https://github.com/nestjs/nest 2019-02-05 13:44:49 +01:00
Kamil Myśliwiec
7edf59841a Merge branch 'AlexDaSoul-bugfix/interceptors-stream' 2019-02-05 13:44:42 +01:00
Kamil Myśliwiec
0848eeb53f style(): remove redundant comment 2019-02-05 13:44:08 +01:00
Kamil Myśliwiec
7fa51c87e3 Merge branch 'bugfix/interceptors-stream' of https://github.com/AlexDaSoul/nest into AlexDaSoul-bugfix/interceptors-stream 2019-02-05 13:43:45 +01:00
Kamil Mysliwiec
bf04704e11 Merge pull request #1458 from flex/patch-1
bugfix(grpc): handle null value in the proto definition
2019-02-05 13:43:17 +01:00
Kamil Mysliwiec
b289daa83e Merge pull request #1514 from kiwikern/multiple-view-dirs
feature(core): allow for multiple view dirs in Express
2019-02-05 13:42:46 +01:00
Kamil Myśliwiec
843d16dfb8 test(integration): fix invalid expected response (gRPC) 2019-02-05 13:35:28 +01:00
Kamil Mysliwiec
233e7ad14f Merge pull request #1460 from apiel/master
enhancement(common): make logger output more customizable
2019-02-05 13:28:51 +01:00
Kim Kern
dbfa3a4caa feature(core): allow for multiple view dirs in Express
In Express, you can set a string or an array of string as
base view paths. The views are looked up in the order they occur in
the array. The ExpressAdapter only allowed for a single string, now it
accepts an array of strings as well.

closes #1513
2019-02-01 12:36:47 +01:00
Kamil Mysliwiec
93b3e0b313 Merge pull request #1494 from nestjs/renovate/nestjs-common-5.x
chore(): update dependency @nestjs/common to v5.6.2
2019-02-01 08:20:03 +01:00
Renovate Bot
7e93330162 Update dependency @nestjs/common to v5.6.2 2019-01-31 15:42:31 +00:00
Kamil Mysliwiec
8861f58bf5 Merge pull request #1491 from nestjs/renovate/configure
chore(): configure renovate
2019-01-31 16:22:42 +01:00
Renovate Bot
4edcaf87e8 Add renovate.json 2019-01-31 14:31:34 +00:00
Kamil Mysliwiec
7b96d2dbfb Update Readme.md 2019-01-31 13:04:38 +01:00
Kamil Mysliwiec
74a21208ff Update Readme.md 2019-01-31 13:04:03 +01:00
Kamil Mysliwiec
ad6dd43e04 Merge pull request #1416 from BrunnerLivio/refactor/lifecycle-hooks
refactor(core) extract lifecycle hooks
2019-01-30 23:08:52 +01:00
Kamil Myśliwiec
e4179eb380 enhancement() add loader function to load package utility 2019-01-30 23:07:34 +01:00
Alexandre Piel
8f66fd1321 make logger output more customizable 2019-01-21 09:28:47 +01:00
Livio
c735dc646d test(core): Add tests for lifecycle hooks 2019-01-20 14:09:17 +01:00
Livio
1022bad2fb refactor(core): Add barrel file for hooks 2019-01-20 14:09:17 +01:00
Livio
f5531822c3 feat(core): Add onApplicationShutdown hook 2019-01-20 14:09:12 +01:00
flex
40ce9e4a88 bugfix(grpc) Handle null value in proto definition 2019-01-19 02:00:45 +08:00
Kamil Myśliwiec
e019afa472 chore() publish 5.6.2 release 2019-01-16 23:36:04 +01:00
Kamil Myśliwiec
a32c7373cc chore() publish 5.6.2 release 2019-01-16 22:48:07 +01:00
Kamil Myśliwiec
79fc37f093 chore(@nestjs) publish v5.6.2 release 2019-01-16 22:45:26 +01:00
Kamil Myśliwiec
8eedff85bd chore() publish 5.6.1 release 2019-01-16 21:47:30 +01:00
Kamil Myśliwiec
159a947f1b chore(@nestjs) publish v5.6.1 release 2019-01-16 21:46:35 +01:00
Kamil Myśliwiec
5eee77ea20 Merge branch '5.6.0' 2019-01-16 21:39:08 +01:00
Kamil Myśliwiec
c90b8e3d07 chore() publish 5.6.0 release 2019-01-16 21:37:29 +01:00
Kamil Myśliwiec
acf97a2e1d chore(@nestjs) publish v5.6.0 release 2019-01-16 21:36:15 +01:00
Kamil Myśliwiec
84c156356b feature(websockets) support regexp in namespaces 2019-01-16 21:34:18 +01:00
Kamil Myśliwiec
9a3f760b6c bugfix(core) fix missing abstract type typing 2019-01-16 21:33:53 +01:00
Kamil Myśliwiec
d1ad94324b feature() support abstract classes in nest ctx 2019-01-16 21:15:29 +01:00
Kamil Myśliwiec
69fb434def Merge branch 'master' of https://github.com/nestjs/nest 2019-01-16 21:05:10 +01:00
Kamil Myśliwiec
c448e56611 chore() merge changes 2019-01-16 21:04:02 +01:00
Kamil Myśliwiec
b8e6553a06 Merge branch 'FionaLovett-validate-transform' into 5.6.0 2019-01-16 21:00:19 +01:00
Kamil Myśliwiec
6fc4826b30 Merge branch 'FionaLovett-validate-transform' 2019-01-16 20:59:29 +01:00
Kamil Myśliwiec
2f888d3abe refactor() adjust code style 2019-01-16 20:59:06 +01:00
Kamil Myśliwiec
0db05f62f1 Merge branch 'validate-transform' of https://github.com/FionaLovett/nest into FionaLovett-validate-transform 2019-01-16 20:55:36 +01:00
Kamil Mysliwiec
255ca7ef99 Merge pull request #1448 from caohuilin/patch-2
sample(mongoose) should await on create POST
2019-01-16 20:51:50 +01:00
Kamil Mysliwiec
6744a8648d Update Readme.md 2019-01-16 20:35:19 +01:00
Belinda Cao
7a0808ed5b Update cats.controller.ts 2019-01-15 09:57:06 +08:00
Kamil Mysliwiec
5940ec7d62 Merge pull request #1388 from hschiavone/grpc-server-max-received-and-send-message-length
feature(microservices) add server gRPC max received & message length options
2019-01-15 00:30:02 +01:00
Kamil Mysliwiec
535c881a95 Merge branch '5.6.0' into grpc-server-max-received-and-send-message-length 2019-01-15 00:29:17 +01:00
Kamil Mysliwiec
986ad4e746 Merge pull request #1424 from quaternion/master
bugfix(common) add missing axios provider in HttpModule.registerAsync
2019-01-15 00:26:41 +01:00
Kamil Myśliwiec
6204fe1a09 Merge branch 'anton-alation-feature/grpc-method-with-namespaces' into 5.6.0 2019-01-15 00:25:16 +01:00
Kamil Myśliwiec
3cb73111bf refactor() adjust code style 2019-01-15 00:23:18 +01:00
Kamil Mysliwiec
1b872d66b7 Update Readme.md 2019-01-15 00:12:24 +01:00
Kamil Myśliwiec
891de8eea8 Merge branch 'feature/grpc-method-with-namespaces' of https://github.com/anton-alation/nest into anton-alation-feature/grpc-method-with-namespaces 2019-01-15 00:03:29 +01:00
Kamil Myśliwiec
b0de7ce6f3 sample() update existing samples to 6.0.0 2019-01-15 00:02:34 +01:00
Kamil Mysliwiec
0f788efd0c Merge pull request #1441 from iblamefish/circular-dependency-message
bugfix(core) update URL for circular dependency in the error message
2019-01-14 23:17:34 +01:00
Kamil Mysliwiec
72491e7d62 Merge pull request #1410 from BrunnerLivio/feature/discord-badge
chore() add discord badge to README.md
2019-01-14 22:06:00 +01:00
Clinton Montague
4b74c275bd bugfix(core) update url for circular dependency in error message
Fixes the url in INVALID_MODULE_MESSAGE

This closes #1369
2019-01-13 17:50:03 +00:00
Livio
3939a67bd3 chore: add discord badge to README.md 2019-01-07 18:48:39 +01:00
Elyes BA
ea700d8bb2 feature(core): allow Array in request mapping decorator
This feature was requested in the issue #1343. When routing, besides using a single string, you can
now use an array of strings in the Post, Get, ... decorators.
2019-01-05 21:37:50 +01:00
Andrew Nikolaev
1212c6034a fix(common): add missing axios provider in HttpModule.registerAsync 2019-01-05 18:46:53 +03:00
Kamil Myśliwiec
4f767080bf feature() add external context, microservices event patterns 2019-01-04 16:59:11 +01:00
Livio
c4eeb7bdb0 refactor(core): add comments to the hook caller functions 2019-01-03 11:04:23 +01:00
Livio
17fff02dbb refactor(core): Cleanup unneeded imports in nest-application-context 2019-01-03 11:01:57 +01:00
Livio
d30c64d2a6 refactor(core): Move call onModuleDestroyHook into dedicated file 2019-01-03 10:56:36 +01:00
Livio
6f6cf0189f refactor(core): Move callOnAppBootstrapHook into dedicated file 2019-01-03 10:55:38 +01:00
Livio
93536ac7c2 refactor(core): Move callModuleInitHook into dedicated file 2019-01-03 10:47:11 +01:00
Fiona Lovett
94679b2d79 feature(common): add transformOptions to ValidationPipeOptions
allows plainToClass to expose class properties to defined groups as per issue #1374
2019-01-02 20:52:29 +01:00
Fiona Lovett
83fc4c3bc4 feature(common): add transformOptions to ValidationPipeOptions
allows plainToClass to expose class properties to defined groups as per issue #1374
2019-01-02 20:07:50 +01:00
Fiona Lovett
69f2f3dd0b feature(common): add transformOptions to ValidationPipeOptions
allows plainToClass to expose class properties to defined groups as per issue #1374
2019-01-02 19:56:33 +01:00
Fiona Lovett
b49a9a1098 feature(common): add transformOptions to ValidationPipeOptions
allows plainToClass to expose class properties to defined groups as per issue #1374
2019-01-02 17:53:46 +01:00
Kamil Myśliwiec
f0e9b40e2c chore() publish alpha version (next) 2018-12-29 14:02:22 +01:00
Kamil Myśliwiec
aaad9ae742 fix() adjust router proxy callback type (next function) 2018-12-29 13:46:20 +01:00
Kamil Myśliwiec
443eccc11e fix() adjust router proxy callback type (next function) 2018-12-29 13:45:37 +01:00
Kamil Mysliwiec
385dabbaae Merge pull request #1406 from nestjs/feature/middleware-api
refactor() simplify middleware API
2018-12-29 13:43:29 +01:00
Kamil Mysliwiec
58d407be6b Merge pull request #1405 from nestjs/feature/di-scopes
feature() dependency injection scopes (transient/per-request)
2018-12-29 13:43:02 +01:00
Kamil Myśliwiec
5fc7999813 tests(core) add cached metadata checks (injector) 2018-12-29 12:55:53 +01:00
Kamil Mysliwiec
856141de55 Merge pull request #1329 from nestjs/feature/extract-http
feature() extract platforms (express/fastify/socket.io/ws)
2018-12-29 10:46:47 +01:00
Kamil Myśliwiec
2a5e22e2c6 scripts() fix prepare script (install all deps) 2018-12-29 10:21:18 +01:00
Hugo Schiavone
84e4bdef1e fix getOptionsProp method 2018-12-27 18:25:43 +01:00
Hugo Schiavone
da110d01dd use getOptionsProp method on grcp max_send_message_length & max_receive_message_length implementation 2018-12-27 12:24:38 +01:00
Kamil Myśliwiec
00554ee913 tests(core) update middleware builder/module unit tests 2018-12-24 15:21:16 +01:00
Kamil Myśliwiec
87c1ef35b0 sample() update samples 2018-12-24 15:20:55 +01:00
Kamil Myśliwiec
4ca914e0c7 Merge branch 'feature/di-scopes' into feature/middleware-api 2018-12-24 15:08:22 +01:00
Kamil Myśliwiec
0e258842a6 cleanup(core) remove async hooks module 2018-12-24 15:06:34 +01:00
Kamil Myśliwiec
3da97c684c refactor(common/core) simplify middleware interface 2018-12-24 15:01:04 +01:00
Kamil Myśliwiec
06dec9a897 feature() transient/request scope with circular deps 2018-12-24 14:45:32 +01:00
alexdasoul
d9434a2a9f bugfix(core) Interceptors toPromise is break Observable stream 2018-12-21 14:42:15 +03:00
Kamil Myśliwiec
ed96171f38 chore() resolve conflicts (merge) 2018-12-21 10:19:24 +01:00
Hugo Schiavone
bd3222ad62 implement server grpc max received & send message length option 2018-12-20 10:10:16 +01:00
Kamil Myśliwiec
2e992d39ea tests() fix unit tests, update enhancers 2018-12-18 16:51:47 +01:00
Kamil Myśliwiec
cb062be24f feature() wip DI scopes 2018-12-17 10:13:49 +01:00
Kamil Myśliwiec
5352bba8f7 feature() fix request scoped 2018-12-15 23:02:04 +01:00
Kamil Myśliwiec
5cd3448670 feature() fix request scoped 2018-12-15 23:01:48 +01:00
Kamil Myśliwiec
17e0ae6c63 feature() wip: DI scopes 2018-12-15 21:22:36 +01:00
Kamil Myśliwiec
6071ea80c8 feature(common) enhance internal logger 2018-12-13 11:15:51 +01:00
Anton Repin
595bc988ec GRPC Server test stub updated to match getServiceNames new output 2018-12-12 15:50:10 -08:00
Kamil Myśliwiec
53687ba46a feature(websockets) extract web sockets drivers 2018-12-12 23:35:27 +01:00
Anton Repin
ea26100ec3 GRPC server tests updated:
- Added package recursive search test for support of proto-namespaces
- Updated tests which were testing single level proto structure
2018-12-12 13:27:06 -08:00
Kamil Mysliwiec
ff2e310a18 Update cats.controller.ts 2018-12-12 14:24:41 +01:00
Anton Repin
8d41edadce GRPC Server namespaces support added for loaded proto descriptors
- Recursive scan of descriptors object
- Service names with namespaces concatenated with dot-syntax
2018-12-11 23:37:38 -08:00
Kamil Myśliwiec
03b0cf838a chore() merge latest changes (resolve conflicts) 2018-12-10 22:57:45 +01:00
Kamil Mysliwiec
15bdbacc4b Merge pull request #1328 from nestjs/bugfix/interceptor-flow
bugfix(core) fix interceptors execution flow
2018-12-10 22:40:02 +01:00
Kamil Mysliwiec
f96b2a8c9b Merge pull request #1161 from nestjs/refactor/microservices
refactor(microservices) refactor, improvements, use es6 map
2018-12-10 22:38:50 +01:00
Kamil Myśliwiec
4ec8e3436c test(microservices) fix unit tests 2018-12-10 22:33:48 +01:00
Kamil Myśliwiec
4796023e02 chore() resolve conflicts 2018-12-10 22:03:06 +01:00
Kamil Myśliwiec
30b6c50dd8 merge() resolve conflicts 2018-12-10 21:48:06 +01:00
Kamil Myśliwiec
ef2147d697 chore(@nestjs) publish v5.5.0 release 2018-12-09 14:16:11 +01:00
Kamil Myśliwiec
438e662352 bugfix(common) inconsistent microservice config #1352 2018-12-09 14:14:54 +01:00
Kamil Mysliwiec
17b0100c51 Merge pull request #1349 from nestjs/5.5.0
chore() 5.5.0 minor release
2018-12-09 14:13:25 +01:00
Kamil Mysliwiec
8bce796ad7 Merge pull request #1271 from grin0c/another-proto-loader
feature(microservices): added option for proto-loader (grpc)
2018-12-06 19:45:47 +01:00
Kamil Mysliwiec
6a54900df8 Merge pull request #1344 from nestjs/bugfix/1339-exceptions
bugfix(common): custom exception body #1339
2018-12-06 19:45:21 +01:00
Kamil Mysliwiec
63e3940c02 Merge pull request #1345 from nestjs/bugfix/1338-injection-scopes
bugfix(common) invalid metadata inheritance with custom providers
2018-12-06 19:45:10 +01:00
Kamil Mysliwiec
d25e6c713a Merge pull request #1346 from nestjs/bugfix/1285-throw-error
bugfix(ws/microservices): add catchError() to observables
2018-12-06 19:44:59 +01:00
Kamil Mysliwiec
ed37b9138d Merge pull request #1347 from nestjs/feature/1257-http-async
feature(common) add async support (HttpModule) and extraProviders
2018-12-06 19:44:39 +01:00
Kamil Mysliwiec
b632f60a9e Merge pull request #1348 from nestjs/feature/1267-validation-factory
feature(common) add validation error factory (ValidationPipe)
2018-12-06 19:44:24 +01:00
Kamil Myśliwiec
ee9d31671c feature(common) add validation error factory (ValidationPipe) 2018-12-06 18:33:22 +01:00
Kamil Myśliwiec
9fa12b43f2 fix(common) add missing interfaces reexport (http) 2018-12-06 14:16:39 +01:00
Kamil Myśliwiec
e66d72f904 feature(common) add async support (HttpModule) and extraProviders (cache/http) 2018-12-06 14:15:16 +01:00
Kamil Myśliwiec
efb367e65c bugfix(ws/microservices): add catchError() to observables 2018-12-06 11:47:14 +01:00
Kamil Myśliwiec
fe96bf67bc bugfix(common) invalid metadata inheritance with custom providers 2018-12-06 09:08:33 +01:00
Kamil Myśliwiec
411db0c3ff bugfix(common): custom exception body #1339 2018-12-05 23:31:13 +01:00
Kamil Myśliwiec
42e1e79b31 test(): fix e2e tests 2018-12-05 23:08:03 +01:00
Kamil Myśliwiec
a3fbb8816e feature() extract fastify, multer, cors, adapters 2018-12-01 21:02:36 +01:00
Kamil Myśliwiec
bc4a8a556c feature(core/common) extract HTTP adapters (express/fastify) 2018-11-30 16:48:04 +01:00
Kamil Myśliwiec
ead8d55538 refactor: fix typings (tuples, binding checks) 2018-11-30 14:52:01 +01:00
Kamil Myśliwiec
e3cbab771a merge: resolve conflicts 2018-11-30 14:28:00 +01:00
Kamil Mysliwiec
df9c8215ca Merge pull request #1322 from nestjs/refactor/remove-deprecations
refactor: remove deprecations, update to TypeScript 3.0+
2018-11-30 14:09:24 +01:00
Kamil Myśliwiec
af923ced97 lint() update ts-lint package (ts compatibility) 2018-11-30 14:04:02 +01:00
Kamil Myśliwiec
ee9360dcff fix: quick fix 2018-11-30 14:01:40 +01:00
Kamil Myśliwiec
2c87615f8e ci() fix travis build (update lock file) 2018-11-30 13:59:54 +01:00
Kamil Myśliwiec
7fd9849a6c merge: resolve conflicts 2018-11-30 13:47:00 +01:00
Kamil Mysliwiec
1c320071aa Merge pull request #1312 from nestjs/refactor/injector
refactor: general refactor (explicit types, generics, components)
2018-11-30 13:43:51 +01:00
Kamil Myśliwiec
93bdb62df2 merge: resolve conflicts 2018-11-30 13:41:53 +01:00
Kamil Mysliwiec
c6ec8878e0 Merge pull request #1206 from jbpionnier/refactor_simplified_if
refactor() simplified if (less checks)
2018-11-30 13:31:27 +01:00
Kamil Myśliwiec
db94dc54bf chore(): publish 5.4.1 release 2018-11-30 13:06:41 +01:00
Kamil Myśliwiec
72577136a7 chore(@nestjs) publish v5.4.1 release 2018-11-30 13:00:27 +01:00
Kamil Myśliwiec
6fac25bde0 chore(): update package.json 2018-11-30 12:59:16 +01:00
Kamil Myśliwiec
25bc5e8893 chore() format package.json 2018-11-30 12:10:43 +01:00
Kamil Myśliwiec
0a158798a9 tests(common) update file interceptors tests 2018-11-30 11:56:45 +01:00
Kamil Myśliwiec
42adbab0b5 Merge branch '5.4.1' of https://github.com/nestjs/nest into 5.4.1 2018-11-30 11:54:01 +01:00
Kamil Myśliwiec
df958c9e2b enhancement(common) make multer instance protected 2018-11-30 11:53:53 +01:00
Kamil Mysliwiec
bc9aa8cdec Merge pull request #1325 from nestjs/improvement/application-ref
improvement(core) use application ref host instead of http ref
2018-11-30 11:52:26 +01:00
Kamil Mysliwiec
6b97b11665 Merge pull request #1324 from nestjs/bugfix/928-direct-instance
bugfix(core) use direct class instance
2018-11-30 11:50:26 +01:00
Kamil Mysliwiec
58d7300098 Merge pull request #1248 from andrew-yustyk/issue/1246
fix(core/common): allow to use symbol token in the module exports
2018-11-30 11:49:20 +01:00
Kamil Myśliwiec
ae4e7d3b12 test(core) fix broken unit tests (interceptors) 2018-11-30 11:06:59 +01:00
Kamil Myśliwiec
d534c47455 sample() update examples with new API 2018-11-30 10:13:57 +01:00
Kamil Myśliwiec
cfa96f08fa bugfix(core) fix interceptors execution flow 2018-11-30 10:08:13 +01:00
Kamil Myśliwiec
f71613a79f Merge branch 'master' of https://github.com/nestjs/nest 2018-11-29 23:25:44 +01:00
Kamil Myśliwiec
35053d093a refactor(): remove trailing commas 2018-11-29 23:24:25 +01:00
Kamil Myśliwiec
6f85ea4f12 improvement(core) use application ref host instead of http ref 2018-11-29 23:14:11 +01:00
Kamil Mysliwiec
dd882ac1a2 Merge pull request #1287 from dzzzzzy/patch-1
docs(readme) add communication groups for Chinese developers
2018-11-29 14:21:37 +01:00
Kamil Mysliwiec
4f8d9fe694 Merge pull request #1314 from rafalschmidt97/contributing-comments-fix
docs(contributing) fix comments issues in lists
2018-11-29 14:19:26 +01:00
Kamil Myśliwiec
5a6f64a51e bugfix(core) use direct class instance 2018-11-29 14:11:31 +01:00
Kamil Myśliwiec
5588470479 refactor: remove deprecations and update to typescript 3.0 2018-11-28 23:59:57 +01:00
Kamil Myśliwiec
773d062e41 feature(core) add HttpServer typings 2018-11-28 23:27:54 +01:00
Kamil Myśliwiec
1cac0a99fd feature: more typings, refactor 2018-11-28 23:08:27 +01:00
Rafał Schmidt
7e07ef3abb docs(contributing) fix comments issues in lists 2018-11-25 18:15:10 +01:00
Kamil Myśliwiec
0b23422ab1 refactor: reduce implicit types 2018-11-24 17:28:28 +01:00
Kamil Myśliwiec
1cb3ed7f87 refactor: general refactor reorganize, rename things 2018-11-24 16:01:29 +01:00
bingoyao
4a5ce3b04d Update readme_zh.md
Add more state about Chinese developer communication channel.
2018-11-21 12:03:45 +08:00
Jean-Baptiste Pionnier
3a297530d8 Merge branch 'master' of github.com:nestjs/nest into refactor_simplified_if 2018-11-16 11:41:22 +01:00
bingoyao
3a84bfb7e8 Add communication groups for Chinese developers
Chinese developers are growing, and in order to allow Chinese developers to communicate and share with each other, I have established a communication group.
2018-11-14 18:55:25 +08:00
Kamil Mysliwiec
385071ba6d Update Readme.md 2018-11-10 22:29:49 +01:00
Kamil Myśliwiec
bf1a97be36 test(nestjs) bump test coverage 2018-11-10 21:54:42 +01:00
Aleksey Tsvetkov
be40001511 fixed protoLoader option 2018-11-08 11:38:56 +03:00
Aleksey Tsvetkov
4b55261aeb feat(client-grpc): added protoLoader option for grpc client 2018-11-08 11:32:32 +03:00
Aleksey Tsvetkov
1bd70484e8 feat(grpc): added option for proto-loader 2018-11-07 14:01:36 +03:00
Kamil Myśliwiec
a95b3d6048 Merge branch 'master' of https://github.com/nestjs/nest 2018-11-03 17:02:57 +01:00
Kamil Myśliwiec
1f8c84d19b test(nestjs) increase test coverage 2018-11-03 17:00:55 +01:00
Kamil Mysliwiec
7c644d989e Update Readme.md 2018-11-03 12:29:38 +01:00
Kamil Mysliwiec
cebb6267f2 Update Readme.md 2018-11-03 12:28:17 +01:00
Andrew Yustyk
644b2c1745 fix(core/common): allow to use symbol token in the module exports
Symbol token can be used in the exports section as well as the string token.

Closes #1246
2018-10-31 13:26:48 +02:00
Jean-Baptiste Pionnier
0d29cd7f96 Merge branch 'master' of github.com:jbpionnier/nest into refactor_simplified_if 2018-10-22 07:49:40 +02:00
Kamil Myśliwiec
47f0fa0ab5 chore(@nestjs) publish v5.4.0 release 2018-10-19 14:21:48 +02:00
Kamil Myśliwiec
9be35b4c10 tests(microservices) fix server-rmq unit tests 2018-10-19 14:08:19 +02:00
Kamil Myśliwiec
dd38a49508 Merge pull request #1215 from nestjs/5.4.0
chore() 5.4.0 minor release
2018-10-19 14:07:32 +02:00
Kamil Myśliwiec
b55ee078b2 Merge branch 'master' into 5.4.0 2018-10-19 14:07:23 +02:00
Kamil Myśliwiec
6eec6016a4 Merge pull request #1143 from BrunnerLivio/feature/print-context-injection-error
feature(core) add module context name to UnknownDependenciesMessage
2018-10-19 13:55:22 +02:00
Kamil Myśliwiec
9b799ba3c1 Merge pull request #1170 from nestjs/AlariCode-feature/rmq-transport
feature(microservices) RabbitMQ support
2018-10-19 13:55:08 +02:00
Kamil Myśliwiec
a2ed524824 Merge pull request #1172 from nestjs/feature/property-injection
feature(core) property based injection (composition)
2018-10-19 13:54:17 +02:00
Kamil Myśliwiec
82bf25b707 Merge pull request #1175 from nestjs/feature/nats-queue
feature(microservices) add a few options to the nats strategy + general refactor
2018-10-19 13:54:04 +02:00
Kamil Myśliwiec
ffea148892 Merge pull request #1214 from nestjs/feature/update-axios
feature(common) update axios dependency
2018-10-19 13:53:45 +02:00
Kamil Myśliwiec
b0026d8cc1 style(microservices) remove lint issues 2018-10-19 13:38:12 +02:00
Kamil Myśliwiec
313e22632b feature(core) add dynamic properties resolution 2018-10-19 13:37:00 +02:00
Kamil Myśliwiec
a299b12ad5 feature(common) update axios dependency 2018-10-19 13:23:46 +02:00
Kamil Myśliwiec
6635d2cbe1 Merge branch '5.4.0' into feature/property-injection 2018-10-19 13:22:10 +02:00
Kamil Myśliwiec
9972649770 bugfix: fix package-lock.json file 2018-10-19 13:16:45 +02:00
Kamil Myśliwiec
92cd57a19b Merge pull request #1163 from nestjs/feature/dynamic-create
feature(core) instantiate class dynamically (ModuleRef)
2018-10-19 13:16:17 +02:00
Kamil Myśliwiec
6ac9968ec0 Merge branch 'feature/property-injection' into feature/dynamic-create 2018-10-19 13:16:06 +02:00
Kamil Myśliwiec
9210dc1318 Merge pull request #1208 from jbpionnier/feat/accept_export_abstract_class
bugfix(common) accept export abstract class
2018-10-19 13:12:41 +02:00
Kamil Myśliwiec
a850d5d322 bugfix(microservices) fix issues with deps resolution 2018-10-19 13:01:54 +02:00
Kamil Myśliwiec
b0e4383e6e merge: resolve conflicts 2018-10-19 11:39:15 +02:00
Kamil Myśliwiec
935aa704fc lint: update lint rules 2018-10-19 10:12:36 +02:00
Kamil Myśliwiec
f0512d2a26 chore(@nestjs) publish v5.3.15 release 2018-10-19 09:58:30 +02:00
Kamil Myśliwiec
6f9b242410 bugfix: fix incorrect dependencies, simplify relations 2018-10-19 09:55:50 +02:00
Jean-Baptiste Pionnier
e1a9643887 feat(common): accept export abstract class 2018-10-18 15:10:57 +02:00
Jean-Baptiste Pionnier
e1b8d3b411 refactor: simplified isString 2018-10-18 12:05:35 +02:00
Jean-Baptiste Pionnier
6db29c6e3d refactor: simplified isObject 2018-10-18 12:01:39 +02:00
Jean-Baptiste Pionnier
1f59ec3458 refactor: simplified validatePath 2018-10-18 11:58:49 +02:00
Jean-Baptiste Pionnier
ff3ef16d18 refactor: simplified isFunction 2018-10-18 11:55:11 +02:00
Jean-Baptiste Pionnier
41190d7546 refactor: simplified isEmpty 2018-10-18 11:52:12 +02:00
Kamil Myśliwiec
b03e36c692 chore(@nestjs) publish v5.3.14 release 2018-10-18 08:37:26 +02:00
Kamil Myśliwiec
2383cdb412 build: fix incorrect prepublish hook 2018-10-18 00:12:05 +02:00
Kamil Myśliwiec
e9433d0fb5 Merge branch 'master' of https://github.com/nestjs/nest 2018-10-18 00:05:15 +02:00
Kamil Myśliwiec
a78a31eff2 Merge pull request #1199 from jbpionnier/refactor/void_0_not_necessary
refactor: remove void 0 not necessary
2018-10-17 23:16:35 +02:00
Jean-Baptiste Pionnier
bd05652cbe refactor: remove void 0 not necessary 2018-10-17 23:05:24 +02:00
Kamil Myśliwiec
06d0f12169 feature(microservices) add a few options to the nats strategy 2018-10-06 15:02:55 +02:00
Kamil Myśliwiec
d49a265686 tests(integration) update test suite (property injection) 2018-10-06 12:50:04 +02:00
Kamil Myśliwiec
51b93e5306 feature(core) property based injection (composition) 2018-10-06 12:45:44 +02:00
Kamil Myśliwiec
e6dfef8480 content(integration) fix typo in sum-rmq spec 2018-10-05 22:43:06 +02:00
Kamil Myśliwiec
096336c243 bugfix(microservices) fix rabbit mq transport, code refactor, add tests 2018-10-05 22:42:35 +02:00
Kamil Myśliwiec
62e0283098 feature(core) instantiate class dynamically (ModuleRef) 2018-10-04 16:28:51 +02:00
Kamil Myśliwiec
91be484b83 refactor(microservices) partially fixed rabbitmq transport (+tests) 2018-10-03 23:26:52 +02:00
Kamil Myśliwiec
8ec7c5b31e chore: resolve conflicts (merge) 2018-10-03 22:31:25 +02:00
Kamil Myśliwiec
f802f94c0f refactor(microservices) refactor, improvements, use es6 map 2018-10-03 22:15:29 +02:00
Livio Brunner
4e943dbaae feature(core): Add module context name to UnknownDependenciesMessage 2018-10-02 12:07:14 +02:00
Anton
17c5044bae feature(microservices) added amqp-connection-manager 2018-09-09 09:44:51 +03:00
Anton
6099f9ec1b Merge branch 'master' into feature/rmq-transport 2018-09-08 08:48:16 +03:00
Anton
c5a752c7da Merge branch 'master' into feature/rmq-transport 2018-08-16 18:14:10 +03:00
Anton
f3a80ab7c5 feature(@nestjs/microservices) fixed tests 2018-08-11 15:32:54 +03:00
Anton
014a7c92af feature(@nestjs/microservices) Integration tests 2018-07-26 17:43:27 +03:00
Anton
4bfbb8b9dd feature(@nestjs/microservices) Fixed startAllMicroservicesAsync 2018-07-26 17:07:38 +03:00
Anton
e0d1364e45 feature(@nestjs/microservices) Added additional options and fixes 2018-07-20 18:01:21 +03:00
Anton
bb73598c4c Merge branch 'master' into feature/rmq-transport 2018-07-19 21:49:25 +03:00
Anton
76fea94965 Merge updates 2018-07-19 21:48:31 +03:00
Anton
75e16b40d0 Merge branch 'master' into feature/rmq-transport 2018-07-19 19:29:53 +03:00
Anton
adfa76981d Merge branch 'feature/rmq-transport' 2018-07-19 19:29:26 +03:00
Anton
e7e4bbdd57 feature(@nestjs/microservices) updated package-lock 2018-07-19 19:26:43 +03:00
Anton
6ce0e38951 feature(@nestjs/microservices) revert lock file to resolve conflicts 2018-07-19 19:20:20 +03:00
Anton
bcb6c5f69a feature(@nestjs/microservices) boost performance with correlationID 2018-07-18 12:37:06 +03:00
Anton
0ddc86ee88 test(@nestjs/microservices) tests for rqm transport 2018-07-17 18:52:49 +03:00
Anton
ffe4529018 Merge remote-tracking branch 'origin/feature/rmq-transport' into feature/rmq-transport 2018-07-08 08:31:24 +03:00
Anton
685dc33a56 feature(@nestjs/microservices) added rmq transport support 2018-07-08 08:30:55 +03:00
Anton
3da993e2df Added RMQ Client and Server 2018-07-07 23:33:18 +03:00
754 changed files with 48481 additions and 97838 deletions

5
.gitignore vendored
View File

@@ -26,6 +26,9 @@ yarn-error.log
# tests
/test
/benchmarks/memory
/coverage
/.nyc_output
build/config\.gypi
/packages/graphql
/benchmarks/memory
build/config\.gypi

View File

@@ -2,6 +2,10 @@
**/*.ts
*.ts
# definitions
!**/*.d.ts
!*.d.ts
# configuration
package-lock.json
tslint.json

View File

@@ -1,8 +1,8 @@
language: node_js
node_js:
- "8"
- "9"
- "10"
- "11"
cache:
directories:
- "node_modules"

View File

@@ -3,7 +3,7 @@
We would love for you to contribute to Nest and help make it even better than it is
today! As a contributor, here are the guidelines we would like you to follow:
* [Code of Conduct](#coc)
<!--* [Code of Conduct](#coc)-->
* [Question or Problem?](#question)
* [Issues and Bugs](#issue)
* [Feature Requests](#feature)
@@ -76,10 +76,15 @@ You can file new issues by filling out our [new issue form](https://github.com/n
Before you submit your Pull Request (PR) consider the following guidelines:
<!--
To the first point
1. Please sign our [Contributor License Agreement (CLA)](#cla) before sending PRs.
We cannot accept code without this.
-->
1. Search [GitHub](https://github.com/nestjs/nest/pulls) for an open or closed PR
that relates to your submission. You don't want to duplicate effort.
<!-- 1. Please sign our [Contributor License Agreement (CLA)](#cla) before sending PRs.
We cannot accept code without this. -->
1. Fork the nestjs/nest repo.
1. Make your changes in a new git branch:
@@ -89,7 +94,7 @@ Before you submit your Pull Request (PR) consider the following guidelines:
1. Create your patch, **including appropriate test cases**.
1. Follow our [Coding Rules](#rules).
1. Run the full Nest test suite, as described in the [developer documentation][dev-doc],
1. Run the full Nest test suite (see [common scripts](#common-scripts)),
and ensure that all tests pass.
1. Commit your changes using a descriptive commit message that follows our
[commit message conventions](#commit). Adherence to these conventions
@@ -169,7 +174,7 @@ $ sh scripts/prepare.sh
That will compile fresh packages and afterward, move them to all `sample` directories as well as integration tests.
### Commonly used NPM scripts
### <a name="common-scripts"></a>Commonly used NPM scripts
```bash
# build all packages and put them near to their source .ts files
@@ -195,10 +200,11 @@ $ npm run lint
To ensure consistency throughout the source code, keep these rules in mind as you are working:
* All features or bug fixes **must be tested** by one or more specs (unit-tests).
<!--
<!--
// We're working on auto-documentation.
* All public API methods **must be documented**. (Details TBC). -->
* All features or bug fixes **must be tested** by one or more specs (unit-tests).
* We follow [Google's JavaScript Style Guide][js-style-guide], but wrap all code at
**100 characters**. An automated formatter is available, see
[DEVELOPER.md](docs/DEVELOPER.md#clang-format).
@@ -272,8 +278,8 @@ There are currently a few exceptions to the "use package name" rule:
* **packaging**: used for changes that change the npm package layout in all of our packages, e.g. public path changes, package.json changes done to all packages, d.ts file/format changes, changes to bundles, etc.
* **changelog**: used for updating the release notes in CHANGELOG.md
* **sample/#**: for the example apps directory, replacing # with the example app number
<!-- * **aio**: used for docs-app (angular.io) related changes within the /aio directory of the repo -->
* none/empty string: useful for `style`, `test` and `refactor` changes that are done across all packages (e.g. `style: add missing semicolons`)
<!-- * **aio**: used for docs-app (angular.io) related changes within the /aio directory of the repo -->
### Subject

View File

@@ -1,6 +1,6 @@
(The MIT License)
Copyright (c) 2017 Kamil Myśliwiec <http://kamilmysliwiec.com>
Copyright (c) 2017-2019 Kamil Myśliwiec <http://kamilmysliwiec.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@@ -7,28 +7,29 @@
[linux-image]: https://img.shields.io/travis/nestjs/nest/master.svg?label=linux
[linux-url]: https://travis-ci.org/nestjs/nest
<p align="center">A progressive <a href="http://nodejs.org" target="blank">Node.js</a> framework for building efficient and scalable server-side applications, heavily inspired by <a href="https://angular.io" target="blank">Angular</a>.</p>
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications, heavily inspired by <a href="https://angular.io" target="blank">Angular</a>.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#7" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://opencollective.com/nest#backer"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
<a href="https://twitter.com/nestframework"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest" target="_blank"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
## Description
<p>Nest is a framework for building efficient, scalable <a href="http://nodejs.org" target="_blank">Node.js</a> server-side applications. It uses modern JavaScript, is built with <a href="http://www.typescriptlang.org" target="_blank">TypeScript</a> (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).</p>
Nest is a framework for building efficient, scalable <a href="http://nodejs.org" target="_blank">Node.js</a> server-side applications. It uses modern JavaScript, is built with <a href="http://www.typescriptlang.org" target="_blank">TypeScript</a> (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
<p>Under the hood, Nest makes use of <a href="https://expressjs.com/" target="_blank">Express</a>, but also, provides compatibility with a wide range of other libraries, like e.g. <a href="https://github.com/fastify/fastify" target="blank">Fastify</a>, allowing for easy use of the myriad third-party plugins which are available.</p>
<p>Under the hood, Nest makes use of <a href="https://expressjs.com/" target="_blank">Express</a>, but also, provides compatibility with a wide range of other libraries, like e.g. <a href="https://github.com/fastify/fastify" target="_blank">Fastify</a>, allowing for easy use of the myriad third-party plugins which are available.</p>
## Philosophy
@@ -40,30 +41,42 @@
* To check out the [guide](https://docs.nestjs.com), visit [docs.nestjs.com](https://docs.nestjs.com). :books:
* 要查看中文 [指南](readme_zh.md), 请访问 [docs.nestjs.cn](https://docs.nestjs.cn). :books:
## Consulting
With official support, you can get expert help straight from Nest core team. We provide dedicated technical support, migration strategies, advice on best practices (and design decisions), PR reviews, and team augmentation. Read more about [support here](https://docs.nestjs.com/enterprise).
## Support
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/"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
<a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="320" /></a>
#### Gold Sponsors
#### Base Sponsor
<a href="http://xtremis.com/"><img src="https://nestjs.com/img/logo-xtremis.svg" width="220" /></a>
<a href="https://blueanchor.io/" target="_blank"><img src="https://nestjs.com/img/blueanchor.png" width="300" /></a> &nbsp;
<a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/novologic.png" width="200" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" /></a> &nbsp; <a href="https://www.swingdev.io"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" /></a>
<a href="https://neoteric.eu/" target="_blank"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" valign="middle" /></a> &nbsp;
<a href="http://gojob.com" target="_blank"><img src="http://nestjs.com/img/gojob-logo.png" valign="middle" height="95" /></a> &nbsp; <a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" valign="middle" /> </a> &nbsp; &nbsp;
<a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="100" valign="middle" /></a> &nbsp;
<a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="150" valign="middle" /></a>
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="150" valign="middle" /></a>
#### Sponsors
<a href="https://scal.io"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" /></a> &nbsp; <a href="http://angularity.io"><img src="http://angularity.io/media/logo.svg" height="30" /></a> &nbsp; <a href="http://gojob.com"><img src="https://gojob.com/w/wp-content/uploads/2017/02/cropped-Logo-web-home.png" height="40" /> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com"><img src="https://nestjs.com/img/hostpresto.png" height="30" /></a> &nbsp; <a href="https://genuinebee.com/"><img src="https://nestjs.com/img/genuinebee.svg" height="38" /></a> &nbsp; <a href="http://architectnow.net/"><img src="https://nestjs.com/img/architectnow.png" height="24" /></a> &nbsp; <a href="https://quander.io/"><img src="https://nestjs.com/img/quander.png" height="28" /></a>
<a href="https://scal.io" target="_blank"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" valign="middle" /></a> &nbsp; <a href="http://angularity.io" target="_blank"><img src="http://angularity.io/media/logo.svg" height="26" valign="middle" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com" target="_blank"><img src="https://nestjs.com/img/hostpresto.png" height="30" valign="middle" /></a> &nbsp; <a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/genuinebee.svg" height="36" valign="middle" /></a> &nbsp; <a href="http://architectnow.net/" target="_blank"><img src="https://nestjs.com/img/architectnow.png" height="24" valign="middle" /></a> &nbsp; <a href="https://quander.io/" target="_blank"><img src="https://nestjs.com/img/quander.png" height="28" valign="middle" /></a> &nbsp; <a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/mantro-logo.svg" height="20" valign="middle" /></a> &nbsp;
<a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/triplebyte.png" height="30" valign="middle" /></a> &nbsp;
<a href="https://ever.co/" target="_blank"><img src="https://nestjs.com/img/ever-logo.png" height="20" valign="middle" /></a> &nbsp;
<a href="https://buddy.works/" target="_blank"><img src="https://nestjs.com/img/buddy-logo.svg" height="35" valign="middle" /></a>
## Backers
<a href="https://opencollective.com/nest"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
<a href="https://opencollective.com/nest" target="_blank"><img src="https://opencollective.com/nest/backers.svg?width=890"></a>
## Stay in touch

View File

@@ -1,9 +1,14 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const core_1 = require('@nestjs/core');
const fastify_platform_1 = require('@nestjs/platform-fastify');
const app_module_1 = require('./nest/app.module');
core_1.NestFactory.create(app_module_1.AppModule, new core_1.FastifyAdapter(), {
logger: false,
bodyParser: false,
}).then(app => app.listen(3000));
core_1.NestFactory.create(
app_module_1.AppModule,
new fastify_platform_1.FastifyAdapter(),
{
logger: false,
bodyParser: false,
},
).then(app => app.listen(3000));
//# sourceMappingURL=main.js.map

View File

@@ -1,28 +1,47 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
'use strict';
var __decorate =
(this && this.__decorate) ||
function(decorators, target, key, desc) {
var c = arguments.length,
r =
c < 3
? target
: desc === null
? (desc = Object.getOwnPropertyDescriptor(target, key))
: desc,
d;
if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if ((d = decorators[i]))
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@nestjs/common");
};
var __metadata =
(this && this.__metadata) ||
function(k, v) {
if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function')
return Reflect.metadata(k, v);
};
Object.defineProperty(exports, '__esModule', { value: true });
const common_1 = require('@nestjs/common');
let AppController = class AppController {
root() {
return 'Hello world!';
}
root() {
return 'Hello world!';
}
};
__decorate([
__decorate(
[
common_1.Get(),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", String)
], AppController.prototype, "root", null);
AppController = __decorate([
common_1.Controller()
], AppController);
__metadata('design:type', Function),
__metadata('design:paramtypes', []),
__metadata('design:returntype', String),
],
AppController.prototype,
'root',
null,
);
AppController = __decorate([common_1.Controller()], AppController);
exports.AppController = AppController;
//# sourceMappingURL=app.controller.js.map
//# sourceMappingURL=app.controller.js.map

View File

@@ -12,6 +12,16 @@ const packages = {
microservices: ts.createProject('packages/microservices/tsconfig.json'),
websockets: ts.createProject('packages/websockets/tsconfig.json'),
testing: ts.createProject('packages/testing/tsconfig.json'),
'platform-express': ts.createProject(
'packages/platform-express/tsconfig.json',
),
'platform-fastify': ts.createProject(
'packages/platform-fastify/tsconfig.json',
),
'platform-socket.io': ts.createProject(
'packages/platform-socket.io/tsconfig.json',
),
'platform-ws': ts.createProject('packages/platform-ws/tsconfig.json'),
};
const modules = Object.keys(packages);
const source = 'packages';
@@ -34,14 +44,21 @@ gulp.task('copy-misc', function() {
.pipe(gulp.dest(`${source}/core`))
.pipe(gulp.dest(`${source}/microservices`))
.pipe(gulp.dest(`${source}/websockets`))
.pipe(gulp.dest(`${source}/testing`));
.pipe(gulp.dest(`${source}/testing`))
.pipe(gulp.dest(`${source}/platform-fastify`))
.pipe(gulp.dest(`${source}/platform-express`))
.pipe(gulp.dest(`${source}/platform-ws`))
.pipe(gulp.dest(`${source}/platform-socket.io`));
});
gulp.task('clean:output', function() {
return gulp
.src([`${source}/**/*.js`, `${source}/**/*.d.ts`], {
read: false,
})
.src(
[`${source}/**/*.js`, `${source}/**/*.d.ts`, `${source}/**/*.js.map`],
{
read: false,
},
)
.pipe(clean());
});

View File

@@ -23,8 +23,7 @@ services:
- "9001:9001"
restart: always
mysql:
image: mysql:5.7.22
restart: always
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
@@ -36,4 +35,11 @@ services:
environment:
- MONGODB_DATABASE="test"
ports:
- 27017:27017
- 27017:27017
rabbit:
hostname: rabbit
image: "rabbitmq:management"
ports:
- "15672:15672"
- "5672:5672"
tty: true

View File

@@ -0,0 +1,60 @@
import { INestApplication } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { join } from 'path';
import * as request from 'supertest';
import { CatsRequestScopedService } from '../src/cats/cats-request-scoped.service';
import { CatsModule } from '../src/cats/cats.module';
describe('GraphQL request scoped', () => {
let app: INestApplication;
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [
CatsModule.enableRequestScope(),
GraphQLModule.forRoot({
typePaths: [join(__dirname, '..', 'src', '**', '*.graphql')],
}),
],
}).compile();
app = module.createNestApplication();
await app.init();
const performHttpCall = end =>
request(app.getHttpServer())
.post('/graphql')
.send({
operationName: null,
variables: {},
query: '{\n getCats {\n id\n }\n}\n',
})
.expect(200, {
data: {
getCats: [
{
id: 1,
},
],
},
})
.end((err, res) => {
if (err) return end(err);
end();
});
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
});
it(`should create resolver for each incoming request`, () => {
expect(CatsRequestScopedService.COUNTER).to.be.eql(3);
});
afterEach(async () => {
await app.close();
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -9,21 +9,21 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "^5.1.0",
"@nestjs/core": "^5.1.0",
"@nestjs/graphql": "^5.0.0",
"apollo-server-express": "^2.0.4",
"graphql": "^0.13.2",
"graphql-tools": "^2.11.0",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"subscriptions-transport-ws": "^0.9.5",
"typescript": "^2.8.0",
"ws": "^4.0.0"
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/graphql": "6.0.5",
"apollo-server-express": "2.4.8",
"graphql": "14.2.1",
"graphql-tools": "4.0.4",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"subscriptions-transport-ws": "0.9.16",
"typescript": "3.4.2",
"ws": "6.2.1"
},
"devDependencies": {
"@types/node": "^7.0.41",
"ts-node": "^6.0.0",
"tslint": "^5.9.1"
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
}
}

View File

@@ -0,0 +1,25 @@
import { Injectable, Scope } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable({ scope: Scope.REQUEST })
export class CatsRequestScopedService {
static COUNTER = 0;
private readonly cats: Cat[] = [{ id: 1, name: 'Cat', age: 5 }];
constructor() {
CatsRequestScopedService.COUNTER++;
}
create(cat: Cat): Cat {
this.cats.push(cat);
return cat;
}
findAll(): Cat[] {
return this.cats;
}
findOneById(id: number): Cat {
return this.cats.find(cat => cat.id === id);
}
}

View File

@@ -1,8 +1,22 @@
import { Module } from '@nestjs/common';
import { CatsService } from './cats.service';
import { DynamicModule, Module, Scope } from '@nestjs/common';
import { CatsRequestScopedService } from './cats-request-scoped.service';
import { CatsResolvers } from './cats.resolvers';
import { CatsService } from './cats.service';
@Module({
providers: [CatsService, CatsResolvers],
})
export class CatsModule {}
export class CatsModule {
static enableRequestScope(): DynamicModule {
return {
module: CatsModule,
providers: [
{
provide: CatsService,
useClass: CatsRequestScopedService,
scope: Scope.REQUEST,
},
],
};
}
}

View File

@@ -34,8 +34,6 @@ export class CatsResolvers {
@Subscription('catCreated')
catCreated() {
return {
subscribe: () => pubSub.asyncIterator('catCreated'),
};
return pubSub.asyncIterator('catCreated');
}
}

View File

@@ -3,8 +3,13 @@ import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
static COUNTER = 0;
private readonly cats: Cat[] = [{ id: 1, name: 'Cat', age: 5 }];
constructor() {
CatsService.COUNTER++;
}
create(cat: Cat): Cat {
this.cats.push(cat);
return cat;

View File

@@ -1,6 +1,6 @@
import * as request from 'supertest';
import { HttpStatus, INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { INestApplication, HttpStatus } from '@nestjs/common';
import * as request from 'supertest';
import { ErrorsController } from '../src/errors/errors.controller';
describe('Error messages', () => {
@@ -10,8 +10,7 @@ describe('Error messages', () => {
beforeEach(async () => {
const module = await Test.createTestingModule({
controllers: [ErrorsController],
})
.compile();
}).compile();
app = module.createNestApplication();
server = app.getHttpServer();
@@ -25,7 +24,7 @@ describe('Error messages', () => {
.expect({
statusCode: 400,
error: 'Bad Request',
message: 'Integration test'
message: 'Integration test',
});
});
@@ -36,7 +35,7 @@ describe('Error messages', () => {
.expect({
statusCode: 400,
error: 'Bad Request',
message: 'Integration test'
message: 'Integration test',
});
});

View File

@@ -1,7 +1,8 @@
import { INestApplication } from '@nestjs/common';
import { ExpressAdapter } from '@nestjs/platform-express';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { ApplicationModule } from '../src/app.module';
describe('Hello world (express instance)', () => {
@@ -11,10 +12,9 @@ describe('Hello world (express instance)', () => {
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [ApplicationModule],
})
.compile();
}).compile();
app = module.createNestApplication(express());
app = module.createNestApplication(new ExpressAdapter(express()));
server = app.getHttpServer();
await app.init();
});

View File

@@ -1,19 +1,22 @@
import { INestApplication } from '@nestjs/common';
import { INestFastifyApplication } from '@nestjs/common/interfaces/nest-fastify-application.interface';
import { FastifyAdapter } from '@nestjs/core/adapters/fastify-adapter';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { ApplicationModule } from '../src/app.module';
describe('Hello world (fastify adapter)', () => {
let app: INestApplication & INestFastifyApplication;
let app: NestFastifyApplication;
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [ApplicationModule],
}).compile();
app = module.createNestApplication(new FastifyAdapter());
app = module.createNestApplication<NestFastifyApplication>(
new FastifyAdapter(),
);
await app.init();
});

View File

@@ -1,24 +1,58 @@
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication, Injectable } from '@nestjs/common';
import { ApplicationModule } from '../src/app.module';
import {
CallHandler,
ExecutionContext,
INestApplication,
Injectable,
NestInterceptor,
} from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { Test } from '@nestjs/testing';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import * as request from 'supertest';
import { ApplicationModule } from '../src/app.module';
const RETURN_VALUE = 'test';
@Injectable()
export class OverrideInterceptor {
intercept(context, stream) {
export class OverrideInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler) {
return of(RETURN_VALUE);
}
}
@Injectable()
export class TransformInterceptor {
intercept(context, stream) {
return stream.pipe(map(data => ({ data })));
intercept(context: ExecutionContext, next: CallHandler) {
return next.handle().pipe(map(data => ({ data })));
}
}
@Injectable()
export class StatusInterceptor {
constructor(private statusCode: number) {}
intercept(context: ExecutionContext, next: CallHandler) {
const ctx = context.switchToHttp();
const res = ctx.getResponse();
res.status(this.statusCode);
return next.handle().pipe(map(data => ({ data })));
}
}
@Injectable()
export class HeaderInterceptor {
constructor(private headers: object) {}
intercept(context: ExecutionContext, next: CallHandler) {
const ctx = context.switchToHttp();
const res = ctx.getResponse();
for (const key in this.headers) {
if (this.headers.hasOwnProperty(key)) {
res.header(key, this.headers[key]);
}
}
return next.handle().pipe(map(data => ({ data })));
}
}
@@ -41,7 +75,7 @@ describe('Interceptors', () => {
app = (await createTestModule(
new OverrideInterceptor(),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello')
@@ -52,7 +86,7 @@ describe('Interceptors', () => {
app = (await createTestModule(
new TransformInterceptor(),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello')
@@ -63,7 +97,7 @@ describe('Interceptors', () => {
app = (await createTestModule(
new TransformInterceptor(),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello/stream')
@@ -74,13 +108,40 @@ describe('Interceptors', () => {
app = (await createTestModule(
new TransformInterceptor(),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello/async')
.expect(200, { data: 'Hello world!' });
});
it(`should modify response status`, async () => {
app = (await createTestModule(
new StatusInterceptor(400),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello')
.expect(400, { data: 'Hello world!' });
});
it(`should modify Authorization header`, async () => {
const customHeaders = {
Authorization: 'jwt',
};
app = (await createTestModule(
new HeaderInterceptor(customHeaders),
)).createNestApplication();
await app.init();
return request(app.getHttpServer())
.get('/hello')
.expect(200)
.expect('Authorization', 'jwt');
});
afterEach(async () => {
await app.close();
});

View File

@@ -0,0 +1,60 @@
import {
Controller,
Get,
INestApplication,
Injectable,
MiddlewareConsumer,
Module,
} from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { ApplicationModule } from '../src/app.module';
const RETURN_VALUE = 'test';
@Injectable()
class Middleware {
use(req, res, next) {
res.send(RETURN_VALUE);
}
}
@Controller()
class TestController {
@Get('test')
test() {
return 'test';
}
}
@Module({
imports: [ApplicationModule],
controllers: [TestController],
})
class TestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(Middleware).forRoutes('*');
}
}
describe('Middleware (class)', () => {
let app: INestApplication;
beforeEach(async () => {
app = (await Test.createTestingModule({
imports: [TestModule],
}).compile()).createNestApplication();
await app.init();
});
it(`forRoutes(*)`, () => {
return request(app.getHttpServer())
.get('/hello')
.expect(200, RETURN_VALUE);
});
afterEach(async () => {
await app.close();
});
});

View File

@@ -0,0 +1,69 @@
import { Controller, Get, MiddlewareConsumer, Module } from '@nestjs/common';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { ApplicationModule } from '../src/app.module';
const RETURN_VALUE = 'test';
const SCOPED_VALUE = 'test_scoped';
@Controller()
class TestController {
@Get('test')
test() {
return '';
}
}
@Module({
imports: [ApplicationModule],
controllers: [TestController],
})
class TestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply((req, res, next) => res.end(SCOPED_VALUE))
.forRoutes(TestController)
.apply((req, res, next) => res.end(RETURN_VALUE))
.forRoutes('*');
}
}
describe('Middleware (FastifyAdapter)', () => {
let app: NestFastifyApplication;
beforeEach(async () => {
app = (await Test.createTestingModule({
imports: [TestModule],
}).compile()).createNestApplication<NestFastifyApplication>(
new FastifyAdapter(),
);
await app.init();
});
it(`forRoutes(*)`, () => {
return app
.inject({
method: 'GET',
url: '/hello',
})
.then(({ payload }) => expect(payload).to.be.eql(RETURN_VALUE));
});
it(`forRoutes(TestController)`, () => {
return app
.inject({
method: 'GET',
url: '/test',
})
.then(({ payload }) => expect(payload).to.be.eql(SCOPED_VALUE));
});
afterEach(async () => {
await app.close();
});
});

View File

@@ -0,0 +1,77 @@
import {
Controller,
Get,
INestApplication,
MiddlewareConsumer,
Module,
} from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { ApplicationModule } from '../src/app.module';
const RETURN_VALUE = 'test';
const SCOPED_VALUE = 'test_scoped';
const WILDCARD_VALUE = 'test_wildcard';
@Controller()
class TestController {
@Get('test')
test() {
return RETURN_VALUE;
}
@Get('tests/wildcard_nested')
wildcard_nested() {
return RETURN_VALUE;
}
}
@Module({
imports: [ApplicationModule],
controllers: [TestController],
})
class TestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply((req, res, next) => res.send(WILDCARD_VALUE))
.forRoutes('tests/*')
.apply((req, res, next) => res.send(SCOPED_VALUE))
.forRoutes(TestController)
.apply((req, res, next) => res.send(RETURN_VALUE))
.forRoutes('*');
}
}
describe('Middleware', () => {
let app: INestApplication;
beforeEach(async () => {
app = (await Test.createTestingModule({
imports: [TestModule],
}).compile()).createNestApplication();
await app.init();
});
it(`forRoutes(*)`, () => {
return request(app.getHttpServer())
.get('/hello')
.expect(200, RETURN_VALUE);
});
it(`forRoutes(TestController)`, () => {
return request(app.getHttpServer())
.get('/test')
.expect(200, SCOPED_VALUE);
});
it(`forRoutes(tests/*)`, () => {
return request(app.getHttpServer())
.get('/tests/wildcard')
.expect(200, WILDCARD_VALUE);
});
afterEach(async () => {
await app.close();
});
});

View File

@@ -4,18 +4,881 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"rxjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz",
"integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==",
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"requires": {
"tslib": "1.9.0"
"axios": "0.18.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
"node-fetch": "^2.3.0"
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"dev": true
},
"abstract-logging": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz",
"integrity": "sha1-i33q/TEFWbwo93ck3RuzAXcnjBs="
},
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
"archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"avvio": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/avvio/-/avvio-6.2.1.tgz",
"integrity": "sha512-k+gTocL3yShwN1PtKEsSj7eFiApcZ4JZLAu/ecyzEb8jyx+Kmxb+7SXUsodB47g7fqhs/zkfsCdqq72a1ok5Ew==",
"requires": {
"archy": "^1.0.0",
"debug": "^4.0.0",
"fastq": "^1.6.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
},
"class-validator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.9.1.tgz",
"integrity": "sha512-3wApflrd3ywVZyx4jaasGoFt8pmo4aGLPPAEKCKCsTRWVGPilahD88q3jQjRQwja50rl9a7rsP5LAxJYwGK8/Q==",
"requires": {
"google-libphonenumber": "^3.1.6",
"validator": "10.4.0"
}
},
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"deepmerge": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz",
"integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow=="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "^1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"es6-weak-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es6-symbol": "^3.1.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"fast-decode-uri-component": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.14.0.tgz",
"integrity": "sha512-3VSblXsVxIE46E/YzRYHapyIeM3/igeA/kyzdL5xfAIYNnCLd8Oy+scrURnqZIRXMmtx0hfyp+okN5+r4W+GMQ==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
}
},
"fast-redact": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz",
"integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ=="
},
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.2.0.tgz",
"integrity": "sha512-U6W101N+8Hyz2uiN3XqdSdTiaWYiJ0lCJmC3tO42PNttjCZQp8EPIhZ0QkVQWLrrP0ijjgomwaYrj9eMzqWyDw==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.11.2",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"tiny-lru": "^6.0.1"
}
},
"fastq": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
"integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
"requires": {
"reusify": "^1.0.0"
}
},
"find-my-way": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-2.0.1.tgz",
"integrity": "sha512-c+YnWk4LKcWSNu743wfoqNOZTYQ6kZ/kzZCjALGblLpzbEAv3INakGMZ1K/by+Wmf/NP3+3LpOQMOFw6/q52wQ==",
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex2": "^2.0.0",
"semver-store": "^0.3.0"
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
"integrity": "sha512-ubjGeosYPeusjYbUHy76lCniGTTI0k1rIFc+uKBX+jHQLDmWOSUtlFUxaeoLJ+Y+PAMM6dWp+C1HjHx5BI8kEw=="
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-socket": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/json-socket/-/json-socket-0.3.0.tgz",
"integrity": "sha512-jc8ZbUnYIWdxERFWQKVgwSLkGSe+kyzvmYxwNaRgx/c8NNyuHes4UHnPM3LUrAFXUx1BhNJ94n1h/KCRlbvV0g=="
},
"light-my-request": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.3.0.tgz",
"integrity": "sha512-dLtwhjzbuHJ+KMMUBSlVid6Iqxx+KKvULWLnBD06WMgPHxiPkEh1cVyj+Xc8HGU64hULlSw/sZVCdFsvjNQeNA==",
"requires": {
"ajv": "^6.8.1",
"readable-stream": "^3.1.1"
}
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"middie": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/middie/-/middie-4.0.1.tgz",
"integrity": "sha512-eYK6EEHZiYpQMYPmeCb/vC9ZzJg1HCqi1ot/fQs1sPZKt/XREgXouQ7g6c9J5XvDV5203JjbpovCYNkHcHgTpQ==",
"requires": {
"path-to-regexp": "^3.0.0",
"reusify": "^1.0.2"
}
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"mime-db": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
"dev": true
},
"mime-types": {
"version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": {
"mime-db": "~1.36.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"path-to-regexp": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.0.0.tgz",
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
"flatstr": "^1.0.9",
"pino-std-serializers": "^2.3.0",
"quick-format-unescaped": "^3.0.2",
"sonic-boom": "^0.7.3"
}
},
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
"integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
}
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"quick-format-unescaped": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.2.tgz",
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"ret": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
"integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ=="
},
"reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-regex2": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz",
"integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==",
"requires": {
"ret": "~0.2.0"
}
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"requires": {
"flatstr": "^1.0.9"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"string_decoder": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
"integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"dev": true,
"requires": {
"component-emitter": "^1.2.0",
"cookiejar": "^2.1.0",
"debug": "^3.1.0",
"extend": "^3.0.0",
"form-data": "^2.3.1",
"formidable": "^1.2.0",
"methods": "^1.1.1",
"mime": "^1.4.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.5"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"supertest": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
"integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
"dev": true,
"requires": {
"methods": "^1.1.2",
"superagent": "^3.8.3"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"tiny-lru": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-6.0.1.tgz",
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
}
},
"tslib": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
"integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"dev": true
}
}
}

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "^5.0.0",
"@nestjs/core": "^5.0.0",
"@nestjs/microservices": "^5.0.0",
"@nestjs/testing": "^5.0.0",
"@nestjs/websockets": "^5.0.0",
"class-transformer": "^0.1.7",
"class-validator": "^0.7.2",
"fastify": "^1.1.1",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typescript": "^2.8.0"
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"class-validator": "0.9.1",
"fastify": "2.2.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/node": "^7.0.41",
"supertest": "^3.0.0",
"ts-node": "^6.0.0"
"@types/node": "7.10.5",
"supertest": "4.0.2",
"ts-node": "8.0.3"
}
}

View File

@@ -1,4 +1,4 @@
import { Get, BadRequestException, Controller } from '@nestjs/common';
import { BadRequestException, Controller, Get } from '@nestjs/common';
@Controller()
export class ErrorsController {
@@ -13,6 +13,10 @@ export class ErrorsController {
}
throwError() {
throw new BadRequestException('Integration test');
throw new BadRequestException({
statusCode: 400,
error: 'Bad Request',
message: 'Integration test',
});
}
}

View File

@@ -1,6 +1,6 @@
import { HelloService } from './hello.service';
import { Controller, Get, Header, Param } from '@nestjs/common';
import { Observable, of } from 'rxjs';
import { HelloService } from './hello.service';
import { UserByIdPipe } from './users/user-by-id.pipe';
@Controller('hello')

21
integration/hooks/.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
# dependencies
/node_modules
# IDE
/.idea
/.awcache
/.vscode
# misc
npm-debug.log
# example
/quick-start
# tests
/test
/coverage
/.nyc_output
# dist
/dist

View File

@@ -0,0 +1,43 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as Sinon from 'sinon';
import {
Injectable,
OnApplicationBootstrap,
OnApplicationShutdown,
OnModuleDestroy,
OnModuleInit,
} from '@nestjs/common';
@Injectable()
class TestInjectable
implements
OnApplicationBootstrap,
OnModuleInit,
OnModuleDestroy,
OnApplicationShutdown {
onApplicationBootstrap = Sinon.spy();
onApplicationShutdown = Sinon.spy();
onModuleDestroy = Sinon.spy();
onModuleInit = Sinon.spy();
}
describe('Lifecycle Hook Order', () => {
it('should call the lifecycle hooks in the correct order', async () => {
const module = await Test.createTestingModule({
providers: [TestInjectable],
}).compile();
const app = module.createNestApplication();
await app.init();
await app.close();
const instance = module.get(TestInjectable);
Sinon.assert.callOrder(
instance.onModuleInit,
instance.onApplicationBootstrap,
instance.onModuleDestroy,
instance.onApplicationShutdown,
);
});
});

View File

@@ -0,0 +1,22 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as Sinon from 'sinon';
import { Injectable, OnApplicationBootstrap } from '@nestjs/common';
@Injectable()
class TestInjectable implements OnApplicationBootstrap {
onApplicationBootstrap = Sinon.spy();
}
describe('OnApplicationBootstrap', () => {
it('should call onApplicationBootstrap when application starts', async () => {
const module = await Test.createTestingModule({
providers: [TestInjectable],
}).compile();
const app = module.createNestApplication();
await app.init();
const instance = module.get(TestInjectable);
expect(instance.onApplicationBootstrap.called).to.be.true;
});
});

View File

@@ -0,0 +1,48 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as Sinon from 'sinon';
import { Injectable, OnApplicationShutdown, ShutdownSignal } from '@nestjs/common';
import { spawn, spawnSync } from 'child_process';
import { join } from 'path';
@Injectable()
class TestInjectable implements OnApplicationShutdown {
onApplicationShutdown = Sinon.spy();
}
describe('OnApplicationShutdown', () => {
it('should call onApplicationShutdown when application closes', async () => {
const module = await Test.createTestingModule({
providers: [TestInjectable],
}).compile();
const app = module.createNestApplication();
await app.close();
const instance = module.get(TestInjectable);
expect(instance.onApplicationShutdown.called).to.be.true;
});
it('should call onApplicationShutdown if any shutdown signal gets invoked', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGHUP']);
expect(result.stdout.toString().trim()).to.be.eq('Signal SIGHUP');
done();
});
it('should call onApplicationShutdown if a specific shutdown signal gets invoked', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'SIGINT']);
expect(result.stdout.toString().trim()).to.be.eq('Signal SIGINT');
done();
});
it('should ignore system signals which are not specified', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'SIGHUP']);
expect(result.stdout.toString().trim()).to.be.eq('');
done();
});
it('should ignore system signals if "enableShutdownHooks" was not called', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'NONE']);
expect(result.stdout.toString().trim()).to.be.eq('');
done();
});
});

View File

@@ -0,0 +1,22 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as Sinon from 'sinon';
import { Injectable, OnModuleDestroy } from '@nestjs/common';
@Injectable()
class TestInjectable implements OnModuleDestroy {
onModuleDestroy = Sinon.spy();
}
describe('OnModuleDestroy', () => {
it('should call onModuleDestroy when application closes', async () => {
const module = await Test.createTestingModule({
providers: [TestInjectable],
}).compile();
const app = module.createNestApplication();
await app.close();
const instance = module.get(TestInjectable);
expect(instance.onModuleDestroy.called).to.be.true;
});
});

View File

@@ -0,0 +1,22 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as Sinon from 'sinon';
import { Injectable, OnModuleInit } from '@nestjs/common';
@Injectable()
class TestInjectable implements OnModuleInit {
onModuleInit = Sinon.spy();
}
describe('OnModuleInit', () => {
it('should call onModuleInit when application starts', async () => {
const module = await Test.createTestingModule({
providers: [TestInjectable],
}).compile();
const app = module.createNestApplication();
await app.init();
const instance = module.get(TestInjectable);
expect(instance.onModuleInit.called).to.be.true;
});
});

568
integration/hooks/package-lock.json generated Normal file
View File

@@ -0,0 +1,568 @@
{
"name": "nest-typescript-starter",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"requires": {
"axios": "0.18.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
"node-fetch": "^2.3.0"
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"dev": true
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
},
"class-validator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.9.1.tgz",
"integrity": "sha512-3wApflrd3ywVZyx4jaasGoFt8pmo4aGLPPAEKCKCsTRWVGPilahD88q3jQjRQwja50rl9a7rsP5LAxJYwGK8/Q==",
"requires": {
"google-libphonenumber": "^3.1.6",
"validator": "10.4.0"
}
},
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "^1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"es6-weak-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es6-symbol": "^3.1.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"requires": {
"debug": "^3.2.6"
}
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
"integrity": "sha512-ubjGeosYPeusjYbUHy76lCniGTTI0k1rIFc+uKBX+jHQLDmWOSUtlFUxaeoLJ+Y+PAMM6dWp+C1HjHx5BI8kEw=="
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
"dev": true
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"dev": true,
"requires": {
"mime-db": "~1.38.0"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"dev": true,
"requires": {
"component-emitter": "^1.2.0",
"cookiejar": "^2.1.0",
"debug": "^3.1.0",
"extend": "^3.0.0",
"form-data": "^2.3.1",
"formidable": "^1.2.0",
"methods": "^1.1.1",
"mime": "^1.4.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.5"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"supertest": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
"integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
"dev": true,
"requires": {
"methods": "^1.1.2",
"superagent": "^3.8.3"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"dev": true
}
}
}

View File

@@ -0,0 +1,23 @@
{
"name": "nest-typescript-starter",
"version": "1.0.0",
"description": "Nest TypeScript starter repository",
"license": "MIT",
"scripts": {
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"class-transformer": "0.2.0",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"supertest": "4.0.2",
"ts-node": "8.0.3"
}
}

View File

@@ -0,0 +1,31 @@
import { Injectable, OnApplicationShutdown, Module } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
const SIGNAL = process.argv[2];
const SIGNAL_TO_LISTEN = process.argv[3];
@Injectable()
class TestInjectable implements OnApplicationShutdown {
onApplicationShutdown(signal: string) {
console.log('Signal ' + signal);
}
}
@Module({
providers: [TestInjectable],
})
class AppModule { }
async function bootstrap() {
const app = await NestFactory.create(AppModule, { logger: true });
if (SIGNAL_TO_LISTEN && SIGNAL_TO_LISTEN !== 'NONE') {
app.enableShutdownHooks([SIGNAL_TO_LISTEN]);
} else if (SIGNAL_TO_LISTEN !== 'NONE') {
app.enableShutdownHooks();
}
await app.listen(1800);
process.kill(process.pid, SIGNAL);
}
bootstrap();

View File

@@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"allowJs": true,
"outDir": "./dist"
},
"include": [
"src/**/*",
"e2e/**/*"
],
"exclude": [
"node_modules",
]
}

View File

@@ -0,0 +1,53 @@
{
"defaultSeverity": "error",
"extends": [
"tslint:recommended"
],
"jsRules": {
"no-unused-expression": true
},
"rules": {
"eofline": false,
"quotemark": [
true,
"single"
],
"ordered-imports": [
false
],
"max-line-length": [
150
],
"member-ordering": [
false
],
"curly": false,
"interface-name": [
false
],
"array-type": [
false
],
"member-access": [
false
],
"no-empty-interface": false,
"no-empty": false,
"arrow-parens": false,
"object-literal-sort-keys": false,
"no-unused-expression": false,
"max-classes-per-file": [
false
],
"variable-name": [
false
],
"one-line": [
false
],
"one-variable-per-declaration": [
false
]
},
"rulesDirectory": []
}

View File

@@ -1,10 +1,9 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { Test, TestingModuleBuilder } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { CircularModule } from '../src/circular-modules/circular.module';
import { InputService } from '../src/circular-modules/input.service';
import { CircularService } from '../src/circular-modules/circular.service';
import { InputModule } from '../src/circular-modules/input.module';
import { InputService } from '../src/circular-modules/input.service';
describe('Circular dependency (modules)', () => {
it('should resolve circular dependency between providers', async () => {

View File

@@ -0,0 +1,20 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { CircularPropertiesModule } from '../src/circular-properties/circular-properties.module';
import { CircularService } from '../src/circular-properties/circular.service';
import { InputPropertiesModule } from '../src/circular-properties/input-properties.module';
import { InputService } from '../src/circular-properties/input.service';
describe('Circular properties dependency (modules)', () => {
it('should resolve circular dependency between providers', async () => {
const builder = Test.createTestingModule({
imports: [CircularPropertiesModule, InputPropertiesModule],
});
const testingModule = await builder.compile();
const inputService = testingModule.get<InputService>(InputService);
const circularService = testingModule.get<CircularService>(CircularService);
expect(inputService.service).to.be.eql(circularService);
expect(circularService.service).to.be.eql(inputService);
});
});

View File

@@ -1,9 +1,8 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { Test, TestingModuleBuilder } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { CircularModule } from '../src/circular/circular.module';
import { InputService } from '../src/circular/input.service';
import { CircularService } from '../src/circular/circular.service';
import { InputService } from '../src/circular/input.service';
describe('Circular dependency', () => {
it('should resolve circular dependency between providers', async () => {

View File

@@ -1,13 +1,14 @@
import { expect } from 'chai';
import { Test, TestingModuleBuilder } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { ExportsModule } from '../src/exports/exports.module';
import { TestingModule } from '@nestjs/testing/testing-module';
import { UnknownExportException } from '@nestjs/core/errors/exceptions/unknown-export.exception';
import { UndefinedDependencyException } from '@nestjs/core/errors/exceptions/undefined-dependency.exception';
import { InjectModule } from '../src/inject/inject.module';
import { RuntimeException } from '@nestjs/core/errors/exceptions/runtime.exception';
import { NestDynamicModule, DYNAMIC_TOKEN, DYNAMIC_VALUE } from '../src/dynamic/dynamic.module';
import { UnknownExportException } from '@nestjs/core/errors/exceptions/unknown-export.exception';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import {
DYNAMIC_TOKEN,
DYNAMIC_VALUE,
NestDynamicModule,
} from '../src/dynamic/dynamic.module';
import { ExportsModule } from '../src/exports/exports.module';
import { InjectModule } from '../src/inject/inject.module';
describe('Injector', () => {
describe('when "providers" and "exports" properties are inconsistent', () => {

View File

@@ -0,0 +1,18 @@
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import { DependencyService } from '../src/properties/dependency.service';
import { PropertiesModule } from '../src/properties/properties.module';
import { PropertiesService } from '../src/properties/properties.service';
describe('Injector', () => {
it('should resolve property-based dependencies', async () => {
const builder = Test.createTestingModule({
imports: [PropertiesModule],
});
const app = await builder.compile();
const dependency = app.get(DependencyService);
expect(app.get(PropertiesService).service).to.be.eql(dependency);
expect(app.get(PropertiesService).token).to.be.true;
});
});

View File

@@ -4,18 +4,596 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"rxjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz",
"integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==",
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"requires": {
"tslib": "1.9.0"
"axios": "0.18.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
"node-fetch": "^2.3.0"
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"dev": true
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
},
"class-validator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.9.1.tgz",
"integrity": "sha512-3wApflrd3ywVZyx4jaasGoFt8pmo4aGLPPAEKCKCsTRWVGPilahD88q3jQjRQwja50rl9a7rsP5LAxJYwGK8/Q==",
"requires": {
"google-libphonenumber": "^3.1.6",
"validator": "10.4.0"
}
},
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "^1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"es6-weak-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es6-symbol": "^3.1.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"requires": {
"debug": "^3.2.6"
}
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
"integrity": "sha512-ubjGeosYPeusjYbUHy76lCniGTTI0k1rIFc+uKBX+jHQLDmWOSUtlFUxaeoLJ+Y+PAMM6dWp+C1HjHx5BI8kEw=="
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"json-socket": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/json-socket/-/json-socket-0.3.0.tgz",
"integrity": "sha512-jc8ZbUnYIWdxERFWQKVgwSLkGSe+kyzvmYxwNaRgx/c8NNyuHes4UHnPM3LUrAFXUx1BhNJ94n1h/KCRlbvV0g=="
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
"dev": true
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"dev": true,
"requires": {
"mime-db": "~1.38.0"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"dev": true,
"requires": {
"component-emitter": "^1.2.0",
"cookiejar": "^2.1.0",
"debug": "^3.1.0",
"extend": "^3.0.0",
"form-data": "^2.3.1",
"formidable": "^1.2.0",
"methods": "^1.1.1",
"mime": "^1.4.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.5"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"supertest": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
"integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
"dev": true,
"requires": {
"methods": "^1.1.2",
"superagent": "^3.8.3"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
}
},
"tslib": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
"integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"dev": true
}
}
}

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "^5.0.0",
"@nestjs/core": "^5.0.0",
"@nestjs/microservices": "^5.0.0",
"@nestjs/testing": "^5.0.0",
"@nestjs/websockets": "^5.0.0",
"class-transformer": "^0.1.7",
"class-validator": "^0.7.2",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typescript": "^2.8.0"
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/node": "^7.0.41",
"supertest": "^3.0.0",
"ts-node": "^6.0.0"
"@types/node": "7.10.5",
"supertest": "4.0.2",
"ts-node": "8.0.3"
}
}

View File

@@ -0,0 +1,10 @@
import { forwardRef, Module } from '@nestjs/common';
import { CircularService } from './circular.service';
import { InputPropertiesModule } from './input-properties.module';
@Module({
imports: [forwardRef(() => InputPropertiesModule)],
providers: [CircularService],
exports: [CircularService],
})
export class CircularPropertiesModule {}

View File

@@ -0,0 +1,8 @@
import { forwardRef, Inject, Injectable } from '@nestjs/common';
import { InputService } from './input.service';
@Injectable()
export class CircularService {
@Inject(forwardRef(() => InputService))
public readonly service: InputService;
}

View File

@@ -0,0 +1,10 @@
import { forwardRef, Module } from '@nestjs/common';
import { CircularPropertiesModule } from './circular-properties.module';
import { InputService } from './input.service';
@Module({
imports: [forwardRef(() => CircularPropertiesModule)],
providers: [InputService],
exports: [InputService],
})
export class InputPropertiesModule {}

View File

@@ -0,0 +1,8 @@
import { forwardRef, Inject, Injectable } from '@nestjs/common';
import { CircularService } from './circular.service';
@Injectable()
export class InputService {
@Inject(forwardRef(() => CircularService))
public readonly service: CircularService;
}

View File

@@ -0,0 +1,4 @@
import { Injectable } from '@nestjs/common';
@Injectable()
export class DependencyService {}

View File

@@ -0,0 +1,15 @@
import { Module } from '@nestjs/common';
import { DependencyService } from './dependency.service';
import { PropertiesService } from './properties.service';
@Module({
providers: [
DependencyService,
PropertiesService,
{
provide: 'token',
useValue: true,
},
],
})
export class PropertiesModule {}

View File

@@ -0,0 +1,8 @@
import { Inject, Injectable } from '@nestjs/common';
import { DependencyService } from './dependency.service';
@Injectable()
export class PropertiesService {
@Inject() service: DependencyService;
@Inject('token') token: boolean;
}

View File

@@ -1,8 +1,7 @@
import * as express from 'express';
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { MqttBroadcastController } from '../src/mqtt/mqtt-broadcast.controller';
describe('MQTT transport', () => {
@@ -14,8 +13,9 @@ describe('MQTT transport', () => {
controllers: [MqttBroadcastController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.MQTT,
});

View File

@@ -1,8 +1,7 @@
import * as express from 'express';
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { NatsBroadcastController } from '../src/nats/nats-broadcast.controller';
describe('NATS transport', () => {
@@ -14,8 +13,9 @@ describe('NATS transport', () => {
controllers: [NatsBroadcastController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.NATS,
});

View File

@@ -1,9 +1,7 @@
import * as express from 'express';
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { RedisController } from '../src/redis/redis.controller';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { RedisBroadcastController } from '../src/redis/redis-broadcast.controller';
describe('REDIS transport', () => {
@@ -15,8 +13,9 @@ describe('REDIS transport', () => {
controllers: [RedisBroadcastController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.REDIS,
});

View File

@@ -1,7 +1,6 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import * as request from 'supertest';
import { DisconnectedClientController } from '../src/disconnected.controller';
@@ -14,8 +13,9 @@ describe('Disconnected client', () => {
controllers: [DisconnectedClientController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
await app.init();
});

View File

@@ -1,7 +1,6 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import { join } from 'path';
import * as request from 'supertest';
import { GrpcController } from '../src/grpc/grpc.controller';
@@ -15,8 +14,9 @@ describe('GRPC transport', () => {
controllers: [GrpcController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.GRPC,
options: {
@@ -32,7 +32,7 @@ describe('GRPC transport', () => {
return request(server)
.post('/')
.send([1, 2, 3, 4, 5])
.expect(200, { result: '15' });
.expect(200, { result: 15 });
});
afterEach(async () => {

View File

@@ -1,7 +1,7 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import { expect } from 'chai';
import * as request from 'supertest';
import { MqttController } from '../src/mqtt/mqtt.controller';
@@ -14,8 +14,9 @@ describe('MQTT transport', () => {
controllers: [MqttController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.MQTT,
});
@@ -70,6 +71,18 @@ describe('MQTT transport', () => {
.expect(200, '15');
});
it(`/POST (event notification)`, done => {
request(server)
.post('/notify')
.send([1, 2, 3, 4, 5])
.end(() => {
setTimeout(() => {
expect(MqttController.IS_NOTIFIED).to.be.true;
done();
}, 1000);
});
});
afterEach(async () => {
await app.close();
});

View File

@@ -1,7 +1,7 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import { expect } from 'chai';
import * as request from 'supertest';
import { NatsController } from '../src/nats/nats.controller';
@@ -14,8 +14,9 @@ describe('NATS transport', () => {
controllers: [NatsController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.NATS,
options: {
@@ -73,6 +74,27 @@ describe('NATS transport', () => {
.expect(200, 'true');
});
it(`/GET (exception)`, () => {
return request(server)
.get('/exception')
.expect(200, {
message: 'test',
status: 'error',
});
});
it(`/POST (event notification)`, done => {
request(server)
.post('/notify')
.send([1, 2, 3, 4, 5])
.end(() => {
setTimeout(() => {
expect(NatsController.IS_NOTIFIED).to.be.true;
done();
}, 1000);
});
});
afterEach(async () => {
await app.close();
});

View File

@@ -1,7 +1,7 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import { expect } from 'chai';
import * as request from 'supertest';
import { RedisController } from '../src/redis/redis.controller';
@@ -14,8 +14,9 @@ describe('REDIS transport', () => {
controllers: [RedisController],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.REDIS,
});
@@ -70,6 +71,18 @@ describe('REDIS transport', () => {
.expect(200, '15');
});
it(`/POST (event notification)`, done => {
request(server)
.post('/notify')
.send([1, 2, 3, 4, 5])
.end(() => {
setTimeout(() => {
expect(RedisController.IS_NOTIFIED).to.be.true;
done();
}, 1000);
});
});
afterEach(async () => {
await app.close();
});

View File

@@ -0,0 +1,94 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as request from 'supertest';
import { RMQController } from '../src/rmq/rmq.controller';
describe('RabbitMQ transport', () => {
let server;
let app: INestApplication;
beforeEach(async () => {
const module = await Test.createTestingModule({
controllers: [RMQController],
}).compile();
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.RMQ,
options: {
urls: [`amqp://localhost:5672`],
queue: 'test',
queueOptions: { durable: false },
},
});
await app.startAllMicroservicesAsync();
await app.init();
});
it(`/POST`, () => {
return request(server)
.post('/?command=sum')
.send([1, 2, 3, 4, 5])
.expect(200, '15');
});
it(`/POST (Promise/async)`, () => {
return request(server)
.post('/?command=asyncSum')
.send([1, 2, 3, 4, 5])
.expect(200)
.expect(200, '15');
});
it(`/POST (Observable stream)`, () => {
return request(server)
.post('/?command=streamSum')
.send([1, 2, 3, 4, 5])
.expect(200, '15');
});
it(`/POST (concurrent)`, () => {
return request(server)
.post('/concurrent')
.send([
Array.from({ length: 10 }, (v, k) => k + 1),
Array.from({ length: 10 }, (v, k) => k + 11),
Array.from({ length: 10 }, (v, k) => k + 21),
Array.from({ length: 10 }, (v, k) => k + 31),
Array.from({ length: 10 }, (v, k) => k + 41),
Array.from({ length: 10 }, (v, k) => k + 51),
Array.from({ length: 10 }, (v, k) => k + 61),
Array.from({ length: 10 }, (v, k) => k + 71),
Array.from({ length: 10 }, (v, k) => k + 81),
Array.from({ length: 10 }, (v, k) => k + 91),
])
.expect(200, 'true');
});
it(`/POST (streaming)`, () => {
return request(server)
.post('/stream')
.send([1, 2, 3, 4, 5])
.expect(200, '15');
});
it(`/POST (event notification)`, done => {
request(server)
.post('/notify')
.send([1, 2, 3, 4, 5])
.end(() => {
setTimeout(() => {
expect(RMQController.IS_NOTIFIED).to.be.true;
done();
}, 1000);
});
});
afterEach(async () => {
await app.close();
});
});

View File

@@ -1,8 +1,9 @@
import { INestApplication } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { Test } from '@nestjs/testing';
import * as express from 'express';
import { expect } from 'chai';
import * as request from 'supertest';
import { AppController } from '../src/app.controller';
import { ApplicationModule } from '../src/app.module';
describe('RPC transport', () => {
@@ -14,8 +15,9 @@ describe('RPC transport', () => {
imports: [ApplicationModule],
}).compile();
server = express();
app = module.createNestApplication(server);
app = module.createNestApplication();
server = app.getHttpAdapter().getInstance();
app.connectMicroservice({
transport: Transport.TCP,
});
@@ -76,6 +78,18 @@ describe('RPC transport', () => {
.expect(500);
});
it(`/POST (event notification)`, done => {
request(server)
.post('/notify')
.send([1, 2, 3, 4, 5])
.end(() => {
setTimeout(() => {
expect(AppController.IS_NOTIFIED).to.be.true;
done();
}, 1000);
});
});
afterEach(async () => {
await app.close();
});

View File

@@ -4,18 +4,609 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"rxjs": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz",
"integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==",
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"requires": {
"tslib": "1.9.0"
"axios": "0.18.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
"node-fetch": "^2.3.0"
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"dev": true
},
"amqp-connection-manager": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-2.3.1.tgz",
"integrity": "sha512-5uld2vHfUZWfTjYhCsmWhrpNsESUxfq0K1RllUUavngULgwxLZcsm0PjhhwqNwEXRhkK1uDMS/rzjUGCZBVYaA==",
"requires": {
"promise-breaker": "^4.1.2"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
},
"class-validator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.9.1.tgz",
"integrity": "sha512-3wApflrd3ywVZyx4jaasGoFt8pmo4aGLPPAEKCKCsTRWVGPilahD88q3jQjRQwja50rl9a7rsP5LAxJYwGK8/Q==",
"requires": {
"google-libphonenumber": "^3.1.6",
"validator": "10.4.0"
}
},
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "^1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"es6-weak-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es6-symbol": "^3.1.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"requires": {
"debug": "^3.2.6"
}
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
"integrity": "sha512-ubjGeosYPeusjYbUHy76lCniGTTI0k1rIFc+uKBX+jHQLDmWOSUtlFUxaeoLJ+Y+PAMM6dWp+C1HjHx5BI8kEw=="
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"json-socket": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/json-socket/-/json-socket-0.3.0.tgz",
"integrity": "sha512-jc8ZbUnYIWdxERFWQKVgwSLkGSe+kyzvmYxwNaRgx/c8NNyuHes4UHnPM3LUrAFXUx1BhNJ94n1h/KCRlbvV0g=="
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
"dev": true
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"dev": true,
"requires": {
"mime-db": "~1.38.0"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"promise-breaker": {
"version": "4.1.13",
"resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-4.1.13.tgz",
"integrity": "sha512-+lGBqmBEgyvKweIrK4smdN1YxdYp5YjSL1us2XhTMBbZf98jdeGys/Edt5S1b1NXMVRQrvh4DrMgGpYPbXZf3g=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"dev": true,
"requires": {
"component-emitter": "^1.2.0",
"cookiejar": "^2.1.0",
"debug": "^3.1.0",
"extend": "^3.0.0",
"form-data": "^2.3.1",
"formidable": "^1.2.0",
"methods": "^1.1.1",
"mime": "^1.4.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.5"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"supertest": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
"integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
"dev": true,
"requires": {
"methods": "^1.1.2",
"superagent": "^3.8.3"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
}
},
"tslib": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
"integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"dev": true
}
}
}

View File

@@ -7,20 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "^5.0.0",
"@nestjs/core": "^5.0.0",
"@nestjs/microservices": "^5.0.0",
"@nestjs/testing": "^5.0.0",
"@nestjs/websockets": "^5.0.0",
"class-transformer": "^0.1.7",
"class-validator": "^0.7.2",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typescript": "^2.8.0"
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"amqp-connection-manager": "2.3.1",
"class-transformer": "0.2.0",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/node": "^7.0.41",
"supertest": "^3.0.0",
"ts-node": "^6.0.0"
"@types/node": "7.10.5",
"supertest": "4.0.2",
"ts-node": "8.0.3"
}
}

View File

@@ -1,15 +1,18 @@
import { Controller, Post, Body, Query, HttpCode } from '@nestjs/common';
import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import {
Client,
MessagePattern,
ClientProxy,
EventPattern,
MessagePattern,
Transport,
} from '@nestjs/microservices';
import { Observable, of, from } from 'rxjs';
import { from, Observable, of } from 'rxjs';
import { scan } from 'rxjs/operators';
@Controller()
export class AppController {
static IS_NOTIFIED = false;
@Client({ transport: Transport.TCP })
client: ClientProxy;
@@ -62,4 +65,14 @@ export class AppController {
streaming(data: number[]): Observable<number> {
return from(data);
}
@Post('notify')
async sendNotification(): Promise<any> {
return this.client.emit<number>('notification', true);
}
@EventPattern('notification')
eventHandler(data: boolean) {
AppController.IS_NOTIFIED = data;
}
}

View File

@@ -7,27 +7,25 @@ import {
} from '@nestjs/common';
import { ClientProxyFactory } from '@nestjs/microservices';
import { Observable, throwError } from 'rxjs';
import { catchError, tap } from 'rxjs/operators';
import { catchError } from 'rxjs/operators';
@Controller()
export class DisconnectedClientController {
@Post()
call(@Body() options): Observable<number> {
const client = ClientProxyFactory.create(options);
return client
.send<number, number[]>({ cmd: 'none' }, [1, 2, 3])
.pipe(
tap(
return client.send<number, number[]>({ cmd: 'none' }, [1, 2, 3]).pipe(
/*tap(
console.log.bind(console, 'data'),
console.error.bind(console, 'error'),
),*/
catchError(({ code }) =>
throwError(
code === 'ECONNREFUSED' || code === 'CONN_ERR'
? new RequestTimeoutException('ECONNREFUSED')
: new InternalServerErrorException(),
),
catchError(({ code }) =>
throwError(
code === 'ECONNREFUSED' || code === 'CONN_ERR'
? new RequestTimeoutException('ECONNREFUSED')
: new InternalServerErrorException(),
),
),
);
),
);
}
}

View File

@@ -2,6 +2,7 @@ import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import {
Client,
ClientProxy,
EventPattern,
MessagePattern,
Transport,
} from '@nestjs/microservices';
@@ -10,6 +11,8 @@ import { scan } from 'rxjs/operators';
@Controller()
export class MqttController {
static IS_NOTIFIED = false;
@Client({ transport: Transport.MQTT })
client: ClientProxy;
@@ -47,6 +50,16 @@ export class MqttController {
.reduce(async (a, b) => (await a) && (await b));
}
@Post('notify')
async sendNotification(): Promise<any> {
return this.client.emit<number>('notification', true);
}
@EventPattern('notification')
eventHandler(data: boolean) {
MqttController.IS_NOTIFIED = true;
}
@MessagePattern({ cmd: 'sum' })
sum(data: number[]): number {
return (data || []).reduce((a, b) => a + b);

View File

@@ -1,15 +1,19 @@
import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import { Body, Controller, Get, HttpCode, Post, Query } from '@nestjs/common';
import {
Client,
ClientProxy,
EventPattern,
MessagePattern,
RpcException,
Transport,
} from '@nestjs/microservices';
import { from, Observable, of } from 'rxjs';
import { scan } from 'rxjs/operators';
import { from, Observable, of, throwError } from 'rxjs';
import { catchError, scan } from 'rxjs/operators';
@Controller()
export class NatsController {
static IS_NOTIFIED = false;
@Client({
transport: Transport.NATS,
options: {
@@ -71,4 +75,26 @@ export class NatsController {
streaming(data: number[]): Observable<number> {
return from(data);
}
@Get('exception')
async getError() {
return await this.client
.send<number>('exception', {})
.pipe(catchError(err => of(err)));
}
@MessagePattern('exception')
throwError(): Observable<number> {
return throwError(new RpcException('test'));
}
@Post('notify')
async sendNotification(): Promise<any> {
return this.client.emit<number>('notification', true);
}
@EventPattern('notification')
eventHandler(data: boolean) {
NatsController.IS_NOTIFIED = data;
}
}

View File

@@ -1,15 +1,18 @@
import { Controller, Post, Body, Query, HttpCode } from '@nestjs/common';
import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import {
Client,
MessagePattern,
ClientProxy,
EventPattern,
MessagePattern,
Transport,
} from '@nestjs/microservices';
import { Observable, of, from } from 'rxjs';
import { from, Observable, of } from 'rxjs';
import { scan } from 'rxjs/operators';
@Controller()
export class RedisController {
static IS_NOTIFIED = false;
@Client({ transport: Transport.REDIS })
client: ClientProxy;
@@ -62,4 +65,14 @@ export class RedisController {
streaming(data: number[]): Observable<number> {
return from(data);
}
@Post('notify')
async sendNotification(): Promise<any> {
return this.client.emit<number>('notification', true);
}
@EventPattern('notification')
eventHandler(data: boolean) {
RedisController.IS_NOTIFIED = data;
}
}

View File

@@ -0,0 +1,37 @@
import { Controller, Get } from '@nestjs/common';
import {
ClientProxy,
ClientProxyFactory,
MessagePattern,
Transport,
} from '@nestjs/microservices';
import { Observable } from 'rxjs';
import { scan, take } from 'rxjs/operators';
@Controller()
export class RMQBroadcastController {
client: ClientProxy;
constructor() {
this.client = ClientProxyFactory.create({
transport: Transport.RMQ,
options: {
urls: [`amqp://localhost:5672`],
queue: 'test_broadcast',
queueOptions: { durable: false },
},
});
}
@Get('broadcast')
multicats() {
return this.client
.send<number>({ cmd: 'broadcast' }, {})
.pipe(scan((a, b) => a + b), take(2));
}
@MessagePattern({ cmd: 'broadcast' })
replyBroadcast(): Observable<number> {
return new Observable(observer => observer.next(1));
}
}

View File

@@ -0,0 +1,88 @@
import { Body, Controller, HttpCode, Post, Query } from '@nestjs/common';
import {
ClientProxy,
ClientProxyFactory,
EventPattern,
MessagePattern,
Transport,
} from '@nestjs/microservices';
import { from, Observable, of } from 'rxjs';
import { scan } from 'rxjs/operators';
@Controller()
export class RMQController {
static IS_NOTIFIED = false;
client: ClientProxy;
constructor() {
this.client = ClientProxyFactory.create({
transport: Transport.RMQ,
options: {
urls: [`amqp://localhost:5672`],
queue: 'test',
queueOptions: { durable: false },
},
});
}
@Post()
@HttpCode(200)
call(@Query('command') cmd, @Body() data: number[]) {
return this.client.send<number>({ cmd }, data);
}
@Post('stream')
@HttpCode(200)
stream(@Body() data: number[]): Observable<number> {
return this.client
.send<number>({ cmd: 'streaming' }, data)
.pipe(scan((a, b) => a + b));
}
@Post('concurrent')
@HttpCode(200)
concurrent(@Body() data: number[][]): Promise<boolean> {
const send = async (tab: number[]) => {
const expected = tab.reduce((a, b) => a + b);
const result = await this.client
.send<number>({ cmd: 'sum' }, tab)
.toPromise();
return result === expected;
};
return data
.map(async tab => await send(tab))
.reduce(async (a, b) => (await a) && (await b));
}
@MessagePattern({ cmd: 'sum' })
sum(data: number[]): number {
return (data || []).reduce((a, b) => a + b);
}
@MessagePattern({ cmd: 'asyncSum' })
async asyncSum(data: number[]): Promise<number> {
return (data || []).reduce((a, b) => a + b);
}
@MessagePattern({ cmd: 'streamSum' })
streamSum(data: number[]): Observable<number> {
return of((data || []).reduce((a, b) => a + b));
}
@MessagePattern({ cmd: 'streaming' })
streaming(data: number[]): Observable<number> {
return from(data);
}
@Post('notify')
async sendNotification(): Promise<any> {
return this.client.emit<number>('notification', true);
}
@EventPattern('notification')
eventHandler(data: boolean) {
RMQController.IS_NOTIFIED = data;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "^5.2.0",
"@nestjs/core": "^5.2.0",
"@nestjs/mongoose": "^5.2.0",
"mongoose": "^5.0.1",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typescript": "^2.8.0"
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/mongoose": "6.0.0",
"mongoose": "5.4.22",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/mongoose": "^4.7.23",
"@types/node": "^7.0.41",
"ts-node": "^6.0.0",
"tslint": "^5.9.1"
"@types/mongoose": "5.3.24",
"@types/node": "7.10.5",
"ts-node": "8.0.3",
"tslint": "5.15.0"
}
}

21
integration/scopes/.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
# dependencies
/node_modules
# IDE
/.idea
/.awcache
/.vscode
# misc
npm-debug.log
# example
/quick-start
# tests
/test
/coverage
/.nyc_output
# dist
/dist

View File

@@ -0,0 +1,71 @@
import { INestApplication, Scope } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as request from 'supertest';
import { HelloController } from '../src/circular-hello/hello.controller';
import { HelloModule } from '../src/circular-hello/hello.module';
import { HelloService } from '../src/circular-hello/hello.service';
import { UsersService } from '../src/circular-hello/users/users.service';
class Meta {
static COUNTER = 0;
constructor(private readonly helloService: HelloService) {
Meta.COUNTER++;
}
}
describe('Circular request scope', () => {
let server;
let app: INestApplication;
before(async () => {
const module = await Test.createTestingModule({
imports: [
HelloModule.forRoot({
provide: 'META',
useClass: Meta,
scope: Scope.REQUEST,
}),
],
}).compile();
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
describe('when one service is request scoped', () => {
before(async () => {
const performHttpCall = end =>
request(server)
.get('/hello')
.end((err, res) => {
if (err) return end(err);
end();
});
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
});
it(`should create controller for each request`, async () => {
expect(HelloController.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(UsersService.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(HelloService.COUNTER).to.be.eql(3);
});
it(`should create provider for each inquirer`, async () => {
expect(Meta.COUNTER).to.be.eql(3);
});
});
after(async () => {
await app.close();
});
});

View File

@@ -0,0 +1,71 @@
import { INestApplication, Scope } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as request from 'supertest';
import { HelloController } from '../src/circular-transient/hello.controller';
import { HelloModule } from '../src/circular-transient/hello.module';
import { HelloService } from '../src/circular-transient/hello.service';
import { UsersService } from '../src/circular-transient/users/users.service';
class Meta {
static COUNTER = 0;
constructor(private readonly helloService: HelloService) {
Meta.COUNTER++;
}
}
describe('Circular transient scope', () => {
let server;
let app: INestApplication;
before(async () => {
const module = await Test.createTestingModule({
imports: [
HelloModule.forRoot({
provide: 'META',
useClass: Meta,
scope: Scope.TRANSIENT,
}),
],
}).compile();
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
describe('when one service is request scoped', () => {
before(async () => {
const performHttpCall = end =>
request(server)
.get('/hello')
.end((err, res) => {
if (err) return end(err);
end();
});
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
});
it(`should create controller for each request`, async () => {
expect(HelloController.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(UsersService.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(HelloService.COUNTER).to.be.eql(3);
});
it(`should create provider for each inquirer`, async () => {
expect(Meta.COUNTER).to.be.eql(7);
});
});
after(async () => {
await app.close();
});
});

View File

@@ -0,0 +1,80 @@
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as request from 'supertest';
import { Guard } from '../src/hello/guards/request-scoped.guard';
import { HelloController } from '../src/hello/hello.controller';
import { HelloModule } from '../src/hello/hello.module';
import { Interceptor } from '../src/hello/interceptors/logging.interceptor';
import { UserByIdPipe } from '../src/hello/users/user-by-id.pipe';
import { UsersService } from '../src/hello/users/users.service';
class Meta {
static COUNTER = 0;
constructor() {
Meta.COUNTER++;
}
}
describe('Request scope', () => {
let server;
let app: INestApplication;
before(async () => {
const module = await Test.createTestingModule({
imports: [
HelloModule.forRoot({
provide: 'META',
useClass: Meta,
}),
],
}).compile();
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
describe('when one service is request scoped', () => {
before(async () => {
const performHttpCall = end =>
request(server)
.get('/hello')
.end((err, res) => {
if (err) return end(err);
end();
});
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
});
it(`should create controller for each request`, async () => {
expect(HelloController.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(UsersService.COUNTER).to.be.eql(3);
});
it(`should share static provider across requests`, async () => {
expect(Meta.COUNTER).to.be.eql(1);
});
it(`should create request scoped pipe for each request`, async () => {
expect(UserByIdPipe.COUNTER).to.be.eql(3);
});
it(`should create request scoped interceptor for each request`, async () => {
expect(Interceptor.COUNTER).to.be.eql(3);
});
it(`should create request scoped guard for each request`, async () => {
expect(Guard.COUNTER).to.be.eql(3);
});
});
after(async () => {
await app.close();
});
});

View File

@@ -0,0 +1,81 @@
import { INestApplication, Scope } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { expect } from 'chai';
import * as request from 'supertest';
import { Guard } from '../src/transient/guards/request-scoped.guard';
import { HelloController } from '../src/transient/hello.controller';
import { HelloModule } from '../src/transient/hello.module';
import { Interceptor } from '../src/transient/interceptors/logging.interceptor';
import { UserByIdPipe } from '../src/transient/users/user-by-id.pipe';
import { UsersService } from '../src/transient/users/users.service';
class Meta {
static COUNTER = 0;
constructor() {
Meta.COUNTER++;
}
}
describe('Transient scope', () => {
let server;
let app: INestApplication;
before(async () => {
const module = await Test.createTestingModule({
imports: [
HelloModule.forRoot({
provide: 'META',
useClass: Meta,
scope: Scope.TRANSIENT,
}),
],
}).compile();
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
describe('when one service is request scoped', () => {
before(async () => {
const performHttpCall = end =>
request(server)
.get('/hello')
.end((err, res) => {
if (err) return end(err);
end();
});
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
await new Promise(resolve => performHttpCall(resolve));
});
it(`should create controller for each request`, async () => {
expect(HelloController.COUNTER).to.be.eql(3);
});
it(`should create service for each request`, async () => {
expect(UsersService.COUNTER).to.be.eql(3);
});
it(`should create provider for each inquirer`, async () => {
expect(Meta.COUNTER).to.be.eql(7);
});
it(`should create transient pipe for each controller`, async () => {
expect(UserByIdPipe.COUNTER).to.be.eql(2);
});
it(`should create transient interceptor for each controller`, async () => {
expect(Interceptor.COUNTER).to.be.eql(2);
});
it(`should create transient guard for each controller`, async () => {
expect(Guard.COUNTER).to.be.eql(2);
});
});
after(async () => {
await app.close();
});
});

884
integration/scopes/package-lock.json generated Normal file
View File

@@ -0,0 +1,884 @@
{
"name": "nest-typescript-starter",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.0.5.tgz",
"integrity": "sha512-CbXtgBW/irevfUZF+rURDLFjhmT0Q6dmzbEYkuMg8bSjPmvgG6VzOBG6PwoPZbd+8PrPc2XLjN2A2Hg9mImp7A==",
"requires": {
"axios": "0.18.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.0.5.tgz",
"integrity": "sha512-diLLr9qb9vGKyvfkt8JFGox21rpgj4YiToCRb3Tbdab0bvssLopznh/f7cdEBNmk5Adtl3IvXjtdVRj+XH7VCw==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.0.5.tgz",
"integrity": "sha512-lUyxzYQ3E5U7aQaY4bKVnGxizTl2cE2Rrey0ylmeVE4ae9Y7/z/7mdsfB4DVnuMVuRpyClUJ+zrQ4tJAIvL/nQ==",
"requires": {
"iterare": "1.1.2",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.0.5.tgz",
"integrity": "sha512-LrPBckONn/ZalBC8GU5LxvgIS8DJNrdwZE4gMJz0ugodwl0c1IL3e2gIukBkUJtHYPtzN12nYevnaGYT/V1aDQ==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.0.5.tgz",
"integrity": "sha512-cA4Z6dM/Q8WqzgDyC6HiCdFvcDVAv7TyGkzthuuCn9xHDeLjtyzCL1koogkZ0FmLWhNmCskc/yJb2IjApGtzvQ==",
"requires": {
"iterare": "1.1.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
"node-fetch": "^2.3.0"
}
},
"@types/node": {
"version": "7.10.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz",
"integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==",
"dev": true
},
"abstract-logging": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz",
"integrity": "sha1-i33q/TEFWbwo93ck3RuzAXcnjBs="
},
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
"archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"avvio": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/avvio/-/avvio-6.2.1.tgz",
"integrity": "sha512-k+gTocL3yShwN1PtKEsSj7eFiApcZ4JZLAu/ecyzEb8jyx+Kmxb+7SXUsodB47g7fqhs/zkfsCdqq72a1ok5Ew==",
"requires": {
"archy": "^1.0.0",
"debug": "^4.0.0",
"fastq": "^1.6.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"class-transformer": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.0.tgz",
"integrity": "sha512-6N/5WkEmLZCKxyC2CAPYQIJt3pDZzDFag7AExpyWRm7CjaS/U62VDRU+Z2AUrQaNpnuiXRlli0so4PJUqGSVZQ=="
},
"class-validator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.9.1.tgz",
"integrity": "sha512-3wApflrd3ywVZyx4jaasGoFt8pmo4aGLPPAEKCKCsTRWVGPilahD88q3jQjRQwja50rl9a7rsP5LAxJYwGK8/Q==",
"requires": {
"google-libphonenumber": "^3.1.6",
"validator": "10.4.0"
}
},
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"consola": {
"version": "2.5.8",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.5.8.tgz",
"integrity": "sha512-fYv1M0rNJw4h0CZUx8PX02Px7xQhA+vNHpV8DBCGMoozp2Io/vrSXhhEothaRnSt7VMR0rj2pt9KKLXa5amrCw=="
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"deepmerge": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz",
"integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow=="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
"es5-ext": {
"version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
"integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "^1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"es6-weak-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es6-symbol": "^3.1.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"fast-decode-uri-component": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.14.0.tgz",
"integrity": "sha512-3VSblXsVxIE46E/YzRYHapyIeM3/igeA/kyzdL5xfAIYNnCLd8Oy+scrURnqZIRXMmtx0hfyp+okN5+r4W+GMQ==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
}
},
"fast-redact": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz",
"integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ=="
},
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.2.0.tgz",
"integrity": "sha512-U6W101N+8Hyz2uiN3XqdSdTiaWYiJ0lCJmC3tO42PNttjCZQp8EPIhZ0QkVQWLrrP0ijjgomwaYrj9eMzqWyDw==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.11.2",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"tiny-lru": "^6.0.1"
}
},
"fastq": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
"integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
"requires": {
"reusify": "^1.0.0"
}
},
"find-my-way": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-2.0.1.tgz",
"integrity": "sha512-c+YnWk4LKcWSNu743wfoqNOZTYQ6kZ/kzZCjALGblLpzbEAv3INakGMZ1K/by+Wmf/NP3+3LpOQMOFw6/q52wQ==",
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex2": "^2.0.0",
"semver-store": "^0.3.0"
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
"integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
"dev": true
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
"integrity": "sha512-ubjGeosYPeusjYbUHy76lCniGTTI0k1rIFc+uKBX+jHQLDmWOSUtlFUxaeoLJ+Y+PAMM6dWp+C1HjHx5BI8kEw=="
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-socket": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/json-socket/-/json-socket-0.3.0.tgz",
"integrity": "sha512-jc8ZbUnYIWdxERFWQKVgwSLkGSe+kyzvmYxwNaRgx/c8NNyuHes4UHnPM3LUrAFXUx1BhNJ94n1h/KCRlbvV0g=="
},
"light-my-request": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.3.0.tgz",
"integrity": "sha512-dLtwhjzbuHJ+KMMUBSlVid6Iqxx+KKvULWLnBD06WMgPHxiPkEh1cVyj+Xc8HGU64hULlSw/sZVCdFsvjNQeNA==",
"requires": {
"ajv": "^6.8.1",
"readable-stream": "^3.1.1"
}
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"make-error": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"middie": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/middie/-/middie-4.0.1.tgz",
"integrity": "sha512-eYK6EEHZiYpQMYPmeCb/vC9ZzJg1HCqi1ot/fQs1sPZKt/XREgXouQ7g6c9J5XvDV5203JjbpovCYNkHcHgTpQ==",
"requires": {
"path-to-regexp": "^3.0.0",
"reusify": "^1.0.2"
}
},
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"mime-db": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
"dev": true
},
"mime-types": {
"version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": {
"mime-db": "~1.36.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"path-to-regexp": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.0.0.tgz",
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
"flatstr": "^1.0.9",
"pino-std-serializers": "^2.3.0",
"quick-format-unescaped": "^3.0.2",
"sonic-boom": "^0.7.3"
}
},
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
"integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.8.0"
}
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"quick-format-unescaped": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.2.tgz",
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"ret": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
"integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ=="
},
"reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-regex2": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz",
"integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==",
"requires": {
"ret": "~0.2.0"
}
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"requires": {
"flatstr": "^1.0.9"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"string_decoder": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
"integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"dev": true,
"requires": {
"component-emitter": "^1.2.0",
"cookiejar": "^2.1.0",
"debug": "^3.1.0",
"extend": "^3.0.0",
"form-data": "^2.3.1",
"formidable": "^1.2.0",
"methods": "^1.1.1",
"mime": "^1.4.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.5"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"supertest": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
"integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
"dev": true,
"requires": {
"methods": "^1.1.2",
"superagent": "^3.8.3"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"tiny-lru": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-6.0.1.tgz",
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz",
"integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"typescript": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A=="
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
"integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
"dev": true
}
}
}

View File

@@ -0,0 +1,27 @@
{
"name": "nest-typescript-starter",
"version": "1.0.0",
"description": "Nest TypeScript starter repository",
"license": "MIT",
"scripts": {
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.0.5",
"@nestjs/core": "6.0.5",
"@nestjs/microservices": "6.0.5",
"@nestjs/testing": "6.0.5",
"@nestjs/websockets": "6.0.5",
"class-transformer": "0.2.0",
"class-validator": "0.9.1",
"fastify": "2.2.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.4.0",
"typescript": "3.4.2"
},
"devDependencies": {
"@types/node": "7.10.5",
"supertest": "4.0.2",
"ts-node": "8.0.3"
}
}

View File

@@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { HelloModule } from './hello/hello.module';
@Module({
imports: [HelloModule.forRoot({ provide: 'META', useValue: true })],
})
export class ApplicationModule {}

View File

@@ -0,0 +1,10 @@
import { IsString, IsNotEmpty, IsNumber } from 'class-validator';
export class TestDto {
@IsString()
@IsNotEmpty()
string: string;
@IsNumber()
number: number;
}

View File

@@ -0,0 +1,21 @@
import {
CanActivate,
ExecutionContext,
Injectable,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Guard implements CanActivate {
static COUNTER = 0;
constructor() {
Guard.COUNTER++;
}
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}

View File

@@ -0,0 +1,30 @@
import {
Controller,
Get,
Param,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { Guard } from './guards/request-scoped.guard';
import { HelloService } from './hello.service';
import { Interceptor } from './interceptors/logging.interceptor';
import { UserByIdPipe } from './users/user-by-id.pipe';
import { UsersService } from './users/users.service';
@Controller('hello')
export class HelloController {
static COUNTER = 0;
constructor(
private readonly helloService: HelloService,
private readonly usersService: UsersService,
) {
HelloController.COUNTER++;
}
@UseGuards(Guard)
@UseInterceptors(Interceptor)
@Get()
greeting(@Param('id', UserByIdPipe) id): string {
return this.helloService.greeting();
}
}

View File

@@ -0,0 +1,19 @@
import { DynamicModule, Inject, Module, Provider } from '@nestjs/common';
import { HelloController } from './hello.controller';
import { HelloService } from './hello.service';
import { UsersService } from './users/users.service';
@Module({
controllers: [HelloController],
providers: [HelloService, UsersService],
})
export class HelloModule {
constructor(@Inject('META') private readonly meta) {}
static forRoot(meta: Provider): DynamicModule {
return {
module: HelloModule,
providers: [meta],
};
}
}

View File

@@ -0,0 +1,13 @@
import { Inject, Injectable, Scope } from '@nestjs/common';
@Injectable({ scope: Scope.REQUEST })
export class HelloService {
static COUNTER = 0;
constructor(@Inject('META') private readonly meta) {
HelloService.COUNTER++;
}
greeting(): string {
return 'Hello world!';
}
}

View File

@@ -0,0 +1,19 @@
import {
CallHandler,
ExecutionContext,
Injectable,
NestInterceptor,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Interceptor implements NestInterceptor {
static COUNTER = 0;
constructor() {
Interceptor.COUNTER++;
}
intercept(context: ExecutionContext, call: CallHandler): Observable<any> {
return call.handle();
}
}

View File

@@ -0,0 +1,14 @@
import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';
import { UsersService } from './users.service';
@Injectable()
export class UserByIdPipe implements PipeTransform<string> {
static COUNTER = 0;
constructor(private readonly usersService: UsersService) {
UserByIdPipe.COUNTER++;
}
transform(value: string, metadata: ArgumentMetadata) {
return this.usersService.findById(value);
}
}

View File

@@ -0,0 +1,13 @@
import { Inject, Injectable, Scope } from '@nestjs/common';
@Injectable({ scope: Scope.REQUEST })
export class UsersService {
static COUNTER = 0;
constructor(@Inject('META') private readonly meta) {
UsersService.COUNTER++;
}
findById(id: string) {
return { id };
}
}

View File

@@ -0,0 +1,10 @@
import { IsString, IsNotEmpty, IsNumber } from 'class-validator';
export class TestDto {
@IsString()
@IsNotEmpty()
string: string;
@IsNumber()
number: number;
}

View File

@@ -0,0 +1,21 @@
import {
CanActivate,
ExecutionContext,
Injectable,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.TRANSIENT })
export class Guard implements CanActivate {
static COUNTER = 0;
constructor() {
Guard.COUNTER++;
}
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}

View File

@@ -0,0 +1,30 @@
import {
Controller,
Get,
Param,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { Guard } from './guards/request-scoped.guard';
import { HelloService } from './hello.service';
import { Interceptor } from './interceptors/logging.interceptor';
import { UserByIdPipe } from './users/user-by-id.pipe';
import { UsersService } from './users/users.service';
@Controller('hello')
export class HelloController {
static COUNTER = 0;
constructor(
private readonly helloService: HelloService,
private readonly usersService: UsersService,
) {
HelloController.COUNTER++;
}
@UseGuards(Guard)
@UseInterceptors(Interceptor)
@Get()
greeting(@Param('id', UserByIdPipe) id): string {
return this.helloService.greeting();
}
}

View File

@@ -0,0 +1,20 @@
import { DynamicModule, Inject, Module, Provider } from '@nestjs/common';
import { HelloController } from './hello.controller';
import { HelloService } from './hello.service';
import { TestController } from './test.controller';
import { UsersService } from './users/users.service';
@Module({
controllers: [HelloController, TestController],
providers: [HelloService, UsersService],
})
export class HelloModule {
constructor(@Inject('META') private readonly meta) {}
static forRoot(meta: Provider): DynamicModule {
return {
module: HelloModule,
providers: [meta],
};
}
}

View File

@@ -0,0 +1,13 @@
import { Inject, Injectable, Scope } from '@nestjs/common';
@Injectable({ scope: Scope.REQUEST })
export class HelloService {
static COUNTER = 0;
constructor(@Inject('META') private readonly meta) {
HelloService.COUNTER++;
}
greeting(): string {
return 'Hello world!';
}
}

View File

@@ -0,0 +1,19 @@
import {
CallHandler,
ExecutionContext,
Injectable,
NestInterceptor,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.TRANSIENT })
export class Interceptor implements NestInterceptor {
static COUNTER = 0;
constructor() {
Interceptor.COUNTER++;
}
intercept(context: ExecutionContext, call: CallHandler): Observable<any> {
return call.handle();
}
}

View File

@@ -0,0 +1,20 @@
import {
Controller,
Get,
Param,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { Guard } from './guards/request-scoped.guard';
import { Interceptor } from './interceptors/logging.interceptor';
import { UserByIdPipe } from './users/user-by-id.pipe';
@Controller('test')
export class TestController {
@UseGuards(Guard)
@UseInterceptors(Interceptor)
@Get()
greeting(@Param('id', UserByIdPipe) id): string {
return 'hey';
}
}

View File

@@ -0,0 +1,18 @@
import {
ArgumentMetadata,
Injectable,
PipeTransform,
Scope,
} from '@nestjs/common';
@Injectable({ scope: Scope.TRANSIENT })
export class UserByIdPipe implements PipeTransform<string> {
static COUNTER = 0;
constructor() {
UserByIdPipe.COUNTER++;
}
transform(value: string, metadata: ArgumentMetadata) {
return value;
}
}

View File

@@ -0,0 +1,13 @@
import { Inject, Injectable, Scope } from '@nestjs/common';
@Injectable({ scope: Scope.REQUEST })
export class UsersService {
static COUNTER = 0;
constructor(@Inject('META') private readonly meta) {
UsersService.COUNTER++;
}
findById(id: string) {
return { id };
}
}

View File

@@ -0,0 +1,10 @@
import { IsString, IsNotEmpty, IsNumber } from 'class-validator';
export class TestDto {
@IsString()
@IsNotEmpty()
string: string;
@IsNumber()
number: number;
}

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